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.