CodeGym /Kurse /SQL SELF /Verwendung von WHERE beim Aktualisieren und...

Verwendung von WHERE beim Aktualisieren und Löschen von Daten

SQL SELF
Level 21 , Lektion 4
Verfügbar

Stell dir vor, du bist Datenbank-Admin und musst Einträge ändern oder löschen. Aber was, wenn du aus Versehen alles aktualisierst oder löschst? Der WHERE-Operator ist quasi deine "Versicherung" gegen katastrophale Fehler. Damit kannst du ganz genau angeben, welche Zeilen von deinen Abfragen betroffen sein sollen.

Zum Beispiel:

UPDATE students
SET status = 'Graduated';
Diese Abfrage aktualisiert wirklich alle Zeilen in der Tabelle students. Und stell dir vor, statt einem Glückwunsch zum Abschluss hast du aus Versehen überall status = 'Expelled' gesetzt. Ganz schön gefährlich, oder? Um das zu vermeiden, benutzt man immer WHERE, um Bedingungen zu definieren, welche Zeilen aktualisiert oder gelöscht werden sollen.

Syntax der WHERE-Bedingung

WHERE wird verwendet, um Zeilen zu filtern, auf die der Operator angewendet wird. Du kannst es mit UPDATE oder DELETE verwenden. Die Syntax sieht so aus:

Für UPDATE:

UPDATE tabelle
SET column1 = value1, column2 = value2
WHERE bedingung;

Für DELETE:

DELETE FROM tabelle
WHERE bedingung;

Ohne WHERE betrifft die Änderung alle Zeilen der Tabelle. Also: immer Bedingungen angeben, damit du nicht aus Versehen Daten änderst, die du gar nicht anfassen wolltest.

Vergleichsoperatoren verwenden

Um Bedingungen in WHERE zu bauen, nutzt man Vergleichsoperatoren. Hier die wichtigsten:

Operator Beschreibung Beispiel
= Gleich age = 18
<> Ungleich age <> 18
> Größer als age > 18
< Kleiner als age < 18
>= Größer oder gleich age >= 18
<= Kleiner oder gleich age <= 18

Beispiel: Status eines Studenten aktualisieren

Wenn du alle Studenten, die älter als 21 sind, als "Graduated" markieren willst, geht das so:

UPDATE students
SET status = 'Graduated'
WHERE age > 21;

Beispiel: Alle Studenten unter 18 löschen

Falls jemand versehentlich minderjährige Studenten eingetragen hat, kannst du sie so löschen:

DELETE FROM students
WHERE age < 18;

Komplexe Bedingungen mit logischen Operatoren

Oft musst du nach mehreren Kriterien filtern. Zum Beispiel willst du nur die Studenten aktualisieren, die älter als 18 sind und im Kurs Programming sind. Dafür gibt's logische Operatoren: AND, OR und NOT.

Logische Operatoren:

Operator Beschreibung Beispiel
AND Trifft zu, wenn alle Bedingungen wahr sind age > 18 AND course = 'Programming'
OR Trifft zu, wenn mindestens eine Bedingung wahr ist age > 18 OR course = 'Programming'
NOT Negiert das Ergebnis der Bedingung NOT (age < 18)

Beispiel: Nur Programmierer-Studenten über 18 aktualisieren

UPDATE students
SET status = 'Advanced'
WHERE age > 18 AND course = 'Programming';

Beispiel: Alle Studenten unter 18 oder im Kurs "Singen" löschen

DELETE FROM students
WHERE age < 18 OR course = 'Singing';

Wie du katastrophale Fehler vermeidest

Prüfe immer die Bedingung, bevor du ausführst!

Wenn du eine Abfrage ohne WHERE schreibst, führt PostgreSQL sie für alle Zeilen der Tabelle aus. Das passiert dann:

DELETE FROM students;
-- Ups! Alle Einträge aus der Tabelle students wurden gelöscht!

Um das zu vermeiden, füge ein WHERE hinzu:

DELETE FROM students
WHERE student_id = 123;

