Level 3: Bedingungen kombinieren

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.

Tabelle books (10 Zeilen)
idtitleauthor_idgenrepagesyear
1Cold River1Novel3202011
2Salt Roads2Travel2102016
3The Glass Hive3Sci-Fi4122019
4Winter Ledger1Crime2882014
5Desert Letters2Novel3562020
6Small Engines4Sci-Fi1982022
7Harbor Lights5Novel4452008
8Night Garden3Crime3012017
9Paper Birds5Poetry962012
10Open Maps4Travel2402021

Ergebnis des Beispiels

titlegenrepages
Cold RiverNovel320
Desert LettersNovel356
Harbor LightsNovel445

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

  1. Geführt · Zeige den Titel und die Seitenzahl der Romane (Genre 'Novel') mit weniger als 350 Seiten. (Tabelle: books)
  2. Training · Zeige die Fluggesellschaft und das Ziel der Flüge nach 'MAD', 'LIS' oder 'FCO'. (Tabelle: flights)
  3. Training · Zeige den Titel und die Seitenzahl der Bücher mit 200 bis 300 Seiten (Grenzen eingeschlossen). (Tabelle: books)
  4. Training · Zeige den Namen und die E-Mail-Adresse der Kontakte, deren Adresse auf '@mail.com' endet. (Tabelle: contacts)
  5. Herausforderung · Zeige die noch nicht zurückgegebenen Ausleihen (return_date leer) der Mitglieder 3 und 4: Ausleih-ID, Mitglied und Ausleihdatum. (Tabelle: loans)

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.

Level 3 in SpeedQL öffnen

·