Ú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í.