Dies ist eine alte Version des Dokuments!
Vertiefung: SQL-Abfragen mit Bedingungen
Mit einer WHERE-Bedingung können wir Datensätze einschränken. Anstatt die ganze Tabelle anzuzeigen, wählen wir nur die Zeilen aus, die bestimmte Kriterien erfüllen.
Eine Bedingung ist immer wahr (TRUE) oder falsch (FALSE).
—
Vergleichsoperatoren
Beispiele mit der Filmtabelle `imdb_top_1000`:
- Gleichheit
SELECT Series_Title, Released_Year FROM imdb_top_1000 WHERE Released_Year = 2010;
→ Zeigt alle Filme, die im Jahr **2010** erschienen sind.
- Größer/Kleiner
SELECT Series_Title, IMDB_Rating FROM imdb_top_1000 WHERE IMDB_Rating > 8.5;
→ Zeigt alle Filme mit einer Bewertung **über 8.5**.
—
BETWEEN
Frage: *Liegt ein Wert zwischen zwei Grenzen?* Die Grenzen werden eingeschlossen.
SELECT Series_Title, Released_Year FROM imdb_top_1000 WHERE Released_Year BETWEEN 1990 AND 2000;
→ Alle Filme, die zwischen 1990 und 2000 (inklusive) erschienen sind.
—
IN
Mit `IN` können Sie eine Liste von möglichen Werten vergleichen.
SELECT Series_Title, Director FROM imdb_top_1000 WHERE Director IN ("Christopher Nolan", "Sofia Coppola");
→ Alle Filme, die entweder von Nolan oder von Coppola sind.
—
LIKE
Mit `LIKE` können Sie nach Mustern im Text suchen.
- `%` steht für beliebig viele Zeichen
- `_` steht für genau ein Zeichen
SELECT Series_Title FROM imdb_top_1000 WHERE Series_Title LIKE "The%";
→ Alle Filme, deren Titel mit „The“ beginnt.
SELECT Series_Title FROM imdb_top_1000 WHERE Series_Title LIKE "Ma_er";
→ Findet Titel wie „Maier“ oder „Mayer“.
—
IS NULL / IS NOT NULL
NULL bedeutet: kein Wert eingetragen.
SELECT Series_Title, Meta_score FROM imdb_top_1000 WHERE Meta_score IS NULL;
→ Filme ohne Metascore.
SELECT Series_Title, Meta_score FROM imdb_top_1000 WHERE Meta_score IS NOT NULL;
→ Filme, bei denen ein Metascore vorhanden ist.
—
Logische Verknüpfungen (AND / OR / NOT)
Mit `AND`, `OR` und `NOT` können Sie Bedingungen kombinieren.
- AND → beide Bedingungen müssen zutreffen
- OR → mindestens eine Bedingung muss zutreffen
- NOT → kehrt eine Bedingung um
Beispiele:
SELECT Series_Title, Released_Year, IMDB_Rating FROM imdb_top_1000 WHERE Released_Year > 2010 AND IMDB_Rating > 8.0;
→ Filme nach 2010, die gleichzeitig eine Bewertung über 8.0 haben.
SELECT Series_Title, Director FROM imdb_top_1000 WHERE Director = "Christopher Nolan" OR Director = "Sofia Coppola";
→ Filme, die von Nolan oder Coppola sind.
SELECT Series_Title FROM imdb_top_1000 WHERE NOT Genre LIKE "%Comedy%";
→ Alle Filme, die keine Komödie sind.
—
Zusammenfassung
Die wichtigsten Operatoren im Überblick:
Operator | Bedeutung | Beispiel |
---|---|---|
= | gleich | `Released_Year = 2010` |
> , < , >= , ⇐ | größer/kleiner | `IMDB_Rating >= 8.5` |
BETWEEN … AND … | zwischen zwei Werten | `Released_Year BETWEEN 1990 AND 2000` |
IN (…) | Wert aus einer Liste | `Director IN („Nolan“, „Coppola“)` |
LIKE | Mustervergleich | `Series_Title LIKE „The%„` |
IS NULL | kein Wert | `Meta_score IS NULL` |
IS NOT NULL | Wert vorhanden | `Meta_score IS NOT NULL` |
AND | beide Bedingungen | `Released_Year > 2000 AND IMDB_Rating > 8.0` |
OR | mindestens eine Bedingung | `Director = „Nolan“ OR Director = „Coppola“` |
NOT | Bedingung verneinen | `NOT Genre LIKE “%Comedy%„` |
—
Merksatz: Mit `WHERE` können Sie gezielt Filme auswählen, statt die ganze Tabelle zu sehen. So werden SQL-Abfragen praktisch und nützlich.