Ein Lernspiel, das dir SQL komplett beibringt – von SELECT * bis zu Indizes und Normalisierung.
Gespielt wird in der RPG-Spielwelt aus dem Unterricht (gilden, spieler, gegenstaende, inventar, monster, quests).
Voraussetzung: Python 3.12 oder neuer (unter Windows bei der Installation „Add Python to PATH“ anhaken).
-
Herunterladen – entweder oben auf Code → Download ZIP klicken und entpacken, oder:
git clone https://github.com/temired/sql_quest.git -
Starten – such dir aus, wie du spielen willst (beide nutzen denselben Spielstand):
Windows Terminal 🖥️ Mit Oberfläche (Aufgabe links, SQL-Editor rechts) Doppelklick auf start_web.batpython web.py⌨️ Im Terminal Doppelklick auf start.batpython spielen.pyDie Oberfläche öffnet sich im Browser, läuft aber komplett lokal auf deinem Rechner (auch ohne Internet). Das schwarze Fenster dabei offen lassen – zum Beenden schließen oder Strg+C.
Sonst ist nichts zu installieren, und eine MySQL-Verbindung ist nicht nötig – das Spiel nutzt SQLite,
das in Python eingebaut ist, und versteht die wichtigsten MySQL-Schreibweisen
(AUTO_INCREMENT, SHOW TABLES, DESCRIBE, YEAR(), CONCAT(), LIMIT 10, 5, GROUP_CONCAT(... SEPARATOR ...), ENUM, TRUNCATE ...).
Dein Fortschritt wird automatisch nach jeder gelösten Aufgabe in fortschritt.json gespeichert –
im Spielordner, auf deinem Rechner. Nach dem Beenden oder einem Neustart des PCs geht es genau dort weiter.
- Die Datei wird nicht auf GitHub hochgeladen (steht in
.gitignore) – jeder hat seinen eigenen Spielstand. - Lädst du das Spiel neu herunter, kopiere deine alte
fortschritt.json(undsandbox.db) in den neuen Ordner. - Neu anfangen: im Terminal-Hauptmenü R oder in der Oberfläche über ⚔️ SQL-Quest → „Fortschritt zurücksetzen“.
- 11 Kapitel, jedes mit Lektionen (Theorie → Aufgaben) und einem Bosskampf.
- Du tippst SQL, das Spiel führt es auf einer frischen Datenbank aus und vergleicht das Ergebnis mit der Musterlösung. Es zählt also jede richtige Lösung, nicht nur genau eine Schreibweise.
- XP sammeln, Ränge aufsteigen. Hinweise kosten ein paar XP, die Musterlösung fast alle.
In der Oberfläche: Strg+Enter führt aus, Strg+Shift+Enter gibt ab, Strg+/ kommentiert Zeilen aus.
Links gibt es die Reiter Aufgabe, Theorie und Tabellen (Klick auf einen Spaltennamen fügt ihn in den Editor ein),
unten rechts Ergebnis, Ablauf, Erwartet und Lösung.
🔍 Ablauf: Zeigt für jede SELECT-Abfrage Schritt für Schritt, was die Datenbank macht – in der echten
Ausführungsreihenfolge FROM → JOIN → WHERE → GROUP BY → HAVING → SELECT → ORDER BY → LIMIT, mit Zwischenergebnis.
Rausgefilterte Zeilen sind durchgestrichen, Gruppen eingefärbt, NULL-Auffüllungen beim LEFT JOIN gelb markiert.
Im Terminal: .a SELECT ... Mit 🧪 Sandbox kannst du frei üben, ⚔️ SQL-Quest öffnet die Kapitelübersicht.
Im Terminal:
| Befehl | Wirkung |
|---|---|
.h |
Hinweis |
.e |
erwartetes Ergebnis anzeigen |
.l |
Musterlösung |
.t / .s spieler |
Tabellen / Struktur einer Tabelle |
.p SELECT ... |
etwas ausprobieren, ohne es abzugeben |
.a SELECT ... |
Ablauf Schritt für Schritt anzeigen |
.d |
Inhalt von antwort.sql abgeben (für lange Befehle im Editor) |
.theorie |
Theorie nochmal |
.w / .m |
Aufgabe überspringen / Menü |
| Datei | Zweck |
|---|---|
LEHRPLAN.md |
Was in welchem Kapitel drankommt (vollständige Themenliste) |
SPICKZETTEL.md |
Alle Befehle kompakt zum Nachschlagen |
antwort.sql |
Dein Notizblock für lange Abfragen → im Spiel .d |
sandbox.db |
Deine freie Spielwiese (Menü → S), bleibt gespeichert |
fortschritt.json |
Dein Spielstand |
daten/welt.sql |
Die Spielwelt (Daten des Lehrers + 3 gildenlose Spieler, 1 Gegenstand ohne Wert, 1 Quest ohne Monster für NULL-Übungen) |
web.py, web/ |
Die Oberfläche (lokaler Mini-Server + Webseite, nur Python-Standardbibliothek) |
test_loesungen.py |
Selbsttest: prüft, dass alle Musterlösungen funktionieren |
Im Spiel stehen sie als lila MySQL ▸ Hinweise direkt in der Theorie. Die wichtigsten:
7 / 2 ist hier 3 (MySQL: 3.5), ALTER TABLE ... MODIFY gibt es nicht, und || ist in MySQL ein ODER (dort CONCAT benutzen).