Die Festivaldatenbank
Mit dieser Datenbank arbeitest du den ganzen Lernpfad über. Es lohnt sich, sie einmal gründlich anzusehen – so, wie man sich in einem fremden Programm zuerst umsieht, bevor man etwas ändert.
Das Datenbankschema
band(band_id, name, gruendungsjahr, herkunftsland)
genre(genre_id, name)
band_genre(band_id, genre_id)
person(person_id, vorname, nachname, geburtsjahr, land)
mitgliedschaft(person_id, band_id, instrument, seit)
buehne(buehne_id, name, kapazitaet, ueberdacht)
auftritt(auftritt_id, band_id, buehne_id, datum, beginn, dauer_min, zuschauer)
besucherin(besucher_id, vorname, nachname, geburtsjahr, plz, email)
ticket(ticket_id, besucher_id, kategorie, preis, kaufdatum)
bewertung(besucher_id, auftritt_id, punkte)
Die jeweils ersten Attribute sind die Primärschlüssel; bei band_genre, mitgliedschaft und bewertung sind es die ersten beiden zusammen.
Und so hängen die Tabellen zusammen:
graph LR
person -->|mitgliedschaft| band
band -->|band_genre| genre
band --> auftritt
buehne --> auftritt
besucherin --> ticket
besucherin -->|bewertung| auftritt
Im Datenbankbaum links in der IDE siehst du dasselbe: alle Tabellen, ihre Spalten, die Datentypen und – hinter den Fremdschlüsseln – auf welche Tabelle sie verweisen. Klapp ihn auf, wann immer du einen Spaltennamen suchst. Das ist schneller als raten.
Umsehen
Setze den Cursor nacheinander in jede der vier Anweisungen und führe sie mit ▷ aus.
a) Wie viele Bands, Bühnen, Auftritte und Genres gibt es?
b) Über wie viele Tage läuft das Festival? Woran erkennst du das?
c) In der Tabelle buehne steht in der Spalte ueberdacht nur 0 oder 1. Was bedeutet das vermutlich, und warum steht dort nicht „ja" und „nein"?
Tipp: Wo steht die Anzahl?
Über der Ergebnistabelle steht 1-22/22 – die Zahl hinter dem Schrägstrich ist die Gesamtzahl. Alternativ zeigt der Datenbankbaum links hinter jedem Tabellennamen die Anzahl der Datensätze.
Eine erste eigene Abfrage
Der Grundaufbau jeder Abfrage sieht so aus:
SELECT spalten -- was soll im Ergebnis stehen?
FROM tabelle -- woher kommen die Zeilen?
WHERE bedingung -- welche Zeilen kommen ins Ergebnis?
Das Ergebnis einer Abfrage ist selbst wieder eine Tabelle. Die ursprüngliche Tabelle bleibt unverändert.
a) Sag zuerst voraus, wie viele Zeilen die Abfrage liefert. Führe sie dann aus.
b) Ändere sie so ab, dass sie alle Bands zeigt, die nicht aus Deutschland kommen.
c) Zeige alle Bühnen mit einer Kapazität über 1000, mit Namen und Kapazität.
d) Zeige alle Auftritte am 19. Juli 2026.
Tipp 1: ungleich
Für „ist nicht gleich" schreibt man in SQL <> (oder !=).
Tipp 2: Texte und Zahlen
Texte stehen in einfachen Anführungszeichen: 'Deutschland'. Zahlen stehen ohne: 1000. Ein Datum wird hier als Text gespeichert, kommt also ebenfalls in Anführungszeichen: '2026-07-19'.
In der Datenbank stehen keine Umlaute – die Bühne heißt Hauptbuehne, das Land Oesterreich. Das ist keine Schlampigkeit, sondern eine bewusste Entscheidung des Festivalteams: Die Daten sollen sich zwischen verschiedenen Systemen austauschen lassen, ohne dass die Zeichenkodierung Ärger macht.
Überlege: Welchen Preis zahlt man dafür? Was passiert, wenn jemand nach Österreich sucht?