Den här artikeln innehåller grundläggande SQL UPDATE
uttalanden som nybörjare kan använda för att uppdatera data i sina databastabeller.
Uppdatera en enskild kolumn
Här är ett grundläggande exempel på SQL UPDATE
uttalande.
UPDATE Owners
SET LastName = 'Stallone'
WHERE OwnerId = 3;
I det här fallet uppdaterade vi värdet för en enda kolumn som heter LastName
.
UPDATE
uttalande börjar med UPDATE
, följt av tabellnamnet (dvs tabellen som innehåller de data du vill uppdatera).
Den har sedan SET
nyckelord, följt av kolumnen du vill uppdatera och det nya värdet, åtskilda av en lika (=
) operatör.
Du bör alltid inkludera en WHERE
sats, om du inte vill uppdatera alla rader med samma värde.
Ja, du läste rätt. Utelämnar WHERE
klausul kommer att uppdatera alla rader med samma värde.
De flesta databashanteringssystem (DBMS) har flera andra alternativ som du kan använda med UPDATE
uttalande, men de som listas här är de mest använda.
Uppdatera flera kolumner
För att uppdatera flera kolumner, separera varje kolumn/värdepar med ett kommatecken.
UPDATE Owners
SET LastName = 'Stallone',
Email = '[email protected]'
WHERE OwnerId = 3;
Exempel
I det här exemplet uppdaterar vi en tabell.
Låt oss först och främst välja innehållet i tabellen.
SELECT * FROM Owners;
Resultat:
+-----------+-------------+------------+----------------+-------------------+ | 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 gifte sig nyligen och bytte sitt efternamn, så vi kommer att uppdatera Simpson
till Stallone
.
Låt oss nu uppdatera den kolumnen och välj sedan tabellen igen.
UPDATE Owners
SET LastName = 'Stallone'
WHERE OwnerId = 3;
SELECT * FROM Owners;
Resultat:
+-----------+-------------+------------+----------------+-------------------+ | 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] | +-----------+-------------+------------+----------------+-------------------+
Vi kan se att kolumnen har uppdaterats som specificerat.
Uppdatera flera kolumner
Här är ett exempel på uppdatering av flera kolumner.
UPDATE Owners
SET LastName = 'Biden',
Email = '[email protected]'
WHERE OwnerId = 4;
SELECT * FROM Owners;
Resultat:
+-----------+-------------+------------+----------------+-------------------+ | 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] | +-----------+-------------+------------+----------------+-------------------+
I det här fallet uppdaterade vi efternamnet och e-postadressen för ägare 4.
Varning! Att glömma WHERE
Klausul
UPDATE
uttalande kan vara ett mycket farligt uttalande om du inte håller koll på dig. Om du utelämnar WHERE
klausul kommer du att uppdatera alla rader i tabellen.
Låt oss göra det föregående exemplet igen, men den här gången glömmer vi att inkludera WHERE
klausul.
UPDATE Owners
SET LastName = 'Stallone';
SELECT * FROM Owners;
Resultat:
+-----------+-------------+------------+----------------+-------------------+ | 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] | +-----------+-------------+------------+----------------+-------------------+
hoppsan! Nu är allas efternamn Stallone!
Det kan finnas tillfällen då du faktiskt har för avsikt att uppdatera alla rader i tabellen, men de tiderna är vanligtvis ganska sällsynta.
När du kör ad hoc-frågor kanske du vill köra en snabb SELECT
uttalande som använder samma villkor för din UPDATE
innan du faktiskt kör UPDATE
operation.
SELECT * FROM Owners
WHERE OwnerId = 4;
Resultat:
+-----------+-------------+------------+----------------+-------------------+ | OwnerId | FirstName | LastName | Phone | Email | |-----------+-------------+------------+----------------+-------------------| | 4 | Boris | Biden | (349) 611-8908 | [email protected] | +-----------+-------------+------------+----------------+-------------------+
Det visar oss den exakta raden som kommer att uppdateras. När vi är övertygade om att den returnerar rätt rad kan vi gå vidare med och använda samma WHERE
klausul i UPDATE
uttalande.