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).

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**.

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.

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.

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“.

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.

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.

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.

  • modul/m290_guko/learningunits/lu06/theorie/a_where_bedingungen.1758371216.txt.gz
  • Zuletzt geändert: 2025/09/20 14:26
  • von gkoch