SQL – die Sprache der Tabellen
Datenbankunabhängig, mit Standard-SQL und Hinweisen auf die Dialekte: vom relationalen Modell über JOINs, NULL-Logik und Gruppierung bis zu Window Functions, rekursiven CTEs, Transaktionen und Indizes. Jede Abfrage läuft in einer echten SQL-Engine direkt im Browser.
🪜Geschrieben wird anders, als ausgeführt wird
SELECT genre, COUNT(*) AS anzahl -- 6. FROM buecher -- 1. WHERE preis < 30 -- 3. GROUP BY genre -- 4. HAVING COUNT(*) >= 2 -- 5. ORDER BY anzahl DESC; -- 8.
Deshalb kennt WHERE noch keine Spalten-Aliase aus dem SELECT, deshalb dürfen Aggregatfunktionen nicht ins WHERE, und deshalb darf ORDER BY den Alias anzahl benutzen.
Im Debugger siehst du nach jeder Stufe die Zwischentabelle – berechnet von einer eigenen Lern-Engine, deren Ergebnisse die Tests mit SQLite abgleichen.
📚Die Beispieldatenbank: Buchladen „Seitenwind“
Wer hat die Bücher geschrieben? Lucia Moretti hat (noch) kein Buch im Sortiment.
Das Sortiment. Ein Volksliederbuch hat keinen bekannten Autor (NULL), ein Titel hat noch keinen Preis und kein Genre.
Kundschaft des Buchladens. Emil hat nie bestellt, bei Frieda fehlt die Stadt, bei David die E-Mail.
Bestellköpfe: wer hat wann bestellt.
Bestellpositionen: welches Buch in welcher Menge. Schlüssel aus zwei Spalten.
Ein Kategorienbaum: jede Kategorie zeigt auf ihre Elternkategorie (für rekursive CTEs).
Das Team: chef_id zeigt auf eine andere Zeile derselben Tabelle (für SELF JOIN und Hierarchien).
🧭Kapitel
Relationales Modell
Tabellen, PK, FK, UNIQUE, ER-Diagramm und Normalisierung 0NF → 3NF → BCNF mit berechneter Prüfung.
SQL-Spielplatz
Echtes SQLite im Browser: Editor, Ergebnis, verständliche Fehler, Beispielabfragen.
Ausführungsreihenfolge
FROM bis LIMIT als Debugger – jede Zwischentabelle vor und zurück.
JOINs visuell
Zeilenpaarung statt Venn: INNER, LEFT, RIGHT, FULL, CROSS, SELF, Semi, Anti.
NULL-Logik
TRUE, FALSE, UNKNOWN – Wahrheitstabellen und die NOT-IN-Falle.
GROUP BY
Zeilen wandern animiert in Gruppen, Aggregate, HAVING.
Window Functions
ROW_NUMBER, RANK, SUM OVER – mit sichtbarem Fensterrahmen.
Subqueries & CTEs
Unterabfragen, WITH und rekursive CTE Runde für Runde.
DDL & DML
CREATE, ALTER, INSERT, UPDATE, DELETE, UPSERT mit Vorher/Nachher.
Transaktionen
ACID und Isolationslevel: Dirty, Non-repeatable und Phantom Read als Zeitleiste.
Indizes & EXPLAIN
B+-Baum-Suche und echte Ausführungspläne: SCAN oder SEARCH?
SQL-Injection
' OR '1'='1 live – und warum Prepared Statements schützen.
24 Übungsaufgaben
Vom ersten SELECT bis zur rekursiven CTE, automatisch geprüft.
Spickzettel
Bausteine und Dialekt-Unterschiede von PostgreSQL bis SQLite.