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:

UPDATE Tabellenname SET Spaltenname = Wert [, Spaltenname = Wert ...] [WHERE Bedingung]

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 af SETdefinitioner og WHEREbetingelser (endeløse) sløjfer .
  • En Updateerklæring med en manglende WHEREtilstand påvirker alle poster i de valgte kolonner.

Se også

Individuelle beviser

  1. MySQL : OPDATER syntaks. Hentet 1. oktober 2018 (forenklet og oversat).
  2. ^ Tech On The Net: PostgreSQL: FRA klausul. Hentet 1. oktober 2018 .
  3. ^ PostgreSQL : Opdatering. Hentet 22. november 2018 .