In diesem Modul arbeiten wir mit der Datenbank der Schulbibliothek. Sie besteht aus drei Tabellen: Schüler, Bücher und Ausleihen. Alle SQL-Abfragen in diesem Modul laufen direkt im Browser — du brauchst keine Software zu installieren.
Lies das Schema genau — du wirst es in allen Aufgaben brauchen.
| SchuelerID | INTEGER · PK |
| Name | TEXT |
| Klasse | TEXT |
| Geburtsdatum | DATE |
| BuchID | INTEGER · PK |
| Titel | TEXT |
| Autor | TEXT |
| Genre | TEXT |
| Erscheinungsjahr | INTEGER |
| Preis | REAL · NULL möglich |
| AusleiheID | INTEGER · PK |
| SchuelerID | INTEGER · FK |
| BuchID | INTEGER · FK |
| DatumAusleihe | DATE |
| DatumRueckgabe | DATE · NULL möglich |
PK steht für Primary Key. Jede Zeile einer Tabelle bekommt eine eindeutige Nummer — keine zwei Schüler haben dieselbe SchuelerID, kein zwei Bücher dieselbe BuchID. Der Primärschlüssel identifiziert einen Datensatz eindeutig, wie eine Personalausweisnummer.
FK steht für Foreign Key. In der Tabelle Ausleihe steht keine Schülerinfo direkt drin — nur die SchuelerID als Verweis auf die Tabelle Schueler. So werden Tabellen miteinander verknüpft, ohne Daten zu wiederholen.
INTEGER — ganze Zahl (1, 42, 2024)
REAL — Kommazahl (8.50, 14.99) — in SQL immer mit Punkt, nicht Komma
TEXT — Zeichenkette ('Roman', 'Kafka')
DATE — Datum im Format YYYY-MM-DD, z. B. '2024-09-05'
NULL bedeutet: kein Wert vorhanden — nicht 0, nicht leer, sondern unbekannt. Beim Preis bedeutet NULL: Preis nicht erfasst. Bei DatumRueckgabe bedeutet NULL: das Buch ist noch ausgeliehen.
Führe die Abfragen aus, um die Tabellen kennenzulernen. Die Daten stehen dir in allen Modulen zur Verfügung.
Mit SELECT * FROM tabelle holst du alle Spalten und alle Zeilen einer Tabelle. Das * steht für „alles".
Alle Bücher anzeigen:
Zeige alle Schüler an.
Zeige alle Ausleihen an.
Statt * kannst du die gewünschten Spalten einzeln nennen, getrennt durch Kommas. Das nennt man Projektion.
Nur Titel und Autor aller Bücher:
Zeige nur Name und Klasse aller Schüler.
Zeige Titel, Genre und Erscheinungsjahr aller Bücher.
DISTINCT sorgt dafür, dass jeder Wert nur einmal erscheint — auch wenn er mehrfach in der Tabelle vorkommt.
Welche Genres gibt es? (ohne Wiederholungen)
Welche Klassen sind in der Datenbank erfasst? Jeden Wert nur einmal anzeigen.
Mit WHERE gibst du eine Bedingung an. Nur Zeilen, die diese Bedingung erfüllen, erscheinen im Ergebnis. Das nennt man Selektion.
Vergleichsoperatoren: = < > <= >= <> (ungleich)
Text-Werte stehen in einfachen Anführungszeichen: 'Krimi'
Alle Bücher des Genres Krimi:
Zeige alle Bücher des Genres Fantasy.
Zeige Titel und Preis aller Bücher, die weniger als 10 Euro kosten.
<> bedeutet „ist nicht gleich". Damit kannst du einen bestimmten Wert ausschließen.
Alle Bücher außer Lyrik:
Zeige alle Schüler, die nicht in der Klasse 9a sind.
Zeige Titel und Erscheinungsjahr aller Bücher, die nach dem Jahr 2000 erschienen sind.
AND — beide Bedingungen müssen wahr sein
OR — mindestens eine Bedingung muss wahr sein
NOT — kehrt eine Bedingung um (wahr wird falsch, falsch wird wahr)
Klammern ( ) steuern die Reihenfolge — wie in der Mathematik: AND bindet stärker als OR.
Romane, die nach 2000 erschienen:
Zeige alle Bücher des Genres Sachbuch, die nach 1980 erschienen sind.
Zeige alle Bücher, die entweder Krimi oder Fantasy sind.
Alle Bücher, die kein Sachbuch sind:
Zeige alle Schüler, die nicht in der Klasse 10a sind.
Zeige alle Bücher, die ein Roman sind und entweder vor 1950 erschienen oder weniger als 9 Euro kosten.
Mit LIKE kannst du nach Mustern in Texten suchen. Es gibt zwei Platzhalter:
% — steht für beliebig viele Zeichen (auch null)
_ — steht für genau ein beliebiges Zeichen
Alle Bücher, deren Titel mit „Der" beginnt:
Zeige alle Bücher, in deren Titel das Wort „Welt" vorkommt.
Zeige alle Autoren, deren Nachname auf „mann" endet. Zeige nur die Spalte Autor.
Schüler, deren Name mit einem Buchstaben beginnt, gefolgt von „aria" (z. B. Maria, Daria):
Zeige alle Bücher, in deren Titel nicht das Wort „Der" vorkommt.
Zeige alle Bücher, deren Autor mit „F" beginnt und die nach 1960 erschienen sind.
NULL bedeutet: kein Wert vorhanden — nicht 0, nicht leer, einfach unbekannt.
Achtung: WHERE Preis = NULL funktioniert nicht! NULL kann man nur mit IS NULL prüfen.
In unserem Schema: Preis kann NULL sein (kein Preis bekannt), DatumRueckgabe ist NULL solange das Buch noch ausgeliehen ist.
Bücher ohne Preisangabe:
Zeige alle Ausleihen, die noch nicht zurückgegeben wurden (DatumRueckgabe fehlt).
Zeige Titel und Preis aller Bücher, für die ein Preis eingetragen ist.
Zeige alle bereits zurückgegebenen Ausleihen (DatumRueckgabe vorhanden) aus dem Jahr 2024. Zeige SchuelerID, BuchID, DatumAusleihe, DatumRueckgabe.
Du hast alle Aufgaben der Blöcke A–E bearbeitet. Hier ist dein Ergebnis: