Willkommen

SQL Lernen mit der Filmdatenbank

In diesem Kurs lernst du Schritt für Schritt, wie du mit SQL Daten aus einer Datenbank abfragen kannst. Unsere Datenbank enthält Informationen über Filme, Serien, Schauspieler und Regisseure.

Was ist SQL?

SQL (Structured Query Language) ist die Sprache, mit der man Datenbanken abfragt. Mit SQL kannst du:

  • Daten aus Tabellen abrufen (SELECT)
  • Daten filtern und sortieren
  • Daten aus mehreren Tabellen kombinieren
  • Berechnungen über Daten durchführen

So funktioniert dieser Kurs

Arbeite die Kapitel der Reihe nach durch. Jedes Kapitel enthält:

  • Theorie — Erklärungen der SQL-Konzepte
  • Beispiele — Klicke auf ein Beispiel, um es im Editor auszuprobieren
  • Übungen — Schreibe eigene Abfragen. Tipps und Lösungen helfen dir weiter.
Tipp: Der SQL-Editor ist immer am unteren Rand sichtbar. Klicke auf ein Beispiel oder schreibe deine eigene Abfrage und drücke Strg+Enter zum Ausführen.

Unsere Datenbank

Die Datenbank besteht aus 9 Tabellen. In der Seitenleiste links findest du das komplette Schema. Hier eine Übersicht der wichtigsten Beziehungen:

FilmRegisseur(über RegieID)
FilmReihe(gehört zu einer Filmreihe)
Reihe / SerieLand(gedreht in einem Land)
SchauspielerFilm / Folge(über spieltInFilm / spieltInFolge)
FolgeSerie(gehört zu einer Serie)

Probiere gleich deine erste Abfrage aus:

SELECT * FROM Film
Kapitel 1

SELECT — Daten abfragen

Mit dem SELECT-Befehl holst du Daten aus der Datenbank. Es ist der wichtigste und am häufigsten verwendete SQL-Befehl.

Grundaufbau einer Abfrage

Jede SQL-Abfrage hat mindestens zwei Teile:

SELECT spalte1, spalte2, ...
FROM tabellenname
  • SELECT bestimmt, welche Spalten angezeigt werden
  • FROM bestimmt, aus welcher Tabelle die Daten kommen

Alle Spalten abfragen mit *

Das Sternchen * bedeutet „alle Spalten“. So bekommst du die komplette Tabelle:

SELECT * FROM Film
SELECT * FROM Schauspieler
SELECT * FROM Land

Bestimmte Spalten auswählen

Meistens brauchst du nicht alle Spalten. Gib einfach die gewünschten Spaltennamen an, getrennt durch Kommas:

SELECT Titel, Jahr, Bewertung FROM Film
SELECT Vorname, Nachname FROM Schauspieler
SELECT Name, Staffeln FROM Serie

Übungen 0 / 25

Zeige alle Daten der Tabelle Film an.
Zeige alle Daten der Tabelle Schauspieler an.
Zeige alle Regisseure an.
Zeige alle Daten der Tabelle Reihe an.
Zeige alle Daten der Tabelle Land an.
Zeige alle Daten der Tabelle Folge an.
Zeige alle Daten der Tabelle Serie an.
Zeige nur die Titel aller Filme.
Zeige nur die Nachnamen aller Regisseure.
Zeige nur die Namen aller Länder.
Zeige Vorname und Nachname aller Schauspieler.★★
Zeige Titel und Bewertung aller Filme.★★
Zeige Name und Einwohner aller Länder.★★
Zeige Name und Staffeln aller Serien.★★
Zeige Reihenname und Anzahl aller Filmreihen.★★
Zeige Vorname und Nachname aller Regisseure.★★
Zeige Titel und Länge aller Filme.★★
Zeige Titel und Jahr aller Filme.★★
Zeige Titel, Staffel und Nummer aller Folgen.★★
Zeige Vorname, Nachname und GebOrt aller Schauspieler.★★
Zeige Titel, Länge und Bewertung aller Filme.★★
Zeige Titel, Jahr, Länge und Bewertung aller Filme.★★★
Zeige Vorname, Nachname, GebJahr und GebOrt aller Schauspieler.★★★
Zeige Vorname, Nachname und GebJahr aller Regisseure.★★★
Zeige Name, Einwohner und Sprache aller Länder.★★★
Kapitel 2

WHERE — Daten filtern

Mit WHERE kannst du bestimmen, welche Zeilen angezeigt werden sollen. Nur Zeilen, die die Bedingung erfüllen, erscheinen im Ergebnis.

Grundaufbau mit WHERE

SELECT spalten
FROM tabelle
WHERE bedingung

Vergleichsoperatoren

Du kannst Werte vergleichen mit:

  • = — gleich
  • != oder <> — ungleich
  • <, >, <=, >= — kleiner, größer, ...
SELECT * FROM Film WHERE Jahr = 2020
SELECT * FROM Film WHERE Bewertung > 8
SELECT * FROM Schauspieler WHERE GebJahr < 1970

Textsuche mit LIKE

Mit LIKE kannst du nach Textmustern suchen. Das Prozentzeichen % steht für „beliebig viele Zeichen“:

  • LIKE 'A%' — beginnt mit A
  • LIKE '%man' — endet mit „man“
  • LIKE '%Star%' — enthält „Star“
SELECT * FROM Film WHERE Titel LIKE '%Star%'
SELECT * FROM Schauspieler WHERE Nachname LIKE 'S%'

Bedingungen kombinieren: AND, OR, NOT

Mehrere Bedingungen lassen sich verknüpfen:

SELECT * FROM Film WHERE Bewertung > 7 AND Jahr > 2015
SELECT * FROM Film WHERE Jahr = 2019 OR Jahr = 2020
SELECT * FROM Film WHERE NOT Online = 'Netflix'

BETWEEN und IN

BETWEEN prüft, ob ein Wert in einem Bereich liegt. IN prüft, ob ein Wert in einer Liste enthalten ist:

SELECT * FROM Film WHERE Jahr BETWEEN 2010 AND 2020
SELECT * FROM Land WHERE Sprache IN ('Deutsch', 'Englisch')

Übungen 0 / 25

Finde alle Filme, die im Jahr 2020 erschienen sind.
Finde alle Filme mit einer Bewertung höher als 8.
Finde alle Schauspieler, die nach dem Jahr 1970 geboren wurden.
Finde alle Länder, die weniger als 80 Millionen Einwohner haben.
Finde alle Filmreihen, die mehr oder genau 5 Filme haben.
Finde alle Serien mit mehr als 3 Staffeln.
Finde alle Folgen, die eine zweistellige Nummer haben.
Finde alle Filme, die keinen Regisseur haben (RegieID ist leer).
Finde alle Filme, die zu einer Reihe gehören (Reihe ist nicht leer).
Finde alle Schauspieler, deren Nachname mit 'B' beginnt.★★
Finde alle Filme, deren Titel 'Star' enthält.★★
Finde alle Schauspieler, deren Vorname mit 'Ma' beginnt.★★
Finde alle Filme, deren Titel mit 'ter' endet.★★
Gib alle Regisseure aus, deren Geburtsjahr mit einer 6 endet.★★
Gib alle Serien aus, deren Name genau zwölf Zeichen lang ist.★★
Gib alle Länder aus, deren Name ein Leerzeichen enthält.★★
Finde alle Filme mit einer Bewertung über 8, die auf Netflix verfügbar sind.★★
Finde alle Schauspieler, die zwischen 1990 und 2000 geboren wurden.★★
Finde alle Schauspieler mit Vornamen 'Chris', 'Christopher', 'John', 'Jon' oder 'Mike'.★★
Finde alle Folgen, die genau 60, 57 oder 54 Minuten lang sind.★★
Finde alle Schauspieler, die in den Siebzigern (1970–1979) geboren wurden.★★
Finde die Titel aller Folgen, die nicht zu 'King of Queens', 'The IT Crowd' oder 'Two and a Half Men' gehören.★★
Finde alle Folgen mit einstelliger Nummer, die nicht in der ersten Staffel sind.★★★
Finde alle Schauspieler, die vor dem Jahr 1970 geboren wurden, aber nicht in New York.★★★
Finde alle Filme aus den Jahren 2018 bis 2022, die länger als 120 Minuten sind.★★★
Kapitel 3

ORDER BY & LIMIT — Sortieren und Begrenzen

Bringe deine Ergebnisse in die richtige Reihenfolge und begrenze die Anzahl der angezeigten Zeilen.

Sortieren mit ORDER BY

Mit ORDER BY sortierst du die Ergebnisse nach einer oder mehreren Spalten:

  • ASC — aufsteigend (Standard, kann weggelassen werden)
  • DESC — absteigend
SELECT spalten FROM tabelle
ORDER BY spalte ASC|DESC
SELECT Titel, Bewertung FROM Film ORDER BY Bewertung DESC
SELECT * FROM Schauspieler ORDER BY Nachname ASC
SELECT * FROM Film ORDER BY Jahr DESC, Bewertung DESC

Ergebnisse begrenzen mit LIMIT

LIMIT begrenzt die Anzahl der zurückgegebenen Zeilen. Besonders nützlich in Kombination mit ORDER BY:

SELECT Titel, Bewertung FROM Film ORDER BY Bewertung DESC LIMIT 5
SELECT * FROM Film ORDER BY Laenge DESC LIMIT 3
Hinweis: LIMIT steht immer ganz am Ende der Abfrage!

Übungen 0 / 10

Zeige alle Filme sortiert nach Bewertung (beste zuerst).
Zeige alle Schauspieler alphabetisch nach Nachname sortiert.
Zeige die 5 am besten bewerteten Filme (Titel und Bewertung).
Zeige die 3 längsten Filme (Titel und Länge).
Zeige die 10 am besten bewerteten Filme (Titel und Bewertung).★★
Zeige die 3 ältesten Regisseure mit Vorname, Nachname und Geburtsjahr.★★
Zeige alle Filme sortiert nach Jahr (neueste zuerst), bei gleichem Jahr nach Bewertung (beste zuerst).★★
Zeige die 5 kürzesten Folgen mit Titel und Länge.★★
Zeige die 3 Serien mit den meisten Staffeln (Name und Staffeln).★★★
Zeige die 5 ältesten Schauspieler mit Vorname, Nachname und Geburtsjahr.★★★
Kapitel 4

Zählen von Daten (COUNT)

Lerne, wie du herausfindest, wie viele Einträge deine Tabellen haben und wie du Duplikate beim Zählen ignorierst.

Zeilen und Werte zählen

Die COUNT() Funktion ist oft die erste, die man braucht:

  • COUNT(*) — zählt einfach alle Zeilen in einer Tabelle.
  • COUNT(DISTINCT spalte) — zählt nur die unterschiedlichen Werte in einer Spalte. Duplikate werden ignoriert.
SELECT COUNT(*) FROM Film
SELECT COUNT(DISTINCT Sprache) FROM Land

Übungen 0 / 20

