Въведение
След като част от данни влезе в база данни, е много малко вероятно тя да остане статична през цялото време, прекарано в таблица. Данните се актуализират, за да отразяват промените в системите, които представляват, за да останат актуални и актуални. SQLite ви позволява да променяте стойностите в записи с помощта на UPDATE
SQL команда.
UPDATE
функции, подобни на INSERT
(в който посочвате колони и техните желани стойности) и DELETE
(с това, че предоставяте критериите, необходими за насочване към конкретни записи). Можете също така да променяте данни един по един или групово. В тази статия ще се потопим в това как да използвате UPDATE
ефективно да управлявате вашите данни, които вече се съхраняват в таблици.
Използване на UPDATE
за промяна на данни
Основният синтаксис на UPDATE
командата изглежда така:
UPDATE my_tableSET column1 = value1, column2 = value2,WHERE id = 1;
Основната структура включва три отделни клаузи:
- посочване на таблица, върху която да се действа
- предоставяне на колоните, които искате да актуализирате, както и техните нови стойности
- дефиниране на всички критерии, които SQLite трябва да оцени, за да определи кои записи да съвпадат
Въпреки че можете да присвоявате стойности директно на колони, както направихме по-горе, можете също да използвате синтаксиса на списъка с колони, както често се вижда в INSERT
команди.
Например, можем да променим горния пример, за да изглежда по следния начин:
UPDATE my_tableSET (column1, column2) = (value1, value2)WHERE id = 1;
Връщане на записи, променени от UPDATE
команда
По подразбиране SQLite не показва броя на редовете, засегнати от UPDATE
изявление. Въпреки това SQLite добави RETURNING
клауза, моделирана по PostgreSQL във версия 3.35.0
. Тази клауза кара командите да връщат всички или част от записите, които са били променени.
Можете да използвате звездичката *
символ, за да върне всички колони на модифицираните редове, подобно на SELECT
изявление:
UPDATE my_tableSET column1 = value1, column2 = value2,WHERE id = 1RETURNING *;
Освен това можете също да посочите точните колони, които ви интересуват да се показват с/без псевдоним, като използвате AS
:
UPDATE my_tableSET column1 = value1, column2 = value2WHERE id = 1RETURNING column1 AS 'first column';
Актуализиране на записи въз основа на стойности в друга таблица
Актуализирането на данни въз основа на нови външни данни е сравнително опростен процес. Трябва само да предоставите таблицата, колоните, новите стойности и критериите за насочване.
Въпреки това, със SQLite можете да използвате и UPDATE
за условно актуализиране на стойностите на таблицата въз основа на информация в друга таблица във вашата база данни. Основният синтаксис ще изглежда така:
UPDATE table1SET table1.column1 =( SELECT table2.column1 FROM table2 WHERE table1.column2 = table2.column2);
Тук директно актуализираме стойността на column1
в table1
да бъде връщането на SELECT
подзаявка към table2
, но само в редове, където column2
на table1
съвпада с column2
на table2
. FROM
клауза показва връзка между двете таблици и WHERE
определя условията.
Като пример, нека да предположим, че имаме две таблици, наречени book
и 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');
Тези две таблици имат връзка с book.author_id
препраща author.id
. В момента last_publication
за author
таблицата е NULL
. Можем да го попълним с последната публикувана книга на автора в нашата book
таблица с помощта на FROM
и WHERE
клаузи за сближаване на двете таблици.
Тук показваме пример за актуализиране на last_publication
:
UPDATE author SET last_publication=( SELECT title FROM book WHERE author_id = author.id ORDER BY author_id, publication_year DESC);
Ако потърсите author
таблица сега, ще ви покаже заглавието на последната им публикация в базата данни:
SELECT * FROM author;
+------------+------------+-----------+--------------------------+ id first_name last_name last_publication +-------------+------------+-----------+--------------------------+ 1 Leo Tolstoy Anna Karenina 2 James Joyce Ulysses 3 Jean-Paul Sarte Nausea +-------------+------------+-----------+--------------------------+
Заключение
В това ръководство разгледахме основните начини, по които можете да модифицирате съществуващи данни в таблица с помощта на UPDATE
команда. Изпълнението на тези основни концепции ви позволява да посочите точните критерии, необходими за идентифициране на съществуващите редове в таблица, да актуализирате имената на колони със стойности и по избор да върнете редовете, които са били засегнати с RETURNING
. UPDATE
командата е от решаващо значение за управлението на вашите данни след първоначалното вмъкване във вашите бази данни.