XP0
SQL — MODUL 02 · FILTER & SORTIERUNG
Klasse 9 · Informatik · Datenbanken

MODUL 02 — FILTER & SORTIERUNG

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

KURZREFERENZ — WAS DU SCHON WEISST

SELECT / FROM / WHERE

SELECT spalten FROM tabelle WHERE bedingung;

AND / OR / NOT

WHERE a AND b WHERE a OR b WHERE NOT a

LIKE / IS NULL

WHERE Titel LIKE '%wort%' WHERE Preis IS NULL WHERE Preis IS NOT NULL
F · BETWEEN — BEREICHSFILTER100 XP

BETWEEN ... AND ... — WERTEBEREICH

BETWEEN prüft, ob ein Wert innerhalb eines Bereichs liegt — inklusive der Grenzen.

Funktioniert mit Zahlen, Jahreszahlen und Datumsangaben.

WHERE Preis BETWEEN 10 AND 20 WHERE Erscheinungsjahr BETWEEN 2000 AND 2020 WHERE DatumAusleihe BETWEEN '2024-09-01' AND '2024-12-31'

Negation: NOT BETWEEN — alles außerhalb des Bereichs.

BEISPIEL — ZAHLEN 0 XP

Bücher, die zwischen 8 und 13 Euro kosten:

AUFGABE F1 +10 XP

Zeige Titel und Erscheinungsjahr aller Bücher, die zwischen 1950 und 2000 erschienen sind.

AUFGABE F2 — NOT BETWEEN +15 XP

Zeige Titel und Preis aller Bücher, die nicht zwischen 9 und 15 Euro kosten — und bei denen ein Preis eingetragen ist.

DATUM

BETWEEN MIT DATUM

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.

WHERE DatumAusleihe BETWEEN '2024-09-01' AND '2024-12-31' WHERE Geburtsdatum >= '2010-01-01'
BEISPIEL — DATUM 0 XP

Alle Ausleihen im September 2024:

AUFGABE F3 — DATUM +15 XP

Zeige alle Ausleihen aus dem 4. Quartal 2024 (Oktober bis Dezember). Zeige AusleiheID, SchuelerID, BuchID und DatumAusleihe.

AUFGABE F4 — GEBURTSTAG +20 XP

Zeige Name und Geburtsdatum aller Schüler, die im Jahr 2009 geboren sind.

G · IN — MENGENLISTE75 XP

IN (...) — AUS EINER LISTE FILTERN

IN prüft, ob ein Wert in einer angegebenen Liste vorkommt. Das ist kürzer und lesbarer als mehrere OR-Bedingungen.

-- statt: WHERE Genre = 'Krimi' OR Genre = 'Fantasy' OR Genre = 'Roman' WHERE Genre IN ('Krimi', 'Fantasy', 'Roman') -- Negation: WHERE Genre NOT IN ('Lyrik', 'Sachbuch')
BEISPIEL 0 XP

Bücher aus den Genres Krimi, Fantasy oder Roman:

AUFGABE G1 +10 XP

Zeige alle Schüler aus den Klassen 9a, 9b und 9c.

AUFGABE G2 — NOT IN +15 XP

Zeige Titel und Genre aller Bücher, die weder Lyrik noch Sachbuch sind.

KOMBINIERT
AUFGABE G3 — IN + AND +20 XP

Zeige Name und Klasse aller Schüler aus den Klassen 10a oder 10b, die nach dem 1.1.2009 geboren sind.

H · ORDER BY & LIMIT125 XP

ORDER BY — SORTIEREN

ORDER BY sortiert das Ergebnis nach einer oder mehreren Spalten.

ASC = aufsteigend (Standard, kann weggelassen werden)  ·  DESC = absteigend

SELECT * FROM Buch ORDER BY Preis; -- aufsteigend SELECT * FROM Buch ORDER BY Preis DESC; -- absteigend SELECT * FROM Buch ORDER BY Genre, Titel; -- erst Genre, dann Titel
BEISPIEL — ORDER BY 0 XP

Bücher nach Erscheinungsjahr sortiert (älteste zuerst):

AUFGABE H1 +10 XP

