Introduktion
När en databit väl kommer in i en databas är det mycket osannolikt att den förblir statisk under hela sin tid i en tabell. Data uppdateras för att återspegla förändringar i system de representerar för att förbli relevanta och uppdaterade. SQLite låter dig ändra värdena i poster med UPDATE SQL-kommando.
UPDATE funktioner liknande INSERT (genom att du anger kolumner och deras önskade värden) och DELETE (genom att du anger de kriterier som behövs för att rikta in sig på specifika poster). Du kan också ändra data antingen en efter en eller i bulk. I den här artikeln kommer vi att dyka in i hur du använder UPDATE effektivt för att hantera dina data som redan är lagrade i tabeller.
Använda UPDATE för att ändra data
Den grundläggande syntaxen för UPDATE kommandot ser ut ungefär så här:
UPDATE my_tableSET column1 = value1, column2 = value2,WHERE id = 1;
Den grundläggande strukturen innefattar tre separata klausuler:
- ange en tabell att agera på
- tillhandahåller de kolumner du vill uppdatera samt deras nya värden
- definiera alla kriterier som SQLite behöver utvärdera för att avgöra vilka poster som ska matcha
Även om du kan tilldela värden direkt till kolumner som vi gjorde ovan, kan du också använda kolumnlistans syntax, vilket ofta ses i INSERT kommandon.
Vi kan till exempel ändra exemplet ovan så att det ser ut som följer:
UPDATE my_tableSET (column1, column2) = (value1, value2)WHERE id = 1;
Returnera poster modifierade av UPDATE kommando
Som standard visar SQLite inte antalet rader som påverkas av en UPDATE påstående. Däremot lade SQLite till RETURNING klausul modellerad efter PostgreSQL i version 3.35.0 . Denna sats gör att kommandona returnerar alla eller delar av posterna som ändrades.
Du kan använda asterisken * symbol för att returnera alla kolumner i de modifierade raderna ungefär som en SELECT uttalande:
UPDATE my_tableSET column1 = value1, column2 = value2,WHERE id = 1RETURNING *;
Dessutom kan du också ange exakta kolumner som du vill visa med/utan ett alias med AS :
UPDATE my_tableSET column1 = value1, column2 = value2WHERE id = 1RETURNING column1 AS 'first column';
Uppdatering av poster baserat på värden i en annan tabell
Att uppdatera data baserat på ny extern data är en relativt strömlinjeformad process. Du behöver bara ange tabellen, kolumnerna, nya värden och inriktningskriterierna.
Men med SQLite kan du också använda UPDATE att villkorligt uppdatera tabellvärden baserat på information i en annan tabell i din databas. Den grundläggande syntaxen kommer att se ut ungefär så här:
UPDATE table1SET table1.column1 =( SELECT table2.column1 FROM table2 WHERE table1.column2 = table2.column2);
Här uppdaterar vi direkt värdet för column1 i table1 att vara returen av en SELECT underfråga på table2 , men bara i rader där column2 av table1 matchar column2 av table2 . FROM sats indikerar en koppling mellan de två tabellerna och WHERE specificerar villkoren.
Som ett exempel, låt oss anta att vi har två tabeller som heter book och author .
CREATE TABLE author ( id INTEGER PRIMARY KEY, first_name TEXT, last_name TEXT, last_publication TEXT);CREATE TABLE book ( id INTEGER PRIMARY KEY, author_id INT REFERENCES author.id title TEXT, publication_year INTEGER);INSERT INTO author (first_name, last_name)VALUES ('Leo', 'Tolstoy'), ('James', 'Joyce'), ('Jean-Paul', 'Sarte'); INSERT INTO book (author_id, title, publication_year)VALUES (1, 'Anna Karenina', '1877'), (1, 'War and Peace', '1867'), (2, 'Ulysses', '1920'), (2, 'Dubliners', '1914'), (3, 'Nausea', '1938');
Dessa två tabeller har en relation med book.author_id hänvisar till author.id . För närvarande last_publication för author tabellen är NULL . Vi kan fylla den med författarens senast publicerade bok i vår book tabell med FROM och WHERE klausuler för att sammanföra de två tabellerna.
Här visar vi ett exempel på uppdatering av last_publication :
UPDATE author SET last_publication=( SELECT title FROM book WHERE author_id = author.id ORDER BY author_id, publication_year DESC);
Om du frågar author tabell nu, kommer den att visa dig titeln på deras senaste publikation i databasen:
SELECT * FROM author;
+------------+------------+-----------+--------------------------+ id first_name last_name last_publication +-------------+------------+-----------+--------------------------+ 1 Leo Tolstoy Anna Karenina 2 James Joyce Ulysses 3 Jean-Paul Sarte Nausea +-------------+------------+-----------+--------------------------+
Slutsats
I den här guiden tittade vi på de grundläggande sätten att ändra befintliga data i en tabell med hjälp av UPDATE kommando. Genom att utföra dessa grundläggande koncept kan du specificera de exakta kriterier som krävs för att identifiera de befintliga raderna i en tabell, uppdatera kolumnnamn med värden och eventuellt returnera raderna som påverkades av RETURNING . UPDATE kommandot är avgörande för att hantera dina data efter den första infogningen i dina databaser.