sql >> Database >  >> RDS >> SQLite

Bestaande gegevens bijwerken met SQLite


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.




  1. Evenementen en discussies in .NET

  2. ORA-00903:ongeldige tabelnaam op PreparedStatement

  3. Verdoezel gevoelige gegevens in uw uitvoeringsplannen

  4. Hoe PostgreSQL in een Docker-container te controleren:deel twee