CodeGym /Kurse /SQL SELF /Logische Operatoren (AND, OR, NOT): Bedingungen kombinier...

Logische Operatoren (AND, OR, NOT): Bedingungen kombinieren

SQL SELF
Level 2 , Lektion 2
Verfügbar

Logische Operatoren sind Tools, mit denen du Bedingungen in deinen Abfragen kombinieren kannst, um Daten noch gezielter zu filtern. Wahrscheinlich bist du ihnen schon in Programmiersprachen begegnet. Wenn man SQL-Abfragen mit einem Spamfilter im E-Mail-Postfach vergleicht, dann sind logische Operatoren wie die Regeln, nach denen Mails in den Ordner "Spam" oder im Ordner "Posteingang" landen.

SQL ist ein Tool, das oft für das Auswählen oder Analysieren von Daten genutzt wird. Logische Operatoren (AND, OR, NOT) helfen dir, mehrere Bedingungen in einer Abfrage zu kombinieren, damit du auch auf komplexere Fragen antworten kannst, wie zum Beispiel:

  • Welche studenten sind älter als 18 und haben die Note "A"?
  • Welche produkte gehören zur Kategorie "Elektronik" oder "Haushaltsgeräte"?
  • Welche kunden haben keine Einkäufe gemacht?

Schauen wir uns die drei wichtigsten logischen Operatoren in SQL an:

  1. AND: Beide Bedingungen müssen wahr sein.
  2. OR: Mindestens eine der Bedingungen muss wahr sein.
  3. NOT: Negiert (verneint) die Bedingung.

Operator AND: beide Bedingungen sind wahr

Mit dem AND-Operator kannst du sagen, dass beide Teile der Bedingung erfüllt sein müssen, damit eine Zeile im Ergebnis landet.

Syntax

SELECT spalte1, spalte2
FROM tabelle
WHERE bedingung AND bedingung2;

Beispiel 1: Studenten filtern, die älter als 18 sind und die Note "A" haben

Nehmen wir an, wir haben eine Tabelle students:

id name age grade
1 Alex 20 A
2 Maria 19 B
3 Otto 17 A
4 Anna 22 A

Abfrage:

SELECT name, age, grade
FROM students
WHERE age > 18 AND grade = 'A';

Ergebnis:

name age grade
Alex 20 A
Anna 22 A

Beispiel 2: Mitarbeiter aus der Abteilung "HR" und mit Gehalt über 50000 filtern

SELECT name, department, salary
FROM employees
WHERE department = 'HR' AND salary > 50000;

Operator OR: mindestens eine Bedingung ist wahr

Der OR-Operator wird verwendet, wenn du Zeilen auswählen willst, die mindestens eine der Bedingungen erfüllen.

Syntax

SELECT spalte1, spalte2
FROM tabelle
WHERE bedingung OR bedingung2;

Beispiel 1: Studenten mit Note "A" oder "B" filtern

SELECT name, age, grade
FROM students
WHERE grade = 'A' OR grade = 'B';

Ergebnis:

name age grade
Alex 20 A
Maria 19 B
Otto 17 A
Anna 22 A

Beispiel 2: Produkte aus der Kategorie "Elektronik" oder mit Preis unter 100

Tabelle products:

product_id name category price
1 Fernseher Elektronik 300
2 Bügeleisen Haushaltsgeräte 50
3 Smartphone Elektronik 700
4 Wasserkocher Haushaltsgeräte 80
SELECT name, category, price
FROM products
WHERE category = 'Elektronik' OR price < 100;

Ergebnis:

name category price
Fernseher Elektronik 300
Bügeleisen Haushaltsgeräte 50
Wasserkocher Haushaltsgeräte 80
Smartphone Elektronik 700

Operator NOT: Bedingung umkehren

Wenn AND und OR Bedingungen setzen, die erfüllt sein müssen, macht NOT genau das Gegenteil: Es wählt Zeilen aus, für die die angegebene Bedingung falsch ist.

Syntax

SELECT spalte1, spalte2
FROM tabelle
WHERE NOT bedingung;

Beispiel 1: Studenten filtern, die keine Note "A" haben

SELECT name, age, grade
FROM students
WHERE NOT grade = 'A';

Ergebnis:

name age grade
Maria 19 B

Beispiel 2: Produkte auswählen, die nicht zur Kategorie "Elektronik" gehören

SELECT name, category, price
FROM products
WHERE NOT category = 'Elektronik';

Kombination von logischen Operatoren

Du kannst logische Operatoren kombinieren, um noch komplexere Bedingungen zu bauen. Zum Beispiel, wenn du Studenten auswählen willst, die älter als 18 sind und die Note "A" oder "B" haben, kannst du AND und OR kombinieren.

Syntax mit Kombination

SELECT spalte1, spalte2
FROM tabelle
WHERE (bedingung1 AND bedingung2) OR bedingung3;

Beispiel: Studenten älter als 18 mit Note "A" oder Studenten mit Note "B"

SELECT name, age, grade
FROM students
WHERE (age > 18 AND grade = 'A') OR grade = 'B';

Ergebnis:

name age grade
Alex 20 A
Anna 22 A
Maria 19 B

Operator-Priorität

Wichtig zu wissen: SQL führt logische Operatoren in dieser Reihenfolge aus:

  1. NOT
  2. AND
  3. OR

Du kannst Klammern benutzen, um die Reihenfolge zu ändern. Ohne Klammern kann das Ergebnis ganz anders sein, als du denkst!

Beispiel: Vergleich mit und ohne Klammern

Was passiert in dieser Abfrage?

SELECT name, age, grade
FROM students
WHERE age > 18 AND grade = 'A' OR grade = 'B';

Diese Abfrage wählt Studenten aus:

  1. Die älter als 18 sind und die Note "A" haben.
  2. Die die Note "B" haben.

Die Operator-Priorität führt zum gleichen Ergebnis wie mit Klammern:

SELECT name, age, grade
FROM students
WHERE (age > 18 AND grade = 'A') OR (grade = 'B');

Wenn du aber Klammern anders setzt:

SELECT name, age, grade
FROM students
WHERE age > 18 AND (grade = 'A' OR grade = 'B');

Jetzt werden nur Studenten ausgewählt, die älter als 18 sind und die Note "A" oder "B" haben. Klammern machen echt einen Unterschied!

Typische Fehler bei logischen Operatoren

  1. Klammern vergessen. Das kann zu unerwarteten Ergebnissen führen, besonders wenn du AND und OR kombinierst.
  2. NOT benutzen, ohne genau zu wissen, welche Zeilen ausgeschlossen werden.
  3. Falsche Verwendung von logischen Operatoren. Zum Beispiel AND statt OR oder umgekehrt.
  4. Zu komplexe Bedingungen. Sehr lange Bedingungen mit mehreren AND, OR, NOT ohne Kommentare können schwer lesbar werden.

Diese Operatoren sind das Fundament für alle komplexen Abfragen. Jetzt bist du bereit, Abfragen zu schreiben, die nicht nur funktionieren, sondern auch genau das finden, was du brauchst!

Kommentare
TO VIEW ALL COMMENTS OR TO MAKE A COMMENT,
GO TO FULL VERSION