Denne artikel indeholder grundlæggende SQL UPDATE
sætninger, som begyndere kan bruge til at opdatere data i deres databasetabeller.
Opdater en enkelt kolonne
Her er et grundlæggende eksempel på SQL UPDATE
erklæring.
UPDATE Owners
SET LastName = 'Stallone'
WHERE OwnerId = 3;
I dette tilfælde opdaterede vi værdien af en enkelt kolonne kaldet LastName
.
UPDATE
sætning starter med UPDATE
, efterfulgt af tabelnavnet (dvs. den tabel, der indeholder de data, du vil opdatere).
Den har så SET
søgeord, efterfulgt af den kolonne, du vil opdatere, og den nye værdi, adskilt af en lig (=
) operatør.
Du bør altid inkludere en WHERE
klausul, medmindre du vil opdatere alle rækker med samme værdi.
Ja, du læste rigtigt. Udeladelse af WHERE
klausul vil opdatere alle rækker med samme værdi.
De fleste databasestyringssystemer (DBMS'er) har forskellige andre muligheder, som du kan bruge med UPDATE
sætning, men dem, der er anført her, er de mest almindeligt anvendte.
Opdater flere kolonner
For at opdatere flere kolonner skal du adskille hver kolonne/værdipar med et komma.
UPDATE Owners
SET LastName = 'Stallone',
Email = '[email protected]'
WHERE OwnerId = 3;
Eksempel
I dette eksempel opdaterer vi en tabel.
Lad os først og fremmest vælge indholdet af 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 blev for nylig gift og ændrede sit efternavn, så vi opdaterer Simpson
til Stallone
.
Lad os nu opdatere den kolonne, og vælg derefter 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, at kolonnen er blevet opdateret som angivet.
Opdater flere kolonner
Her er et eksempel på opdatering af flere kolonner.
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 dette tilfælde opdaterede vi efternavnet og e-mailadressen på ejer 4.
Forsigtig! Glemmer WHERE
Klausul
UPDATE
Et udsagn kan være en meget farlig udtalelse, hvis du ikke holder dig ved. Hvis du udelader WHERE
klausul, vil du opdatere alle rækker i tabellen.
Lad os tage det forrige eksempel igen, men denne gang glemmer vi at inkludere 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] | +-----------+-------------+------------+----------------+-------------------+
Ups! Nu er alles efternavn Stallone!
Der kan være tidspunkter, hvor du faktisk har til hensigt at opdatere alle rækker i tabellen, men disse tidspunkter er normalt ret sjældne.
Når du kører ad hoc-forespørgsler, vil du måske køre en hurtig SELECT
sætning, der bruger samme betingelse som din UPDATE
handling, før du rent faktisk kører UPDATE
operation.
SELECT * FROM Owners
WHERE OwnerId = 4;
Resultat:
+-----------+-------------+------------+----------------+-------------------+ | OwnerId | FirstName | LastName | Phone | Email | |-----------+-------------+------------+----------------+-------------------| | 4 | Boris | Biden | (349) 611-8908 | [email protected] | +-----------+-------------+------------+----------------+-------------------+
Det viser os den nøjagtige række, der vil blive opdateret. Når vi er overbeviste om, at den returnerer den korrekte række, kan vi gå videre med og bruge den samme WHERE
klausul i UPDATE
erklæring.