Úvod
Jakmile část dat vstoupí do databáze, je velmi nepravděpodobné, že zůstane statická po celou dobu strávenou v tabulce. Data jsou aktualizována, aby odrážela změny v systémech, které představují, aby zůstala relevantní a aktuální. SQLite umožňuje měnit hodnoty v záznamech pomocí UPDATE SQL příkaz.
UPDATE funkce podobné INSERT (tím, že určíte sloupce a jejich požadované hodnoty) a DELETE (tím, že zadáte kritéria potřebná pro cílení na konkrétní záznamy). Můžete také upravovat data jednotlivě nebo hromadně. V tomto článku se ponoříme do toho, jak používat UPDATE efektivně spravovat vaše data, která jsou již uložena v tabulkách.
Pomocí UPDATE upravit data
Základní syntaxe UPDATE příkaz vypadá asi takto:
UPDATE my_tableSET column1 = value1, column2 = value2,WHERE id = 1;
Základní struktura zahrnuje tři samostatné klauzule:
- určení tabulky, se kterou se má jednat
- zadáním sloupců, které chcete aktualizovat, a jejich nových hodnot
- definování jakýchkoli kritérií, která musí SQLite vyhodnotit, aby určila, které záznamy mají odpovídat
I když můžete přiřadit hodnoty přímo sloupcům, jako jsme to udělali výše, můžete také použít syntaxi seznamu sloupců, jak je často vidět v INSERT příkazy.
Výše uvedený příklad můžeme například upravit tak, aby vypadal následovně:
UPDATE my_tableSET (column1, column2) = (value1, value2)WHERE id = 1;
Vracení záznamů upravených UPDATE příkaz
Ve výchozím nastavení SQLite neukazuje počet řádků ovlivněných UPDATE prohlášení. SQLite však přidal RETURNING klauzule po vzoru PostgreSQL ve verzi 3.35.0 . Tato klauzule způsobí, že příkazy vrátí všechny nebo část záznamů, které byly změněny.
Můžete použít hvězdičku * symbol vrátí všechny sloupce upravených řádků podobně jako SELECT prohlášení:
UPDATE my_tableSET column1 = value1, column2 = value2,WHERE id = 1RETURNING *;
Kromě toho můžete pomocí AS určit přesné sloupce, které chcete zobrazovat s aliasem nebo bez něj. :
UPDATE my_tableSET column1 = value1, column2 = value2WHERE id = 1RETURNING column1 AS 'first column';
Aktualizace záznamů na základě hodnot v jiné tabulce
Aktualizace dat na základě nových externích dat je relativně zjednodušený proces. Stačí zadat tabulku, sloupce, nové hodnoty a kritéria cílení.
S SQLite však můžete také použít UPDATE podmíněně aktualizovat hodnoty tabulky na základě informací v jiné tabulce v databázi. Základní syntaxe bude vypadat nějak takto:
UPDATE table1SET table1.column1 =( SELECT table2.column1 FROM table2 WHERE table1.column2 = table2.column2);
Zde přímo aktualizujeme hodnotu column1 v table1 být návratem SELECT dílčí dotaz na table2 , ale pouze v řádcích, kde je column2 z table1 odpovídá column2 z table2 . FROM klauzule označuje spojení mezi dvěma tabulkami a WHERE specifikuje podmínky.
Jako příklad předpokládejme, že máme dvě tabulky nazvané book a 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');
Tyto dvě tabulky mají vztah s book.author_id odkazující na author.id . Aktuálně last_publication pro author tabulka je NULL . Můžeme jej naplnit autorovou nejnovější vydanou knihou v naší book pomocí FROM a WHERE klauzule ke spojení dvou tabulek.
Zde uvádíme příklad aktualizace last_publication :
UPDATE author SET last_publication=( SELECT title FROM book WHERE author_id = author.id ORDER BY author_id, publication_year DESC);
Pokud se zeptáte author nyní vám ukáže název jejich nejnovější publikace v databázi:
SELECT * FROM author;
+------------+------------+-----------+--------------------------+ id first_name last_name last_publication +-------------+------------+-----------+--------------------------+ 1 Leo Tolstoy Anna Karenina 2 James Joyce Ulysses 3 Jean-Paul Sarte Nausea +-------------+------------+-----------+--------------------------+
Závěr
V této příručce jsme se podívali na základní způsoby, jak můžete upravit existující data v tabulce pomocí UPDATE příkaz. Provedení těchto základních konceptů vám umožňuje určit přesná kritéria nezbytná k identifikaci existujících řádků v tabulce, aktualizovat názvy sloupců hodnotami a volitelně vrátit řádky, které byly ovlivněny pomocí RETURNING . UPDATE Příkaz je rozhodující pro správu vašich dat po počátečním vložení do vašich databází.