Opdatering (SQL)
Den UPDATE sætning i SQL ændrer indholdet af posterne i en tabel .
Erklæringen ændrer alle rækker i en tabel eller vælger et undersæt af tabellen baseret på en yderligere betingelse . Ansøgningen foregår via kolonnevalg af en tabel ( SET) i forbindelse med en valgfri WHERE-betingelse:
UPDATETabellennameSETSpaltenname = Wert [, Spaltenname = Wert ...] [WHEREBedingung]
Anvendelsen af UPDATEerklæringen er begrænset til brugere med tilladelse til at ændre data ( UPDATEautorisation) for den tilsvarende tabel eller kolonne. De værdier, der skal ændres, er omfattet af restriktioner for primær (nøgle) , CHECKog NOT NULL.
Eksempler
Kolonne C1 i tabel T antager værdien 1 i alle rækker med værdien "a" i kolonne C2 :
UPDATE T
SET C1 = 1
WHERE C2 = 'a'
For alle rækker med værdien "a" i kolonne C2 tager kolonne C1 værdien 9 og kolonne C3 tager værdien 4:
UPDATE T
SET C1 = 9,
C3 = 4
WHERE C2 = 'a'
Forøg værdien af kolonne C1 med 1 for alle rækker med værdien "a" i kolonne C2 :
UPDATE T
SET C1 = C1 + 1
WHERE C2 = 'a'
Placering af strengen "Tekst" foran værdien af kolonne C1 , hvis kolonne C2 indeholder værdien "a":
UPDATE T
SET C1 = 'Text' || C1
WHERE C2 = 'a'
Indstil værdien af kolonne C1 i tabel T1 til 2, forudsat at kolonne C2 indeholder en værdi fra undersættet af WHERE-tilstanden. Delsættet indeholder disse værdier i kolonne C3 i tabel T2, for hvilken kolonne C4 har værdien 0:
UPDATE T1
SET C1 = 2
WHERE C2 IN ( SELECT C3
FROM T2
WHERE C4 = 0)
Indstil værdier for flere kolonner i en enkelt sætning:
UPDATE T
SET C1 = 1,
C2 = 2
Flere WHEREbetingelser:
UPDATE T
SET A = 1
WHERE C1 = 1
AND C2 = 2
Det UPDATEudsagn giver også mulighed slutter i nogle databasesystemer selv en notation af den SQL standarden , at FROMadskiller fra del :
UPDATE a
SET a.[Update_Spalte] = Update_Wert
FROM Artikel a
JOIN Systematik s
ON a.ArtikelID = s.ArtikelID
WHERE c.classID = 1
Oracle- databasesystemet giver en anden notation (hvis der er et indeks til ArticleID) :
UPDATE
(
SELECT *
FROM Artikel
JOIN Systematik
ON Artikel.ArtikelID = Systematik.ArtikelID
WHERE Systematik.classID = 1
)
SET [Update_Spalte] = Update_Wert
I nogle databasesystemer såsom PostgreSQL defineres værdierne for den resulterende tabel for en sammenføjning med en UPDATEsætning pr. Resultatlinje.
Risici
-
Halloween-problem : I nogle
Updateudsagn forårsager de sammenkædede indekser afSETdefinitioner ogWHEREbetingelser (endeløse) sløjfer . - En
Updateerklæring med en manglendeWHEREtilstand påvirker alle poster i de valgte kolonner.
Se også
Individuelle beviser
- ↑ MySQL : OPDATER syntaks. Hentet 1. oktober 2018 (forenklet og oversat).
- ^ Tech On The Net: PostgreSQL: FRA klausul. Hentet 1. oktober 2018 .
- ^ PostgreSQL : Opdatering. Hentet 22. november 2018 .