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 = 'example@sqldat.com'
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 | example@sqldat.com | | 2 | Bart | Pitt | (231) 465-3497 | example@sqldat.com | | 3 | Nancy | Simpson | (489) 591-0408 | NULL | | 4 | Boris | Trump | (349) 611-8908 | NULL | | 5 | Woody | Eastwood | (308) 555-0112 | example@sqldat.com | +-----------+-------------+------------+----------------+-------------------+
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 | example@sqldat.com | | 2 | Bart | Pitt | (231) 465-3497 | example@sqldat.com | | 3 | Nancy | Stallone | (489) 591-0408 | NULL | | 4 | Boris | Trump | (349) 611-8908 | NULL | | 5 | Woody | Eastwood | (308) 555-0112 | example@sqldat.com | +-----------+-------------+------------+----------------+-------------------+
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 = 'example@sqldat.com'
WHERE OwnerId = 4;
SELECT * FROM Owners; Výsledek:
+-----------+-------------+------------+----------------+-------------------+ | OwnerId | FirstName | LastName | Phone | Email | |-----------+-------------+------------+----------------+-------------------| | 1 | Homer | Connery | (308) 555-0100 | example@sqldat.com | | 2 | Bart | Pitt | (231) 465-3497 | example@sqldat.com | | 3 | Nancy | Stallone | (489) 591-0408 | NULL | | 4 | Boris | Biden | (349) 611-8908 | example@sqldat.com | | 5 | Woody | Eastwood | (308) 555-0112 | example@sqldat.com | +-----------+-------------+------------+----------------+-------------------+
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 | example@sqldat.com | | 2 | Bart | Stallone | (231) 465-3497 | example@sqldat.com | | 3 | Nancy | Stallone | (489) 591-0408 | NULL | | 4 | Boris | Stallone | (349) 611-8908 | NULL | | 5 | Woody | Stallone | (308) 555-0112 | example@sqldat.com | +-----------+-------------+------------+----------------+-------------------+
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 | example@sqldat.com | +-----------+-------------+------------+----------------+-------------------+
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í.