SQL erweitert um AND und OR

This commit is contained in:
2026-04-26 09:06:55 +02:00
parent 6ed6c08abd
commit 33df80d43b
+55 -6
View File
@@ -33,7 +33,7 @@ Um alle Datensätze mit `amount` kleiner oder gleich 20 abzurufen, schreibt man:
## Unique values
### Unique values
Angenommen man hat die folgende Tabelle:
@@ -47,11 +47,11 @@ Angenommen man hat die folgende Tabelle:
Man möchte alle Länder wissen, in denen das Produkt verkauft wurde.
Wenn man die normale Abfrage, die wir kennen, verwenden: `SELECT country from sales` liefert sie `Poland`, `Germany`, `Poland`. Das ist nicht das, wonach wir suchen, weil Polen zweimal wiederholt wird.
Wenn man die normale Abfrage, die man kennt, verwendet: `SELECT country from sales` liefert sie `Poland`, `Germany`, `Poland`. Das ist nicht das, wonach man sucht, weil Polen zweimal wiederholt wird.
Um es zu lösen, können wir das `DISTINCT`-Schlüsselwort verwenden:
Um es zu lösen, kann man das `DISTINCT`-Schlüsselwort verwenden:
## NOT
### NOT
Das `NOT`-Schlüsselwort bedeutet, dass man nicht möchte, dass die Bedingung erfüllt wird.
@@ -80,9 +80,58 @@ Das `NOT`-Schlüsselwort kehrt die Bedingung im Wesentlichen um. Zum Beispiel si
`WHERE NOT age <= 20`
## Vorrang
### AND
`AND` geht vor `OR`
Das `AND`-Schlüsselwort bedeutet, dass **beide** Bedingungen wahr sein müssen; wenn eine von ihnen nicht der Fall ist, wird die Bedingung nicht erfüllt.
Zum Beispiel ist hier eine `people`-Tabelle:
| Name | Alter | Geschlecht |
| ------ | ----- | ---------- |
| Joas | 13 | männlich |
| Holwa | 17 | männlich |
| Nohlas | 24 | weiblich |
| Polar | 23 | männlich |
| Loopa | 18 | weiblich |
Die folgende Abfrage:
`SELECT * FROM people WHERE gender = "female" AND age < 20`
bedeutet, dass man nach allen Datensätzen sucht, bei denen das Geschlecht „female“ ist und das Alter kleiner als 20 ist.
Dies wird das Ergebnis sein:
| Name | Alter | Geschlecht |
| ----- | ----- | ---------- |
| Loopa | 18 | weiblich |
### OR
Das `OR`-Schlüsselwort bedeutet, dass eine der Bedingungen wahr sein soll.
Zum Beispiel betrachtet man die folgende **people**-Tabelle:
| name | age | gender |
| ------ | ---- | ------ |
| Joas | 13 | male |
| Holwa | 17 | male |
| Nohlas | 24 | female |
| Polar | 23 | male |
| Loopa | 18 | female |
`SELECT * FROM people WHERE gender = 'female' OR age < 20`
Diese Abfrage bedeutet, dass man nach allen Datensätzen sucht, bei denen entweder das Geschlecht weiblich ist oder das Alter unter 20 liegt.
Das wird das Ergebnis sein:
| Name | Alter | Geschlecht |
| ------ | ----- | ---------- |
| Joas | 13 | männlich |
| Holwa | 17 | männlich |
| Nohlas | 24 | weiblich |
| Loopa | 18 | weiblich |
## Sortierung (ORDER BY)