Level 3: Bedingungen kombinieren
Aktualisiert am
Anfänger · Level 3 von 20. Ziel: Filter mit mehreren Bedingungen schreiben und in Texten suchen.
Themen: AND OR Klammern IN BETWEEN LIKE IS NULL
Lektion
Ein Filter hat oft mehrere Kriterien. AND verbindet zwei Bedingungen, die beide wahr sein müssen: genre = 'Novel' AND pages > 300 behält die Romane mit mehr als 300 Seiten. OR begnügt sich mit einer der beiden: dest = 'MAD' OR dest = 'LIS' behält die Flüge nach Madrid und die nach Lissabon. NOT kehrt eine Bedingung um.
Wenn man AND und OR mischt, wird AND zuerst ausgewertet, wie die Multiplikation vor der Addition. a = 1 OR a = 2 AND b = 3 wird also als a = 1 OR (a = 2 AND b = 3) gelesen. Sobald eine Abfrage beides mischt, setze Klammern: Sie machen deine Absicht deutlich und vermeiden stille Fehler.
Zwei Abkürzungen machen Filter lesbarer. IN prüft die Zugehörigkeit zu einer Liste: dest IN ('MAD', 'LIS') ersetzt die Kette von OR, und NOT IN macht das Gegenteil. BETWEEN a AND b behält die Werte zwischen a und b, Grenzen eingeschlossen: pages BETWEEN 200 AND 300 entspricht pages >= 200 AND pages <= 300.
LIKE sucht ein Muster in einem Text. Das Zeichen % steht für eine beliebige Zeichenfolge, auch eine leere, und _ steht für genau ein Zeichen. email LIKE '%@mail.com' findet die Adressen, die auf @mail.com enden; name LIKE 'A%' findet die Namen, die mit A beginnen; name LIKE '____' (vier _) findet die Namen mit genau vier Buchstaben.
Schließlich enthält ein leeres Feld NULL, was „unbekannter Wert“ bedeutet. NULL ist gleich nichts, nicht einmal sich selbst: WHERE email = NULL liefert nie eine Zeile. Um ein leeres Feld zu prüfen, schreibt man IS NULL, und IS NOT NULL für ein gefülltes. Level 12 erklärt ausführlich, warum.
Syntax
SELECT spalten
FROM meine_tabelle
WHERE (a = 1 OR a = 2) AND b BETWEEN 10 AND 20 AND c LIKE 'D%' AND d IS NULL;Kommentiertes Beispiel
SELECT title, genre, pages
FROM books
WHERE genre = 'Novel' AND pages > 300;Beide Bedingungen müssen wahr sein: ein Roman UND mehr als 300 Seiten.
| id | title | author_id | genre | pages | year |
|---|---|---|---|---|---|
| 1 | Cold River | 1 | Novel | 320 | 2011 |
| 2 | Salt Roads | 2 | Travel | 210 | 2016 |
| 3 | The Glass Hive | 3 | Sci-Fi | 412 | 2019 |
| 4 | Winter Ledger | 1 | Crime | 288 | 2014 |
| 5 | Desert Letters | 2 | Novel | 356 | 2020 |
| 6 | Small Engines | 4 | Sci-Fi | 198 | 2022 |
| 7 | Harbor Lights | 5 | Novel | 445 | 2008 |
| 8 | Night Garden | 3 | Crime | 301 | 2017 |
| 9 | Paper Birds | 5 | Poetry | 96 | 2012 |
| 10 | Open Maps | 4 | Travel | 240 | 2021 |
Ergebnis des Beispiels
| title | genre | pages |
|---|---|---|
| Cold River | Novel | 320 |
| Desert Letters | Novel | 356 |
| Harbor Lights | Novel | 445 |
Das Wichtigste
- AND: beide Bedingungen; OR: mindestens eine.
- IN (Liste), BETWEEN (Grenzen eingeschlossen), LIKE mit % und _.
- NULL prüft man mit IS NULL, nie mit = NULL.
Häufige Fallen
- a = 1 OR a = 2 AND b = 3 bedeutet a = 1 OR (a = 2 AND b = 3): Setze Klammern.
- WHERE email = NULL liefert nie etwas.
SQLite-Besonderheit
In SQLite unterscheidet LIKE nicht zwischen Groß- und Kleinbuchstaben (bei Buchstaben ohne Akzent): name LIKE 'alice%' findet „Alice Martin“. Das Zeichen = unterscheidet sie dagegen. In PostgreSQL beachtet LIKE die Groß- und Kleinschreibung, und ILIKE ignoriert sie.
Die 5 Übungen des Levels
- Zeige den Titel und die Seitenzahl der Romane (Genre 'Novel') mit weniger als 350 Seiten.
- Zeige die Fluggesellschaft und das Ziel der Flüge nach 'MAD', 'LIS' oder 'FCO'.
- Zeige den Titel und die Seitenzahl der Bücher mit 200 bis 300 Seiten (Grenzen eingeschlossen).
- Zeige den Namen und die E-Mail-Adresse der Kontakte, deren Adresse auf '@mail.com' endet.
- Zeige die noch nicht zurückgegebenen Ausleihen (return_date leer) der Mitglieder 3 und 4: Ausleih-ID, Mitglied und Ausleihdatum.
In SpeedQL wird jede Abfrage sofort geprüft: Ihr Ergebnis wird mit dem erwarteten verglichen, dann läuft die Abfrage noch einmal auf einer versteckten Kontrolldatenbank. Zu jeder Übung gibt es schriftliche Hinweise, die du nur bei Bedarf aufrufst.
Die Übungen von Level 3 machen
Kostenlos und ohne Anmeldung: Die Lektion und die 5 Übungen öffnen sich direkt in deinem Browser.
← Vorheriges Level: Zeilen mit WHERE filtern · Nächstes Level: Sortieren, begrenzen, Duplikate entfernen →