🗃️ Visuelle Erklärung

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

Die wichtigste Einsicht für SQL: Die Klauseln einer SELECT-Abfrage werden in dieser logischen Reihenfolge abgearbeitet.
1. FROM➜
2. JOIN➜
3. WHERE➜
4. GROUP BY➜
5. HAVING➜
6. SELECT➜
7. DISTINCT➜
8. ORDER BY➜
9. LIMIT
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“

Vollständig erfunden – Personen, Titel und E-Mail-Adressen (example.org). Sieben Tabellen, bewusst mit ein paar NULLs und Sonderfällen.
✍️
autoren
6 Zeilen · 4 Spalten

Wer hat die Bücher geschrieben? Lucia Moretti hat (noch) kein Buch im Sortiment.

📚
buecher
12 Zeilen · 6 Spalten

Das Sortiment. Ein Volksliederbuch hat keinen bekannten Autor (NULL), ein Titel hat noch keinen Preis und kein Genre.

🧑‍🤝‍🧑
kunden
6 Zeilen · 4 Spalten

Kundschaft des Buchladens. Emil hat nie bestellt, bei Frieda fehlt die Stadt, bei David die E-Mail.

🧾
bestellungen
7 Zeilen · 3 Spalten

Bestellköpfe: wer hat wann bestellt.

📦
positionen
12 Zeilen · 3 Spalten

Bestellpositionen: welches Buch in welcher Menge. Schlüssel aus zwei Spalten.

🗂️
kategorien
9 Zeilen · 3 Spalten

Ein Kategorienbaum: jede Kategorie zeigt auf ihre Elternkategorie (für rekursive CTEs).

👩‍💼
mitarbeiter
6 Zeilen · 5 Spalten

Das Team: chef_id zeigt auf eine andere Zeile derselben Tabelle (für SELF JOIN und Hierarchien).

🧭Kapitel