SQL UPDATE
Befehl wird verwendet um bereits existierende Daten in einer SQL Tabelle zu ändern.
UPDATE ändert Werte in bestehenden SQL Zeilen, ohne neue Zeilen hinzuzufügen.
UPDATE Ablauf:
Start
│
│ UPDATE Tabelle
│ SET spalte = wert
│ WHERE bedingung
▼
┌──────────┐
│ WHERE │ ACHTUNG!
│ Klausel? │ ┌──────────────────┐
│ │───>│ ALLE Zeilen │
└────┬─────┘ NEIN│ werden geändert! │
│ JA └──────────────────┘
▼
┌──────────┐
│ Finde │
│ passende │
│ Zeilen │
└────┬─────┘
│
▼
┌──────────┐
│ Ändere │
│ Werte │
└────┬─────┘
│
▼
Erfolg!
Visuelle Darstellung - Eine Spalte ändern:
VORHER:
┌────┬─────────┬──────────┬───────┐
│ id │ vorname │ nachname │ alter │
├────┼─────────┼──────────┼───────┤
│ 1 │ Max │ Müller │ 18 │
│ 2 │ Anna │ Schmidt │ 19 │
│ 3 │ Tom │ Wagner │ 20 │
└────┴─────────┴──────────┴───────┘
UPDATE Schueler
SET alter = 21
WHERE id = 3;
NACHHER:
┌────┬─────────┬──────────┬───────┐
│ id │ vorname │ nachname │ alter │
├────┼─────────┼──────────┼───────┤
│ 1 │ Max │ Müller │ 18 │
│ 2 │ Anna │ Schmidt │ 19 │
│ 3 │ Tom │ Wagner │ 21 │ ← GEÄNDERT!
└────┴─────────┴──────────┴───────┘
Mehrere Spalten gleichzeitig ändern:
VORHER:
┌────┬─────────┬──────────┬───────┐
│ id │ vorname │ nachname │ alter │
├────┼─────────┼──────────┼───────┤
│ 1 │ Max │ Müller │ 18 │
└────┴─────────┴──────────┴───────┘
UPDATE Schueler
SET vorname = 'Maximilian',
alter = 19
WHERE id = 1;
NACHHER:
┌────┬────────────┬──────────┬───────┐
│ id │ vorname │ nachname │ alter │
├────┼────────────┼──────────┼───────┤
│ 1 │ Maximilian │ Müller │ 19 │
└────┴────────────┴──────────┴───────┘
↑ GEÄNDERT ↑ GEÄNDERT
GEFAHR - Ohne WHERE:
UPDATE Schueler
SET alter = 99; ← KEIN WHERE!
┌────┬─────────┬──────────┬───────┐
│ id │ vorname │ nachname │ alter │
├────┼─────────┼──────────┼───────┤
│ 1 │ Max │ Müller │ 99 │ ← ALLE
│ 2 │ Anna │ Schmidt │ 99 │ ← ALLE
│ 3 │ Tom │ Wagner │ 99 │ ← ALLE
└────┴─────────┴──────────┴───────┘
↑
ALLES GEÄNDERT!
Syntax - Einzelne Spalte
UPDATE Tabell_Name
SET Spalte_Name = neuer_Wert
WHERE Bedingung;
Syntax - Mehrere Spalten
UPDATE Tabell_Name
SET Spalte1 = wert1,
Spalte2 = wert2,
Spalte3 = wert3
WHERE Bedingung;
Praktisches Beispiel
-- Eine Spalte ändern
UPDATE Schueler
SET vorname = 'Maximilian'
WHERE schueler_id = 1;
-- Mehrere Spalten ändern
UPDATE Schueler
SET vorname = 'Maximilian',
nachname = 'Mustermann',
geburtsdatum = '2005-01-01'
WHERE schueler_id = 1;
-- Alle Zeilen ändern (VORSICHT!)
UPDATE Kurse
SET lehrer_name = 'Neu';
Prüfungsrelevant
- UPDATE ist Teil des DML (Data Manipulation Language)
- Ändert nur bestehende Daten (keine neuen Zeilen)
- WHERE ist fast immer notwendig!
- Ohne WHERE werden ALLE Zeilen geändert
GEFAHR!
UPDATE Schueler SET vorname = 'Max';
Ohne WHERE werden ALLE Schüler zu "Max"!
IMMER WHERE verwenden (außer du willst wirklich alle ändern)
Best Practice
- Erst SELECT mit WHERE testen:
SELECT * FROM Schueler WHERE id = 1;
- Dann UPDATE mit gleicher WHERE:
UPDATE Schueler SET vorname = 'Max' WHERE id = 1;