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: 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. 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. 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` `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) ## Sortierung (ORDER BY)