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.