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.