Wie viele Schauspieler sind in der Datenbank gespeichert?
Wie viele Serien gibt es insgesamt?
Wie viele Folgen sind in der Datenbank?
Wie viele unterschiedliche Sprachen sind in der Tabelle Land gespeichert?★★
Wie viele unterschiedliche Geburtsorte gibt es bei den Schauspielern?★★
Wie viele verschiedene Geburtsjahre gibt es bei den Regisseuren?★★
Zähle alle Serien, die in den USA (LandID 1) gedreht wurden.★★
Wie viele Schauspieler spielen in Hangover 3 mit?★★★
Wie viele Schauspieler wurden in New York geboren?★★★
Wie viele Folgen wurden nach 2015 gedreht?★★★
Wie viele Filme gibt es von Superman oder Star Wars?★★★
Wie viele Schauspieler sind nach oder in 1970 geboren und haben einen Vornamen, der mit M anfängt?★★★
Wie viele Filme sind besser bewertet als 8.0 und dauern länger als zwei Stunden?★★★
Wie viele Regisseure mit verschiedenen Nachnamen sind vor 1950 geboren?★★★
Wie viele verschiedene Regisseure haben Serienfolgen vor dem Jahr 2005 gedreht?★★
Wie viele Schauspieler haben einen Vornamen, der mehr als 4 Buchstaben lang ist?★★★★
Wie viele verschiedene Regisseure haben nach 2016 eine Folge gedreht, die kürzer ist als 50 Minuten?★★★★
Zähle die Anzahl aller verschiedenen Schauspieler, die eine Hauptrolle hatten.★★★★
In wie vielen Folgen, die mit dem Wort 'Die' anfangen, spielt der Schauspieler mit der Nummer 30 mit?★★★★
Wie viele Serien haben eine Bewertung von weniger als 8,5 und zwischen 6 und 10 Staffeln?★★★★
Kapitel 5

Kleinste und größte Werte (MIN & MAX)

Finde die Extreme in der Datenbank.

Minimum und Maximum

Mit diesen Funktionen durchsuchst du eine Spalte nach dem höchsten oder niedrigsten Wert. Das Tolle daran: Sie funktionieren nicht nur bei Zahlen, sondern auch bei Jahreszahlen und sogar bei Texten (alphabetisch sortiert)!

  • MIN(spalte) — findet den kleinsten Wert (z. B. das älteste Jahr, die kleinste Zahl, das erste Wort im Alphabet).
  • MAX(spalte) — findet den größten Wert (z. B. das jüngste Jahr, die größte Zahl, das letzte Wort im Alphabet).
SELECT MIN(GebJahr) FROM Schauspieler
SELECT MAX(Bewertung) FROM Film
SELECT MIN(Name) FROM Land

Übungen 0 / 18

Was ist die höchste Bewertung, die ein Film erhalten hat?
In welchem Jahr wurde der älteste Film gedreht?
Finde das Geburtsjahr des jüngsten Schauspielers.
Was ist die längste Laufzeit einer Folge?
Finde die geringste Einwohnerzahl eines Landes.
Welcher Schauspieler (alphabetisch nach Vorname sortiert) steht ganz als Erstes im Telefonbuch?★★
Was ist die höchste Bewertung einer Serie, die aus den USA (LandID 1) stammt?★★
In welchem Jahr wurde der älteste Schauspieler geboren, der in 'London' geboren wurde?★★
Was ist die maximale Länge eines Films, der im Jahr 2020 erschienen ist?★★
Welche ist die höchste Staffelnummer, die in der Tabelle Folge vorkommt?★★
Finde die geringste Länge eines Films, der besser als 8.0 bewertet ist.★★★
Was ist das jüngste Geburtsjahr eines Regisseurs, dessen Nachname mit 'S' beginnt?★★★
Was ist die längste Laufzeit einer Folge aus der allerersten Staffel einer Serie?★★★
Finde die maximale Anzahl an Filmen, die in einer einzigen Reihe vorkommen.★★★
Welches Land (Name alphabetisch als letztes) hat Englisch als Sprache?★★★
Was ist die schlechteste (niedrigste) Bewertung eines Films, der länger als 150 Minuten dauert und nach 2010 gedreht wurde?★★★★
Was ist das älteste Geburtsjahr eines Schauspielers, dessen Vorname aus exakt 4 Buchstaben besteht?★★★★
Was ist die maximale Folgennummer einer Folge, die kürzer als 45 Minuten ist und von dem Regisseur mit der ID 5 gedreht wurde?★★★★