Tipp: Wenn du dir nicht sicher bist, was die Bedingung macht, fang mit SELECT an. Zum Beispiel:

SELECT * FROM students
WHERE student_id = 123;

Sobald du sicher bist, dass die Auswahl passt, kannst du UPDATE oder DELETE ausführen.

Praktische Beispiele

Beispiel 1: Status von Studenten aktualisieren

Angenommen, wir haben die Tabelle students:

student_id name age course status
1 Otto Lin 20 Programming Beginner
2 Maria Chi 22 Mathematics Graduated
3 Eva Gram 19 Programming Beginner

Wir wollen alle Programmierer-Studenten über 18 als "Intermediate" markieren:

UPDATE students
SET status = 'Intermediate'
WHERE age > 18 AND course = 'Programming';

Ergebnis:

student_id name age course status
1 Otto Lin 20 Programming Intermediate
2 Maria Chi 22 Mathematics Graduated
3 Eva Gram 19 Programming Beginner

Beispiel 2: Ausgeschlossene Studenten löschen

Jetzt nehmen wir an, wir haben Studenten mit Kursen, die gelöscht werden sollen. Zum Beispiel Studenten, die im Kurs "History of Arts" waren. Tabelle:

student_id name age course status
1 Otto Lin 20 Programming Intermediate
4 Alex Ming 21 History of Arts Expelled

Wir löschen die Studenten aus dem Kurs "History of Arts":

DELETE FROM students
WHERE course = 'History of Arts';
student_id name age course status
1 Otto Lin 20 Programming Intermediate

Beispiel 3: Update ohne Bedingungen (und warum das schlecht ist)

Wenn du schreibst:

UPDATE students
SET status = 'Absolvent';

ALLE Studenten werden zu Absolventen. Deshalb: immer WHERE verwenden!

Angenommen, die Tabelle sah ursprünglich so aus:

student_id name age course status
1 Otto Lin 20 Programming Intermediate
2 Maria Chi 22 Mathematics Graduated
3 Eva Gram 19 Programming Beginner

Nach dem UPDATE ohne WHERE:

student_id name age course status
1 Otto Lin 20 Programming Absolvent
2 Maria Chi 22 Mathematics Absolvent
3 Eva Gram 19 Programming Absolvent

😬 Siehst du? Alle Status wurden ersetzt. Der Fehler kann irreversibel sein, vor allem ohne Backup. Also: WHERE ist dein Freund!

Besonderheiten und Fallen

Auch wenn WHERE mega nützlich ist, machen Anfänger oft Fehler:

  • Keine Bedingung: Vergisst du WHERE, werden alle Zeilen betroffen.
  • Falsche Bedingung: Wenn du z.B. age = 19 statt age < 19 schreibst, erwischst du die falschen Daten.
  • Komplexe Bedingungen: Falsche Prioritäten bei AND und OR können zu unerwarteten Ergebnissen führen. Nutze Klammern für Klarheit:
    DELETE FROM students
    WHERE (age > 18 AND course = 'Programming') OR course = 'Mathematics';
    

Schreib deine Abfragen so, dass sie für dich und deine Kollegen maximal verständlich sind.

Jetzt weißt du, wie du WHERE zum sicheren und zuverlässigen Aktualisieren und Löschen von Daten nutzt. Dieses Tool ist dein bester Freund beim Arbeiten mit Datenbanken. Und denk dran: Lieber einmal mehr die Bedingung checken als später Daten wiederherstellen zu müssen!

2
Aufgabe
SQL SELF, Level 21, Lektion 4
Gesperrt
Aktualisierung mit mehreren Bedingungen
Aktualisierung mit mehreren Bedingungen
1
Umfrage/Quiz
Einfügen und Aktualisieren von Daten, Level 21, Lektion 4
Nicht verfügbar
Einfügen und Aktualisieren von Daten
Einfügen und Aktualisieren von Daten
Kommentare
TO VIEW ALL COMMENTS OR TO MAKE A COMMENT,
GO TO FULL VERSION