LU06c - SQL-DML: Daten ändern (UPDATE)

Lernziele

UPDATE Statement

Der Befehl UPDATE ändert bestehende Daten in einer Tabelle.

UPDATE tabellenname
SET spalte1 = neuer_wert1, spalte2 = neuer_wert2
WHERE bedingung;

Ohne WHERE wird jede Zeile geändert.

UPDATE tabellenname
SET spalte1 = neuer_wert1;

Dieser Code würde alle Datensätze der Tabelle mit dem neuen Wert updaten – meistens nicht das, was Sie wollen.

Der Dry-Run: Better Safe than Sorry

Bevor Sie ein UPDATE ausführen, sollten Sie immer zuerst prüfen, welche Zeilen betroffen wären. Einfach zunächst als SELECT mit derselben WHERE-Bedingung, welche nachher beim UPDATE verwendet würde:

-- 1. Erst prüfen: welche Zeilen sind betroffen?
SELECT * FROM favourite_film WHERE film_id = 2;
 
-- 2. Passt das Ergebnis? Dann erst ändern.
UPDATE favourite_film
SET director = 'C. Nolan'
WHERE film_id = 2;

Zeigt Ihnen der SELECT-Dry-Run mehr Zeilen, als Sie erwartet haben, stimmt Ihre WHERE-Bedingung noch nicht. Erst wenn das SELECT-Ergebnis passt, führen Sie dasselbe WHERE mit UPDATE aus.

Zellen updaten und was passiert ohne WHERE.

Beispiele

Ausgangstabelle:

film_id title director released_year star1
1 Lost in Translation Sofia Coppola 2003 Scarlett Johansson
2 Inception Christopher Nolan 2010 Leonardo DiCaprio
3 Arrival Denis Villeneuve 2016 Amy Adams

Beispiel 1: Gezieltes Update über den Primärschlüssel

SELECT * FROM favourite_film WHERE film_id = 2;
 
UPDATE favourite_film
SET director = 'C. Nolan'
WHERE film_id = 2;
film_id title director released_year star1
1 Lost in Translation Sofia Coppola 2003 Scarlett Johansson
2 Inception C. Nolan 2010 Leonardo DiCaprio
3 Arrival Denis Villeneuve 2016 Amy Adams

Beispiel 2: Mehrere Spalten gleichzeitig ändern

UPDATE favourite_film
SET title = 'Arrival (Extended Cut)', star1 = 'Amy Adams'
WHERE film_id = 3;
film_id title director released_year star1
1 Lost in Translation Sofia Coppola 2003 Scarlett Johansson
2 Inception C. Nolan 2010 Leonardo DiCaprio
3 Arrival (Extended Cut) Denis Villeneuve 2016 Amy Adams

Mit einem einzigen SET können Sie beliebig viele Spalten auf einmal ändern – einfach mit Komma getrennt.


Guido Koch