SQLite
 sql >> Database >  >> RDS >> SQLite

Come aggiornare i dati esistenti con SQLite


Introduzione

Una volta che un dato entra in un database, è molto improbabile che rimanga statico per tutto il tempo trascorso in una tabella. I dati vengono aggiornati per riflettere i cambiamenti nei sistemi che rappresentano per rimanere pertinenti e aggiornati. SQLite ti consente di modificare i valori nei record utilizzando UPDATE Comando SQL.

UPDATE funzioni simili a INSERT (in quanto specifichi le colonne ei loro valori desiderati) e DELETE (in quanto fornisci i criteri necessari per indirizzare record specifici). Puoi anche modificare i dati uno per uno o in blocco. In questo articolo, analizzeremo come utilizzare UPDATE in modo efficace per gestire i tuoi dati che sono già archiviati nelle tabelle.



Utilizzo di UPDATE per modificare i dati

La sintassi di base di UPDATE il comando è simile a questo:

UPDATE my_tableSET        column1 = value1,        column2 = value2,WHERE        id = 1;

La struttura di base prevede tre clausole separate:

  • specificando un tavolo su cui agire
  • fornendo le colonne che desideri aggiornare e i loro nuovi valori
  • definizione di eventuali criteri che SQLite deve valutare per determinare quali record abbinare

Mentre puoi assegnare valori direttamente alle colonne come abbiamo fatto sopra, puoi anche usare la sintassi dell'elenco di colonne, come spesso si vede in INSERT comandi.

Ad esempio, possiamo modificare l'esempio sopra in modo che appaia come segue:

UPDATE my_tableSET (column1, column2) =        (value1, value2)WHERE        id = 1;


Restituzione di record modificati da UPDATE comando

Per impostazione predefinita, SQLite non mostra il numero di righe interessate da un UPDATE dichiarazione. Tuttavia, SQLite ha aggiunto il RETURNING clausola modellata su PostgreSQL nella versione 3.35.0 . Questa clausola fa sì che i comandi restituiscano tutti o parte dei record che sono stati modificati.

Puoi usare l'asterisco * simbolo per restituire tutte le colonne delle righe modificate in modo molto simile a un SELECT dichiarazione:

UPDATE my_tableSET        column1 = value1,        column2 = value2,WHERE        id = 1RETURNING *;

Inoltre, puoi anche specificare le colonne esatte che ti interessa visualizzare con/senza alias utilizzando AS :

UPDATE my_tableSET        column1 = value1,        column2 = value2WHERE        id = 1RETURNING column1 AS 'first column';


Aggiornamento dei record in base ai valori in un'altra tabella

L'aggiornamento dei dati in base a nuovi dati esterni è un processo relativamente snello. Devi solo fornire la tabella, le colonne, i nuovi valori e i criteri di targeting.

Tuttavia, con SQLite puoi anche usare UPDATE per aggiornare condizionalmente i valori della tabella in base alle informazioni in un'altra tabella all'interno del database. La sintassi di base sarà simile a questa:

UPDATE table1SET table1.column1 =(    SELECT table2.column1    FROM table2    WHERE table1.column2 = table2.column2);

Qui stiamo aggiornando direttamente il valore di column1 in table1 essere il ritorno di un SELECT sottoquery su table2 , ma solo nelle righe in cui column2 di table1 corrisponde a column2 di table2 . Il FROM la clausola indica una connessione tra le due tabelle e WHERE specifica le condizioni.

Ad esempio, supponiamo di avere due tabelle chiamate book e 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');

Queste due tabelle hanno una relazione con book.author_id facendo riferimento a author.id . Attualmente l'last_publication per l'author la tabella è NULL . Possiamo popolarlo con l'ultimo libro pubblicato dall'autore nel nostro book tabella usando FROM e WHERE clausole per unire le due tabelle.

Qui mostriamo un esempio di aggiornamento di last_publication :

UPDATE author SET last_publication=(  SELECT title   FROM book   WHERE author_id = author.id  ORDER BY author_id, publication_year DESC);

Se interroghi l'author tabella ora, ti mostrerà il titolo della loro pubblicazione più recente nel database:

SELECT * FROM author;
+------------+------------+-----------+--------------------------+      id       first_name  last_name      last_publication     +-------------+------------+-----------+--------------------------+       1       Leo          Tolstoy        Anna Karenina              2       James         Joyce             Ulysses                3       Jean-Paul     Sarte             Nausea          +-------------+------------+-----------+--------------------------+


Conclusione

In questa guida, abbiamo esaminato i modi di base per modificare i dati esistenti all'interno di una tabella utilizzando UPDATE comando. L'esecuzione di questi concetti di base consente di specificare i criteri esatti necessari per identificare le righe esistenti all'interno di una tabella, aggiornare i nomi delle colonne con valori e, facoltativamente, restituire le righe che sono state interessate da RETURNING . Il UPDATE comando è fondamentale per la gestione dei dati dopo l'inserimento iniziale nei database.