Zeige Titel und Preis aller Bücher, teuerste zuerst. Bücher ohne Preis sollen trotzdem erscheinen.

AUFGABE H2 — MEHRFACH +15 XP

Zeige alle Bücher sortiert: zuerst nach Genre alphabetisch, innerhalb desselben Genres nach Erscheinungsjahr absteigend.

LIMIT

LIMIT — ERGEBNISSE BEGRENZEN

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

SELECT * FROM Buch LIMIT 5; -- erste 5 SELECT * FROM Buch LIMIT 10; -- erste 10 SELECT * FROM Buch LIMIT 5, 10; -- 5 überspringen, dann 10 anzeigen SELECT * FROM Buch ORDER BY Preis DESC LIMIT 3; -- Top 3 teuerste
BEISPIEL — LIMIT 0 XP

Die 3 neuesten Bücher (höchstes Erscheinungsjahr):

AUFGABE H3 — LIMIT +15 XP

Zeige die 5 günstigsten Bücher (mit Preisangabe), nur Titel und Preis.

PAGINATION

LIMIT offset, n — SEITENNAVIGATION

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: erste 5 Bücher SELECT * FROM Buch ORDER BY Titel LIMIT 5; -- Seite 2: Bücher 6–10 SELECT * FROM Buch ORDER BY Titel LIMIT 5, 5; -- Seite 3: Bücher 11–15 SELECT * FROM Buch ORDER BY Titel LIMIT 10, 5;
BEISPIEL — PAGINATION 0 XP

Seite 1 und Seite 2 der Bücher alphabetisch (je 5 Stück) — beide ausführen und vergleichen:

AUFGABE H4 — PAGINATION +20 XP

Die Bücher sollen alphabetisch nach Titel ausgegeben werden. Zeige die Bücher auf Platz 6 bis 10 (zweite Seite, 5 Einträge).

AUFGABE H5 — ALLES ZUSAMMEN +25 XP

Zeige die 3 teuersten Bücher aus den Genres Roman oder Krimi. Nur Titel, Genre und Preis.

I · AGGREGATFUNKTIONEN150 XP

COUNT, MIN, MAX, AVG — AUSBLICK KLASSE 12

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.

SELECT COUNT(*) -- Anzahl aller Zeilen SELECT COUNT(spalte) -- Anzahl Zeilen, wo spalte NICHT NULL ist SELECT MIN(spalte) -- kleinster Wert SELECT MAX(spalte) -- größter Wert SELECT AVG(spalte) -- Durchschnitt (NULL-Werte werden ignoriert)

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

BEISPIEL — COUNT 0 XP

Wie viele Bücher sind insgesamt in der Datenbank?

AUFGABE K1 — COUNT +10 XP

Wie viele Bücher des Genres Roman gibt es?

AUFGABE K2 — COUNT mit NULL +15 XP

Wie viele Bücher haben einen eingetragenen Preis? (COUNT(spalte) ignoriert NULL-Werte — probiere den Unterschied zu COUNT(*).)

MIN · MAX · AVG

MIN, MAX, AVG — WERTE BERECHNEN

Mehrere Aggregatfunktionen können in einer Abfrage kombiniert werden:

SELECT MIN(Preis), MAX(Preis), AVG(Preis) FROM Buch;

Das ergibt eine Zeile mit drei Werten. AVG rundet nicht automatisch — das Ergebnis kann viele Nachkommastellen haben.

BEISPIEL — MIN / MAX / AVG 0 XP

Günstigstes, teuerstes und durchschnittliches Buch:

AUFGABE K3 — AVG mit WHERE +15 XP

Wie hoch ist der Durchschnittspreis aller Romane?

AUFGABE K4 — DATUM +15 XP

Was war das früheste und das späteste Ausleihdatum in der gesamten Ausleihtabelle?

AUFGABE K5 — KOMBINIERT +20 XP

Wie viele Ausleihen wurden noch nicht zurückgegeben, und welches ist das früheste Ausleihdatum darunter?

ERGEBNIS MODUL 02

Du hast alle Aufgaben der Blöcke F–H und K bearbeitet. Hier ist dein Ergebnis:

0 von 450 XP

ERGEBNIS