Тази статия съдържа основния SQL UPDATE
изрази, които начинаещите могат да използват, за да актуализират данни в таблиците на своите бази данни.
Актуализиране на една колона
Ето основен пример за SQL UPDATE
изявление.
UPDATE Owners
SET LastName = 'Stallone'
WHERE OwnerId = 3;
В този случай актуализирахме стойността на една колона, наречена LastName
.
UPDATE
операторът започва с UPDATE
, последвано от името на таблицата (т.е. таблицата, която съдържа данните, които искате да актуализирате).
След това има SET
ключова дума, последвана от колоната, която искате да актуализирате, и новата стойност, разделена от равно (=
) оператор.
Винаги трябва да включвате WHERE
клауза, освен ако не искате да актуализирате всички редове с една и съща стойност.
Да, правилно прочетохте. Пропускане на WHERE
клаузата ще актуализира всички редове с една и съща стойност.
Повечето системи за управление на бази данни (СУБД) имат различни други опции, които можете да използвате с UPDATE
изявление, но изброените тук са най-често използваните.
Актуализиране на няколко колони
За да актуализирате няколко колони, отделете всяка двойка колона/стойност със запетая.
UPDATE Owners
SET LastName = 'Stallone',
Email = '[email protected]'
WHERE OwnerId = 3;
Пример
В този пример актуализираме таблица.
Първо, нека изберем съдържанието на таблицата.
SELECT * FROM Owners;
Резултат:
+-----------+-------------+------------+----------------+-------------------+ | OwnerId | FirstName | LastName | Phone | Email | |-----------+-------------+------------+----------------+-------------------| | 1 | Homer | Connery | (308) 555-0100 | [email protected] | | 2 | Bart | Pitt | (231) 465-3497 | [email protected] | | 3 | Nancy | Simpson | (489) 591-0408 | NULL | | 4 | Boris | Trump | (349) 611-8908 | NULL | | 5 | Woody | Eastwood | (308) 555-0112 | [email protected] | +-----------+-------------+------------+----------------+-------------------+
Нанси Симпсън наскоро се омъжи и промени фамилното си име, така че ще актуализираме Simpson
до Stallone
.
Сега нека актуализираме тази колона, след което отново изберете таблицата.
UPDATE Owners
SET LastName = 'Stallone'
WHERE OwnerId = 3;
SELECT * FROM Owners;
Резултат:
+-----------+-------------+------------+----------------+-------------------+ | OwnerId | FirstName | LastName | Phone | Email | |-----------+-------------+------------+----------------+-------------------| | 1 | Homer | Connery | (308) 555-0100 | [email protected] | | 2 | Bart | Pitt | (231) 465-3497 | [email protected] | | 3 | Nancy | Stallone | (489) 591-0408 | NULL | | 4 | Boris | Trump | (349) 611-8908 | NULL | | 5 | Woody | Eastwood | (308) 555-0112 | [email protected] | +-----------+-------------+------------+----------------+-------------------+
Можем да видим, че колоната е актуализирана, както е посочено.
Актуализиране на няколко колони
Ето пример за актуализиране на множество колони.
UPDATE Owners
SET LastName = 'Biden',
Email = '[email protected]'
WHERE OwnerId = 4;
SELECT * FROM Owners;
Резултат:
+-----------+-------------+------------+----------------+-------------------+ | OwnerId | FirstName | LastName | Phone | Email | |-----------+-------------+------------+----------------+-------------------| | 1 | Homer | Connery | (308) 555-0100 | [email protected] | | 2 | Bart | Pitt | (231) 465-3497 | [email protected] | | 3 | Nancy | Stallone | (489) 591-0408 | NULL | | 4 | Boris | Biden | (349) 611-8908 | [email protected] | | 5 | Woody | Eastwood | (308) 555-0112 | [email protected] | +-----------+-------------+------------+----------------+-------------------+
В този случай актуализирахме фамилното име и имейл адреса на собственик 4.
Внимание! Забравяме WHERE
Клауза
UPDATE
изявлението може да бъде много опасно изявление, ако не запазите акъла си за вас. Ако пропуснете WHERE
клауза, ще актуализирате всички редове в таблицата.
Нека повторим предишния пример, но този път ще забравим да включим WHERE
клауза.
UPDATE Owners
SET LastName = 'Stallone';
SELECT * FROM Owners;
Резултат:
+-----------+-------------+------------+----------------+-------------------+ | OwnerId | FirstName | LastName | Phone | Email | |-----------+-------------+------------+----------------+-------------------| | 1 | Homer | Stallone | (308) 555-0100 | [email protected] | | 2 | Bart | Stallone | (231) 465-3497 | [email protected] | | 3 | Nancy | Stallone | (489) 591-0408 | NULL | | 4 | Boris | Stallone | (349) 611-8908 | NULL | | 5 | Woody | Stallone | (308) 555-0112 | [email protected] | +-----------+-------------+------------+----------------+-------------------+
Опа! Сега фамилното име на всички е Сталоун!
Може да има моменти, в които всъщност възнамерявате да актуализирате всички редове в таблицата, но тези моменти обикновено са доста редки.
Когато изпълнявате ad hoc заявки, може да искате да изпълните бърз SELECT
израз, който използва същото условие на вашия UPDATE
операция преди реалното изпълнение на UPDATE
операция.
SELECT * FROM Owners
WHERE OwnerId = 4;
Резултат:
+-----------+-------------+------------+----------------+-------------------+ | OwnerId | FirstName | LastName | Phone | Email | |-----------+-------------+------------+----------------+-------------------| | 4 | Boris | Biden | (349) 611-8908 | [email protected] | +-----------+-------------+------------+----------------+-------------------+
Това ни показва точния ред, който ще бъде актуализиран. След като сме доволни, че връща правилния ред, можем да продължим и да използваме същия WHERE
клауза в UPDATE
изявление.