sql >> Databasteknik >  >> RDS >> SQLite

Hur man uppdaterar befintliga data med SQLite


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.




  1. hur infogar man datum och tid i Oracle?

  2. Distribuera PostgreSQL på en Docker Container

  3. Använd Räkna för att hitta antalet förekomster

  4. Hur ställer jag in ORDER BY-parametrar med en förberedd PDO-sats?