In Modul 01 hast du gelernt, Zeilen mit WHERE, logischen Operatoren und LIKE zu filtern. Jetzt kommen drei weitere, sehr praktische Werkzeuge:
F · BETWEEN — Werte in einem Bereich abfragen (Zahlen und Datumsangaben)
G · IN — aus einer Liste von Werten filtern
H · ORDER BY & LIMIT — Ergebnisse sortieren und begrenzen
Dieselbe Datenbank wie in Modul 01: Schueler · Buch · Ausleihe
BETWEEN prüft, ob ein Wert innerhalb eines Bereichs liegt — inklusive der Grenzen.
Funktioniert mit Zahlen, Jahreszahlen und Datumsangaben.
Negation: NOT BETWEEN — alles außerhalb des Bereichs.
Bücher, die zwischen 8 und 13 Euro kosten:
Zeige Titel und Erscheinungsjahr aller Bücher, die zwischen 1950 und 2000 erschienen sind.
Zeige Titel und Preis aller Bücher, die nicht zwischen 9 und 15 Euro kosten — und bei denen ein Preis eingetragen ist.
Datumsangaben in SQLite sind Texte im Format YYYY-MM-DD. Der Vergleich funktioniert alphabetisch — was zufällig auch chronologisch korrekt ist, solange das Format einheitlich ist.
Alle Ausleihen im September 2024:
Zeige alle Ausleihen aus dem 4. Quartal 2024 (Oktober bis Dezember). Zeige AusleiheID, SchuelerID, BuchID und DatumAusleihe.
Zeige Name und Geburtsdatum aller Schüler, die im Jahr 2009 geboren sind.
IN prüft, ob ein Wert in einer angegebenen Liste vorkommt. Das ist kürzer und lesbarer als mehrere OR-Bedingungen.
Bücher aus den Genres Krimi, Fantasy oder Roman:
Zeige alle Schüler aus den Klassen 9a, 9b und 9c.
Zeige Titel und Genre aller Bücher, die weder Lyrik noch Sachbuch sind.
Zeige Name und Klasse aller Schüler aus den Klassen 10a oder 10b, die nach dem 1.1.2009 geboren sind.
ORDER BY sortiert das Ergebnis nach einer oder mehreren Spalten.
ASC = aufsteigend (Standard, kann weggelassen werden) · DESC = absteigend
Bücher nach Erscheinungsjahr sortiert (älteste zuerst):
Zeige Titel und Preis aller Bücher, teuerste zuerst. Bücher ohne Preis sollen trotzdem erscheinen.
Zeige alle Bücher sortiert: zuerst nach Genre alphabetisch, innerhalb desselben Genres nach Erscheinungsjahr absteigend.
LIMIT n gibt nur die ersten n Zeilen zurück.
LIMIT offset, n überspringt offset Zeilen und gibt dann n Zeilen zurück — nützlich für Seiten-Navigation (Pagination).
Die 3 neuesten Bücher (höchstes Erscheinungsjahr):
Zeige die 5 günstigsten Bücher (mit Preisangabe), nur Titel und Preis.
Stell dir vor, eine Suchanfrage liefert 50 Bücher — du willst Seite 2 anzeigen (Bücher 6–10). Mit LIMIT 5, 5 springst du 5 Zeilen vor und holst die nächsten 5.
Seite 1 und Seite 2 der Bücher alphabetisch (je 5 Stück) — beide ausführen und vergleichen:
Die Bücher sollen alphabetisch nach Titel ausgegeben werden. Zeige die Bücher auf Platz 6 bis 10 (zweite Seite, 5 Einträge).
Zeige die 3 teuersten Bücher aus den Genres Roman oder Krimi. Nur Titel, Genre und Preis.
Aggregatfunktionen berechnen einen einzelnen Wert aus mehreren Zeilen. Ohne GROUP BY gilt die Berechnung immer für alle gefilterten Zeilen — das Ergebnis ist genau eine Zeile mit einer Zahl.
Kombinierbar mit WHERE — dann zählt/berechnet die Funktion nur die gefilterten Zeilen.
⚠ In Klasse 12 kommt GROUP BY dazu — dann kann man z.B. den Durchschnittspreis pro Genre berechnen. Heute: immer die ganze Tabelle (oder einen WHERE-gefilterten Teil).
Wie viele Bücher sind insgesamt in der Datenbank?
Wie viele Bücher des Genres Roman gibt es?
Wie viele Bücher haben einen eingetragenen Preis? (COUNT(spalte) ignoriert NULL-Werte — probiere den Unterschied zu COUNT(*).)
Mehrere Aggregatfunktionen können in einer Abfrage kombiniert werden:
Das ergibt eine Zeile mit drei Werten. AVG rundet nicht automatisch — das Ergebnis kann viele Nachkommastellen haben.
Günstigstes, teuerstes und durchschnittliches Buch:
Wie hoch ist der Durchschnittspreis aller Romane?
Was war das früheste und das späteste Ausleihdatum in der gesamten Ausleihtabelle?
Wie viele Ausleihen wurden noch nicht zurückgegeben, und welches ist das früheste Ausleihdatum darunter?
Du hast alle Aufgaben der Blöcke F–H und K bearbeitet. Hier ist dein Ergebnis: