Inleiding
Als een gegeven eenmaal een database binnenkomt, is het zeer onwaarschijnlijk dat het statisch blijft gedurende de tijd dat het in een tabel wordt doorgebracht. Gegevens worden bijgewerkt om wijzigingen in systemen weer te geven die ze vertegenwoordigen om relevant en up-to-date te blijven. Met SQLite kunt u de waarden in records wijzigen met behulp van de UPDATE
SQL-opdracht.
UPDATE
functies vergelijkbaar met INSERT
(in dat je kolommen en hun gewenste waarden specificeert) en DELETE
(in die zin dat u de criteria opgeeft die nodig zijn om specifieke records te targeten). U kunt gegevens ook één voor één of in bulk wijzigen. In dit artikel gaan we dieper in op het gebruik van UPDATE
effectief om uw gegevens te beheren die al in tabellen zijn opgeslagen.
UPDATE
gebruiken om gegevens te wijzigen
De basissyntaxis van de UPDATE
commando ziet er ongeveer zo uit:
UPDATE my_tableSET column1 = value1, column2 = value2,WHERE id = 1;
De basisstructuur omvat drie afzonderlijke clausules:
- een tafel specificeren om op te reageren
- met de kolommen die u wilt bijwerken, evenals hun nieuwe waarden
- definiëren van alle criteria die SQLite moet evalueren om te bepalen welke records overeenkomen
Hoewel u waarden rechtstreeks aan kolommen kunt toewijzen zoals we hierboven deden, kunt u ook de syntaxis van de kolomlijst gebruiken, zoals vaak wordt gezien in INSERT
commando's.
We kunnen het bovenstaande voorbeeld bijvoorbeeld veranderen om er als volgt uit te zien:
UPDATE my_tableSET (column1, column2) = (value1, value2)WHERE id = 1;
Returning records gewijzigd door de UPDATE
commando
Standaard toont SQLite niet het aantal rijen dat wordt beïnvloed door een UPDATE
uitspraak. SQLite heeft echter de RETURNING
. toegevoegd clausule gemodelleerd naar PostgreSQL in versie 3.35.0
. Deze clausule zorgt ervoor dat de opdrachten alle of een deel van de records retourneren die zijn gewijzigd.
U kunt de asterisk *
. gebruiken symbool om alle kolommen van de gewijzigde rijen terug te geven, net als een SELECT
verklaring:
UPDATE my_tableSET column1 = value1, column2 = value2,WHERE id = 1RETURNING *;
Daarnaast kun je met AS
ook exacte kolommen specificeren die je graag wilt weergeven met/zonder een alias. :
UPDATE my_tableSET column1 = value1, column2 = value2WHERE id = 1RETURNING column1 AS 'first column';
Records bijwerken op basis van waarden in een andere tabel
Het bijwerken van gegevens op basis van nieuwe externe gegevens is een relatief gestroomlijnd proces. U hoeft alleen de tabel, kolommen, nieuwe waarden en de targetingcriteria op te geven.
Met SQLite kunt u echter ook UPDATE
. gebruiken om tabelwaarden voorwaardelijk bij te werken op basis van informatie in een andere tabel in uw database. De basissyntaxis ziet er ongeveer zo uit:
UPDATE table1SET table1.column1 =( SELECT table2.column1 FROM table2 WHERE table1.column2 = table2.column2);
Hier werken we rechtstreeks de waarde van column1
bij in table1
om de terugkeer te zijn van een SELECT
subquery op table2
, maar alleen in rijen waar column2
van table1
komt overeen met column2
van table2
. De FROM
clausule geeft een verband aan tussen de twee tabellen en WHERE
specificeert de voorwaarden.
Laten we als voorbeeld aannemen dat we twee tabellen hebben met de naam book
en 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');
Deze twee tabellen hebben een relatie met book.author_id
verwijzend naar author.id
. Momenteel is de last_publication
voor de author
tabel is NULL
. We kunnen het vullen met het laatst gepubliceerde boek van de auteur in ons book
tabel met behulp van FROM
en WHERE
clausules om de twee tabellen samen te brengen.
Hier laten we een voorbeeld zien van het bijwerken van last_publication
:
UPDATE author SET last_publication=( SELECT title FROM book WHERE author_id = author.id ORDER BY author_id, publication_year DESC);
Als u de author
. opvraagt tabel nu, zal het u de titel van hun meest recente publicatie in de database tonen:
SELECT * FROM author;
+------------+------------+-----------+--------------------------+ id first_name last_name last_publication +-------------+------------+-----------+--------------------------+ 1 Leo Tolstoy Anna Karenina 2 James Joyce Ulysses 3 Jean-Paul Sarte Nausea +-------------+------------+-----------+--------------------------+
Conclusie
In deze handleiding hebben we gekeken naar de basismanieren waarop u bestaande gegevens in een tabel kunt wijzigen met behulp van de UPDATE
opdracht. Door deze basisconcepten uit te voeren, kunt u de exacte criteria specificeren die nodig zijn om de bestaande rijen in een tabel te identificeren, kolomnamen bijwerken met waarden en optioneel de rijen retourneren die werden beïnvloed door RETURNING
. De UPDATE
commando is van cruciaal belang voor het beheren van uw gegevens na de eerste invoeging in uw databases.