Wprowadzenie
Gdy część danych trafi do bazy danych, jest bardzo mało prawdopodobne, że pozostanie statyczna przez cały czas spędzony w tabeli. Dane są aktualizowane w celu odzwierciedlenia zmian w systemach, które reprezentują, aby pozostały istotne i aktualne. SQLite umożliwia zmianę wartości w rekordach za pomocą UPDATE
polecenie SQL.
UPDATE
funkcje podobne do INSERT
(w tym, że określasz kolumny i ich żądane wartości) i DELETE
(w tym, że podajesz kryteria potrzebne do kierowania określonych rekordów). Możesz także modyfikować dane pojedynczo lub zbiorczo. W tym artykule dowiemy się, jak używać UPDATE
skutecznie zarządzać danymi, które są już przechowywane w tabelach.
Korzystanie z UPDATE
modyfikować dane
Podstawowa składnia UPDATE
polecenie wygląda mniej więcej tak:
UPDATE my_tableSET column1 = value1, column2 = value2,WHERE id = 1;
Podstawowa struktura obejmuje trzy oddzielne klauzule:
- określanie tabeli do działania
- podając kolumny, które chcesz zaktualizować, a także ich nowe wartości
- definiowanie jakichkolwiek kryteriów, które SQLite musi ocenić, aby określić, które rekordy mają pasować
Chociaż możesz przypisać wartości bezpośrednio do kolumn, tak jak to zrobiliśmy powyżej, możesz również użyć składni listy kolumn, jak często widać w INSERT
poleceń.
Na przykład możemy zmienić powyższy przykład, aby wyglądał następująco:
UPDATE my_tableSET (column1, column2) = (value1, value2)WHERE id = 1;
Zwracanie rekordów zmodyfikowanych przez UPDATE
polecenie
Domyślnie SQLite nie pokazuje liczby wierszy, na które ma wpływ UPDATE
oświadczenie. Jednak SQLite dodał RETURNING
klauzula wzorowana na PostgreSQL w wersji 3.35.0
. Ta klauzula powoduje, że polecenia zwracają wszystkie lub część rekordów, które zostały zmodyfikowane.
Możesz użyć gwiazdki *
symbol, aby zwrócić wszystkie kolumny zmodyfikowanych wierszy, podobnie jak SELECT
oświadczenie:
UPDATE my_tableSET column1 = value1, column2 = value2,WHERE id = 1RETURNING *;
Dodatkowo możesz również określić dokładne kolumny, które chcesz wyświetlić z/bez aliasu, używając AS
:
UPDATE my_tableSET column1 = value1, column2 = value2WHERE id = 1RETURNING column1 AS 'first column';
Aktualizowanie rekordów na podstawie wartości w innej tabeli
Aktualizowanie danych na podstawie nowych danych zewnętrznych to stosunkowo uproszczony proces. Wystarczy podać tabelę, kolumny, nowe wartości i kryteria kierowania.
Jednak z SQLite możesz również użyć UPDATE
do warunkowego aktualizowania wartości tabeli na podstawie informacji z innej tabeli w bazie danych. Podstawowa składnia będzie wyglądać mniej więcej tak:
UPDATE table1SET table1.column1 =( SELECT table2.column1 FROM table2 WHERE table1.column2 = table2.column2);
Tutaj bezpośrednio aktualizujemy wartość column1
w table1
być zwrotem SELECT
podzapytanie w table2
, ale tylko w wierszach, w których column2
z table1
pasuje do column2
z table2
. FROM
klauzula wskazuje połączenie między dwiema tabelami i WHERE
określa warunki.
Jako przykład załóżmy, że mamy dwie tabele o nazwie book
i 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');
Te dwie tabele mają związek z book.author_id
odwoływanie się do author.id
. Obecnie last_publication
dla author
tabela jest NULL
. Możemy wypełnić ją najnowszą opublikowaną książką autora w naszej book
tabela przy użyciu FROM
i WHERE
klauzule, które łączą te dwa stoły.
Tutaj pokazujemy przykład aktualizacji last_publication
:
UPDATE author SET last_publication=( SELECT title FROM book WHERE author_id = author.id ORDER BY author_id, publication_year DESC);
Jeśli zapytasz author
tabeli teraz pokaże tytuł ich ostatniej publikacji w bazie danych:
SELECT * FROM author;
+------------+------------+-----------+--------------------------+ id first_name last_name last_publication +-------------+------------+-----------+--------------------------+ 1 Leo Tolstoy Anna Karenina 2 James Joyce Ulysses 3 Jean-Paul Sarte Nausea +-------------+------------+-----------+--------------------------+
Wniosek
W tym przewodniku przyjrzeliśmy się podstawowym sposobom modyfikowania istniejących danych w tabeli za pomocą UPDATE
Komenda. Wykonanie tych podstawowych koncepcji pozwala określić dokładne kryteria niezbędne do zidentyfikowania istniejących wierszy w tabeli, zaktualizować nazwy kolumn wartościami i opcjonalnie zwrócić wiersze, na które miało wpływ RETURNING
. UPDATE
polecenie ma kluczowe znaczenie dla zarządzania danymi po początkowym wstawieniu do baz danych.