Tento článek obsahuje základní SQL UPDATE
příkazy, které mohou začátečníci použít k aktualizaci dat ve svých databázových tabulkách.
Aktualizovat jeden sloupec
Zde je základní příklad SQL UPDATE
prohlášení.
UPDATE Owners
SET LastName = 'Stallone'
WHERE OwnerId = 3;
V tomto případě jsme aktualizovali hodnotu jednoho sloupce s názvem LastName
.
UPDATE
příkaz začíná UPDATE
, za kterým následuje název tabulky (tj. tabulka obsahující data, která chcete aktualizovat).
Poté má SET
klíčové slovo, za kterým následuje sloupec, který chcete aktualizovat, a nová hodnota oddělená rovná se (=
) operátor.
Vždy byste měli uvést WHERE
klauzule, pokud nechcete aktualizovat všechny řádky se stejnou hodnotou.
Ano, čtete správně. Vynechání WHERE
klauzule aktualizuje všechny řádky se stejnou hodnotou.
Většina systémů pro správu databází (DBMS) má různé další možnosti, které můžete použít s UPDATE
prohlášení, ale ty, které jsou zde uvedeny, jsou nejčastěji používané.
Aktualizovat více sloupců
Chcete-li aktualizovat více sloupců, oddělte každý pár sloupec/hodnota čárkou.
UPDATE Owners
SET LastName = 'Stallone',
Email = '[email protected]'
WHERE OwnerId = 3;
Příklad
V tomto příkladu aktualizujeme tabulku.
Nejprve vyberte obsah tabulky.
SELECT * FROM Owners;
Výsledek:
+-----------+-------------+------------+----------------+-------------------+ | 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] | +-----------+-------------+------------+----------------+-------------------+
Nancy Simpson se nedávno vdala a změnila si příjmení, takže aktualizujeme Simpson
na Stallone
.
Nyní aktualizujme tento sloupec a poté znovu vyberte tabulku.
UPDATE Owners
SET LastName = 'Stallone'
WHERE OwnerId = 3;
SELECT * FROM Owners;
Výsledek:
+-----------+-------------+------------+----------------+-------------------+ | 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] | +-----------+-------------+------------+----------------+-------------------+
Vidíme, že sloupec byl aktualizován podle specifikace.
Aktualizovat více sloupců
Zde je příklad aktualizace více sloupců.
UPDATE Owners
SET LastName = 'Biden',
Email = '[email protected]'
WHERE OwnerId = 4;
SELECT * FROM Owners;
Výsledek:
+-----------+-------------+------------+----------------+-------------------+ | 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] | +-----------+-------------+------------+----------------+-------------------+
V tomto případě jsme aktualizovali příjmení a e-mailovou adresu vlastníka 4.
Pozor! Zapomenutí WHERE
Ustanovení
UPDATE
prohlášení může být velmi nebezpečné prohlášení, pokud si nezachováte rozum. Pokud vynecháte WHERE
klauzule, aktualizujete vše řádků v tabulce.
Udělejme znovu předchozí příklad, ale tentokrát zapomeneme zahrnout WHERE
doložka.
UPDATE Owners
SET LastName = 'Stallone';
SELECT * FROM Owners;
Výsledek:
+-----------+-------------+------------+----------------+-------------------+ | 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] | +-----------+-------------+------------+----------------+-------------------+
Jejda! Nyní je příjmení všech Stallone!
Mohou nastat situace, kdy ve skutečnosti zamýšlíte aktualizovat všechny řádky v tabulce, ale tyto případy jsou obvykle poměrně vzácné.
Když spouštíte dotazy ad hoc, možná budete chtít spustit rychlý SELECT
příkaz, který používá stejnou podmínku jako UPDATE
před skutečným spuštěním UPDATE
operace.
SELECT * FROM Owners
WHERE OwnerId = 4;
Výsledek:
+-----------+-------------+------------+----------------+-------------------+ | OwnerId | FirstName | LastName | Phone | Email | |-----------+-------------+------------+----------------+-------------------| | 4 | Boris | Biden | (349) 611-8908 | [email protected] | +-----------+-------------+------------+----------------+-------------------+
To nám ukazuje přesný řádek, který bude aktualizován. Jakmile jsme přesvědčeni, že vrací správný řádek, můžeme pokračovat a použít stejný WHERE
klauzule v UPDATE
prohlášení.