Update (SQL)
# Update (SQL)

Die UPDATE-Anweisung in SQL ändert den Inhalt der Einträge einer Tabelle.

Die Anweisung ändert dabei alle Zeilen einer Tabelle oder wählt basierend auf einer zusätzlichen Bedingung eine Teilmenge der Tabelle aus. Die Anwendung erfolgt über die Spaltenauswahl einer Tabelle (SET) in Verbindung mit einer optionalen WHERE-Bedingung:

Die Verwendung der UPDATE-Anweisung beschränkt sich auf Benutzer mit Berechtigung zur Datenänderung (UPDATE-Berechtigung) der entsprechenden Tabelle oder Spalte. Die zu ändernden Werte unterliegen den Einschränkungen für Primär(schlüssel), CHECK und NOT NULL.

## Beispiele

Die Spalte C1 der Tabelle T nimmt in allen Zeilen mit Wert „a“ in Spalte C2 den Wert 1 an:

Für alle Zeilen mit Wert „a“ in Spalte C2 nimmt Spalte C1 den Wert 9 und Spalte C3 den Wert 4 an:

Erhöhe den Wert der Spalte C1 um 1 für alle Zeilen mit Wert „a“ in Spalte C2:

Positionierung des Strings „Text“ vor dem Wert von Spalte C1, falls die Spalte C2 den Wert „a“ enthält:

Setze den Wert der Spalte C1 der Tabelle T1 auf 2, sofern die Spalte C2 einen Wert aus der Teilmenge der WHERE-Bedingung enthält. Die Teilmenge enthält dabei diejenigen Werte der Spalte C3 der Tabelle T2, bei denen die Spalte C4 den Wert 0 aufweist:

Festlegen von Werten mehrerer Spalten in einer einzigen Anweisung:

Mehrere WHERE-Bedingungen:

Die UPDATE-Anweisung erlaubt außerdem Joins, in manchen Datenbanksystemen sogar eine vom FROM-Teil abweichende Notation des SQL-Standards:

Das Datenbanksystem von Oracle stellt (bei vorhandenem Index für ArtikelID) eine weitere Notation zu Verfügung:

In manchen Datenbanksystemen wie PostgreSQL definieren sich die Werte der resultierenden Tabelle eines Joins durch je eine UPDATE-Anweisung pro Ergebniszeile.

## Risiken

* Halloween-Problem: In manchen Update-Anweisungen verursachen die verknüpften Indizes von SET-Definitionen und WHERE-Bedingungen (Endlos)schleifen.
* Eine Update-Anweisung mit fehlender WHERE-Bedingung wirkt auf alle Einträge der ausgewählten Spalten.
