SQL-Befehl: mit „UPDATE“ Daten flexibel und präzise ändern
Der SQL-Befehl UPDATE gehört zu den zentralen Werkzeugen, um bestehende Daten in einer Datenbank zu ändern. Mit ihm kannst du einzelne oder mehrere Felder flexibel anpassen, basierend auf bestimmten Bedingungen. In diesem Artikel erfährst du, wie der UPDATE-Befehl nach dem SQL-Standard funktioniert, wie er auf verschiedenen Plattformen wie MariaDB, MySQL, MSSQL, SQLite und Oracle angewendet wird, und worauf du dabei achten solltest.
Was ist der UPDATE-Befehl?
Der UPDATE-Befehl wird verwendet, um Daten in bestehenden Tabellen zu ändern. Dabei kannst du bestimmte Zeilen auswählen, deren Werte du ändern möchtest, und gezielt Spalten mit neuen Werten belegen. Er besteht aus zwei Hauptteilen:
- Welche Tabelle? → Mit dem UPDATE-Befehl spezifizierst du die Tabelle, in der du Änderungen vornehmen willst.
- Was ändern? → Mit SET definierst du, welche Spalte(n) aktualisiert und welche Werte diesen Spalten zugewiesen werden sollen. Eine WHERE-Bedingung grenzt diese Änderungen ein.
Syntax nach dem SQL-Standard:
UPDATE tabellenname
SET spalte1 = wert1, spalte2 = wert2, ...
WHERE bedingung;
Die „Personen“-Tabelle als Beispiel
Für unsere Beispiele nutzen wir die Tabelle „Personen“ aus der Datenbank „Datenbank“, die unter anderem historische Persönlichkeiten enthält. Sie hat folgende Struktur:
ID | Vorname | Nachname | Geburtsdatum | Geschlecht | Körpergröße_cm | Geburtsort | Letzter_Wohnort | Beschreibung |
---|---|---|---|---|---|---|---|---|
1 | Albert | Einstein | 1879-03-14 | 1 | 172 | Ulm | Princeton | Revolutionierte die Physik mit der Relativitätstheorie. |
2 | Marie | Curie | 1867-11-07 | 0 | 160 | Warschau | Paris | Nobelpreisträgerin in zwei Wissenschaftsbereichen. |
3 | Mahatma | Gandhi | 1869-10-02 | 1 | 165 | Porbandar | Neu-Delhi | Führte Indien gewaltlos zur Unabhängigkeit. |
Anwendungsbeispiele für den UPDATE-Befehl
1. Einen einzelnen Wert ändern
Angenommen, du möchtest den Nachnamen von „Marie Curie“ durch ihren vollständigen „Curie-Skłodowska“ ersetzen. Das entsprechende SQL-Kommando lautet:
UPDATE Personen
SET Nachname = 'Curie-Skłodowska'
WHERE Vorname = 'Marie' AND Nachname = 'Curie';
Das Ergebnis: | ID | Vorname | Nachname | Geburtsdatum | Geschlecht | Körpergröße_cm | Geburtsort | Letzter_Wohnort | Beschreibung | |—–|———–|—————-|————–|————|—————-|————|—————–|——————————————| | 2 | Marie | Curie-Skłodowska | 1867-11-07 | 0 | 160 | Warschau | Paris | Nobelpreisträgerin in zwei Bereichen. |
2. Mehrere Spalten gleichzeitig ändern
Gehen wir davon aus, dass der Eintrag von „Albert Einstein“ unrichtig ist, weil er zuletzt in Berlin lebte und nicht in Princeton. Gleichzeitig möchtest du seine Beschreibung korrigieren:
UPDATE Personen
SET Letzter_Wohnort = 'Berlin', Beschreibung = 'Wirkte zuletzt in Berlin.'
WHERE Vorname = 'Albert' AND Nachname = 'Einstein';
Das Ergebnis: | ID | Vorname | Nachname | Letzter_Wohnort | Beschreibung | |—–|———–|———–|—————–|———————————| | 1 | Albert | Einstein | Berlin | Wirkte zuletzt in Berlin. |
3. Alle Zeilen ändern
Stell dir vor, das Feld „Geburtsort“ wurde fälschlicherweise mit Städtenamen auf Deutsch belegt. Du möchtest alle Einträge ändern, damit bei allen Personen stattdessen „Unbekannt“ angezeigt wird:
UPDATE Personen
SET Geburtsort = 'Unbekannt';
Danach sehen alle Einträge in der Spalte „Geburtsort“ gleich aus: | ID | Vorname | Nachname | Geburtsort | |—–|———–|————|————–| | 1 | Albert | Einstein | Unbekannt | | 2 | Marie | Curie | Unbekannt |
4. Selektive Änderungen mit Bedingungen
Nehmen wir an, alle Personen unter 170 cm Körpergröße sollen in ihrer Beschreibung den Zusatz „Kleinwüchsig“ erhalten. Dies kannst du über eine Bedingung steuern:
UPDATE Personen
SET Beschreibung = CONCAT(Beschreibung, ' Kleinwüchsig.')
WHERE Körpergröße_cm < 170;
Wichtige Hinweise beim Arbeiten mit UPDATE
1. Der Schutz durch die WHERE-Klausel
Wenn du die WHERE-Bedingung in deinem Befehl vergisst, werden die Daten in allen Zeilen der Tabelle aktualisiert. Stelle sicher, dass deine Bedingung konkret genug ist, wenn du nur bestimmte Zeilen ändern möchtest. Beispiel:
UPDATE Personen
SET Beschreibung = 'Unverändert'; -- Sichere Anweisung
WHERE ID = 99; -- Schutz durch konkrete ID!
Unterstützung durch Datenbankplattformen
Während der UPDATE-Befehl im Kern Teil des SQL-Standards ist, bieten die verschiedenen Plattformen oft zusätzliche Funktionen oder leichte Variationen. Schauen wir uns die Hauptplattformen an:
MariaDB und MySQL
MariaDB und MySQL unterstützen den Standard vollständig und fügen erweiterte Möglichkeiten wie die Verwendung von Joins in UPDATE-Abfragen hinzu. Beispiel (zwei Tabellen verknüpfen bei UPDATE):
UPDATE Personen AS p
INNER JOIN Adresse a ON p.ID = a.PersonenID
SET p.Letzter_Wohnort = a.Stadt;
MSSQL
MSSQL (Microsoft SQL Server) bietet ebenfalls den Standard auf. Zusätzlich kannst du mit OUTPUT die aktualisierten Datensätze anzeigen lassen:
UPDATE Personen
SET Nachname = 'Beispiel'
OUTPUT INSERTED.* -- zeigt die geänderten Zeilen an
WHERE ID = 1;
Oracle Database
Oracle unterstützt den UPDATE-Befehl mit der Möglichkeit, geänderte Daten über RETURNING INTO direkt im Code weiterzuverwenden:
UPDATE Personen
SET Beschreibung = 'Neu'
WHERE ID = 1
RETURNING Beschreibung INTO :neuBeschreibung;
SQLite
SQLite implementiert den Standard ohne größere Erweiterungen. Das Ändern oder Hinzufügen von Spalten während eines Updates ist in SQLite eingeschränkt, sodass ein gesetzter Standardwert einfacher ist:
UPDATE Personen
SET Geburtsort = 'Unbekannt';
Zusammenfassung der Plattformkompatibilität
Plattform | Standard unterstützt? | Ergänzungen |
---|---|---|
MariaDB | Ja | Unterstützt Joins und Transaktionen mit UPDATE |
MSSQL | Ja | OUTPUT-Ausgabe mit geänderten Zeilen |
MySQL | Ja | Unterstützt erweiterte Joins in UPDATE-Abfragen |
Oracle | Ja | RETURNING INTO zum Zurücksenden von Ergebnissen |
SQLite | Ja | Einfachere Nutzung ohne Sonderfunktionen |
Fazit
Der UPDATE-Befehl ist ein unverzichtbares Werkzeug, um bestehende Daten in SQL-Datenbanken zu ändern. Egal ob du Fehler korrigierst, Spalten aktualisierst oder ganze Zeilen neu setzt: Mit den oben genannten Beispielen kannst du den UPDATE-Befehl sicher und effizient verwenden.