SQL Basic Kurs
Von Elyndra Valen, Senior Entwicklerin bei Java Fleet Systems Consulting
🗺️ Deine Position im Kurs
| Tag | Thema | Status |
|---|---|---|
| 1 | Warum Datenbanken? | ✅ Abgeschlossen |
| 2 | Das relationale Modell | ✅ Abgeschlossen |
| 3 | Schlüssel & Beziehungen | ✅ Abgeschlossen |
| → 4 | Tabellen erstellen & Daten pflegen | 👉 DU BIST HIER! |
| 5 | SELECT – Deine erste Abfrage | 🔜 Kommt als nächstes |
| 6 | Filtern und Sortieren | 🔒 Noch nicht freigeschaltet |
| 7 | Gruppieren und Auswerten | 🔒 Noch nicht freigeschaltet |
| 8 | JOINs – Tabellen verbinden | 🔒 Noch nicht freigeschaltet |
| 9 | Views und Ausblick | 🔒 Noch nicht freigeschaltet |
| 10 | Zusammenfassung & Projekt | 🔒 Noch nicht freigeschaltet |
Modul: SQL Basic
Gesamt-Dauer: 10 Kurstage
Dein Ziel: Deinen ersten SQL-Code schreiben – Tabellen erstellen und Daten einfügen!
📋 Voraussetzungen für diesen Tag
Du brauchst:
- ✅ Tag 1-3 abgeschlossen
- ✅ Du verstehst Primär- und Fremdschlüssel
- ✅ Du kennst die versandhandel-Datenbank
- ✅ XAMPP ist gestartet (Anleitung gleich!)
Fragen?
Schreib uns: elyndra.valen@java-developer.online
🖥️ Deine Arbeitsumgebung: XAMPP & phpMyAdmin
Bevor wir loslegen, starten wir deine Datenbank!
Auf deinem Kurs-Computer ist XAMPP vorinstalliert. XAMPP bringt alles mit:
- Apache – ein Webserver (brauchen wir für phpMyAdmin)
- MariaDB 10.4 – unsere Datenbank
- phpMyAdmin – die Oberfläche, über die wir SQL eingeben
Schritt 1: XAMPP starten
- Öffne das XAMPP Control Panel (findest du im Startmenü oder auf dem Desktop)
- Klicke bei Apache auf Start
- Klicke bei MySQL auf Start (das startet MariaDB)
- Beide Zeilen sollten jetzt grün hinterlegt sein
So sieht es aus wenn alles läuft:
┌─────────────────────────────────────────────┐ │ Module Service PID Port Actions│ ├─────────────────────────────────────────────┤ │ Apache ✓ Running 1234 80 [Stop] │ │ MySQL ✓ Running 5678 3306 [Stop] │ │ FileZilla [Start]│ │ Mercury [Start]│ └─────────────────────────────────────────────┘
Schritt 2: phpMyAdmin öffnen
- Öffne deinen Browser (Chrome, Firefox, Edge…)
- Gib in die Adresszeile ein:
localhost/phpmyadmin - Drücke Enter
Du siehst jetzt die phpMyAdmin-Oberfläche – dein „Cockpit“ für die Datenbank!
Schritt 3: Die versandhandel-Datenbank importieren
Dein Dozent hat dir die Datei versandhandel.sql gegeben. So importierst du sie:
- Klicke links auf „Neu“ (oder „New“)
- Gib als Datenbankname ein: versandhandel
- Klicke „Anlegen“ (oder „Create“)
- Klicke oben auf „Importieren“ (oder „Import“)
- Klicke „Datei auswählen“ und wähle
versandhandel.sql - Scrolle runter und klicke „Importieren“
Fertig! Links siehst du jetzt die Datenbank versandhandel mit den 5 Tabellen.
Schritt 4: SQL eingeben
- Klicke links auf versandhandel
- Klicke oben auf den Tab „SQL“
- Du siehst ein großes Textfeld – hier tippst du deine SQL-Befehle ein
- Klicke „OK“ oder drücke Strg+Enter um auszuführen
Das ist dein SQL-Spielplatz für die nächsten Tage!
Troubleshooting XAMPP
Problem: Apache startet nicht (Port 80 belegt) Lösung: Skype oder ein anderes Programm blockiert den Port. Schließe Skype oder ändere den Apache-Port in XAMPP.
Problem: MySQL startet nicht Lösung: Eventuell läuft schon eine andere MySQL-Installation. Beende sie im Task-Manager.
Problem: „localhost/phpmyadmin“ zeigt Fehler Lösung: Ist Apache gestartet? Die grüne Markierung muss sichtbar sein.
🔄 Kurzwiederholung: Lösung der Challenge von Tag 3
Erinnerst du dich an die Aufgaben zur adressen-Datenbank?
1. Was sind die Primärschlüssel?
- Tabelle
person: PERSID - Tabelle
adressen: ADRESID
2. Personen mit Adressen in „Bad“-Städten:
SELECT person.FIRSTNAME, person.LASTNAME, adressen.stadt, adressen.STREET FROM person, adressen WHERE person.PERSID = adressen.PERSID AND adressen.stadt LIKE 'Bad%';
3. Wie viele Adressen hat Person 1?
Schau in die adressen-Tabelle: PERSID = 1 kommt 5 Mal vor (Zeilen 1-5). Bruno Hoffmann hat also 5 Adressen!
4. Warum kann eine Person mehrere Adressen haben?
Das ist eine 1:n-Beziehung (eins-zu-viele):
- Eine Person kann viele Adressen haben (Haupt-, Neben-, Ferienwohnung…)
- Aber jede Adresse gehört genau einer Person (der Fremdschlüssel PERSID in adressen zeigt auf genau eine Person)
Der Fremdschlüssel ist auf der „viele“-Seite (in adressen), nicht auf der „eins“-Seite (in person).
⚡ Das Wichtigste in 30 Sekunden
Heute lernst du:
- ✅ CREATE TABLE – eine Tabelle erstellen
- ✅ Datentypen – welcher Typ für welche Daten?
- ✅ INSERT – Daten einfügen
- ✅ UPDATE – Daten ändern
- ✅ DELETE – Daten löschen
Am Ende des Tages kannst du: Selbst eine Tabelle erstellen und Daten einfügen, ändern und löschen!
Schwierigkeitsgrad: 🟡 Mittel (erstes echtes SQL!)
Hi! 👋
Willkommen zu Tag 4 – ab heute wird’s praktisch! 🎉
Die letzten drei Tage waren Theorie: Warum Datenbanken, wie sind sie aufgebaut, wie hängen Tabellen zusammen. Wichtiges Fundament!
Heute schreibst du deinen ersten echten SQL-Code. Du wirst:
- Eine Tabelle aus dem Nichts erschaffen
- Daten einfügen
- Daten ändern
- Daten löschen
Keine Angst: SQL ist keine Raketenwissenschaft. Die Befehle lesen sich fast wie englische Sätze.
Los geht’s! 🚀

🟢 GRUNDLAGEN: Deine erste Tabelle
CREATE TABLE – Eine Tabelle erschaffen
So erstellst du eine neue Tabelle:
CREATE TABLE kunden (
kunden_id INT PRIMARY KEY AUTO_INCREMENT,
name VARCHAR(255) NOT NULL,
vorname VARCHAR(255) NOT NULL,
strasse VARCHAR(255),
stadt VARCHAR(255),
plz VARCHAR(10)
);
Wow, das sieht kompliziert aus!
Lass uns das Zeile für Zeile durchgehen:
Zeile 1: CREATE TABLE kunden (
CREATE TABLE= „Erstelle eine Tabelle“kunden= der Name der Tabelle(= jetzt kommen die Spalten
Zeile 2: kunden_id INT PRIMARY KEY AUTO_INCREMENT,
kunden_id= Name der SpalteINT= Datentyp: Ganze ZahlPRIMARY KEY= Das ist der Primärschlüssel!AUTO_INCREMENT= Die Datenbank zählt automatisch hoch (1, 2, 3, …),= es kommt noch mehr
Zeile 3: name VARCHAR(255) NOT NULL,
name= Name der SpalteVARCHAR(255)= Text mit maximal 255 ZeichenNOT NULL= Pflichtfeld! Darf nicht leer sein
Zeile 4-6: Weitere Spalten nach demselben Muster
Zeile 7: );
)= Ende der Spaltenliste;= Ende des Befehls
Die wichtigsten Datentypen
Jede Spalte braucht einen Datentyp. Hier die wichtigsten:

Wichtig für Geld: Benutze DECIMAL, nicht FLOAT! Bei Geldbeträgen können Rundungsfehler bei FLOAT zu Problemen führen.
Constraints – Die Regeln
Constraints sind Regeln für die Daten:
| Constraint | Bedeutung | Beispiel |
|---|---|---|
PRIMARY KEY | Primärschlüssel | Eindeutige ID |
NOT NULL | Darf nicht leer sein | Name ist Pflicht |
UNIQUE | Kein Wert darf doppelt vorkommen | E-Mail-Adresse |
DEFAULT | Standardwert wenn nichts angegeben | Status = ‚aktiv‘ |
FOREIGN KEY | Fremdschlüssel | Verweis auf andere Tabelle |
Beispiel mit Fremdschlüssel:
CREATE TABLE bestellungen (
bestellungen_id INT PRIMARY KEY AUTO_INCREMENT,
kunden_id INT NOT NULL,
datum TIMESTAMP DEFAULT CURRENT_TIMESTAMP,
FOREIGN KEY (kunden_id) REFERENCES kunden(kunden_id)
);
Die letzte Zeile sagt: „kunden_id verweist auf die Spalte kunden_id in der Tabelle kunden.“
🟡 PROFESSIONALS: Daten einfügen, ändern, löschen
INSERT – Daten einfügen
So fügst du einen neuen Kunden ein:
INSERT INTO kunden (name, vorname, strasse, stadt, plz)
VALUES ('Schmidt', 'Laura', 'Hauptstr. 42', 'Köln', '50667');
Was passiert hier?
INSERT INTO kunden= „Füge in die Tabelle kunden ein“(name, vorname, ...)= in diese SpaltenVALUES (...)= diese Werte
Wichtig:
- Texte stehen in einfachen Anführungszeichen:
'Köln' - Die
kunden_idlassen wir weg – die zählt automatisch hoch (AUTO_INCREMENT)!
Mehrere Zeilen auf einmal:
INSERT INTO kunden (name, vorname, stadt, plz)
VALUES
('Müller', 'Anna', 'Berlin', '10115'),
('Weber', 'Thomas', 'Hamburg', '20095'),
('Fischer', 'Lisa', 'München', '80331');
UPDATE – Daten ändern
Ein Kunde ist umgezogen:
UPDATE kunden SET stadt = 'Hamburg', strasse = 'Neuer Weg 5' WHERE kunden_id = 1;
Was passiert hier?
UPDATE kunden= „Ändere in der Tabelle kunden“SET stadt = 'Hamburg'= setze die Stadt auf HamburgWHERE kunden_id = 1= aber NUR bei Kunde 1!
⚠️ WARNUNG: Niemals WHERE vergessen!
-- GEFÄHRLICH! Ändert ALLE Kunden! UPDATE kunden SET stadt = 'Hamburg';

Ohne WHERE werden ALLE Zeilen geändert! Das willst du nicht.
DELETE – Daten löschen
Ein Produkt wird aus dem Sortiment genommen:
DELETE FROM produkte WHERE produkte_id = 5;
Was passiert hier?
DELETE FROM produkte= „Lösche aus der Tabelle produkte“WHERE produkte_id = 5= aber NUR Produkt 5!
⚠️ WARNUNG: Niemals WHERE vergessen!
-- KATASTROPHE! Löscht ALLE Produkte! DELETE FROM produkte;
Ohne WHERE werden ALLE Zeilen gelöscht! Die Tabelle ist danach leer.
Merksatz: Bei UPDATE und DELETE immer erst das WHERE schreiben, dann den Rest!
Die Grundstruktur merken
| Aktion | SQL-Befehl | Struktur |
|---|---|---|
| Einfügen | INSERT | INSERT INTO tabelle (spalten) VALUES (werte); |
| Ändern | UPDATE | UPDATE tabelle SET spalte = wert WHERE bedingung; |
| Löschen | DELETE | DELETE FROM tabelle WHERE bedingung; |
🔵 BONUS: Transaktionen – Alles oder nichts
Optional: Für Neugierige.
Was passiert, wenn du mehrere Befehle ausführst und mittendrin ein Fehler passiert?
Beispiel: Du willst 100€ von Konto A nach Konto B überweisen.
- Ziehe 100€ von Konto A ab
- (Hier stürzt der Server ab)
- Füge 100€ zu Konto B hinzu
Problem: Das Geld ist von A weg, aber nie bei B angekommen!
Lösung: Transaktionen
START TRANSACTION; UPDATE konten SET saldo = saldo - 100 WHERE konto_id = 'A'; UPDATE konten SET saldo = saldo + 100 WHERE konto_id = 'B'; COMMIT;
START TRANSACTION= „Ab jetzt bitte alles merken“COMMIT= „Alles hat geklappt, speichere es dauerhaft“
Wenn etwas schiefgeht:
ROLLBACK;
ROLLBACK= „Vergiss alles seit START TRANSACTION“
So wird entweder ALLES ausgeführt oder NICHTS. Kein Zwischenzustand.
💬 Real Talk: Nova’s erster INSERT
Java Fleet Büro, Schulungsraum. Nova sitzt am Laptop, Elyndra schaut über die Schulter.
Nova: „Okay, ich probier’s mal. INSERT INTO kunden… Moment, was kommt nach VALUES?“
Elyndra: „Die Werte in der gleichen Reihenfolge wie die Spalten, die du oben angegeben hast.“
Nova: (tippt)
INSERT INTO kunden (name, vorname, stadt)
VALUES ('Trent', 'Nova', 'Berlin');
Elyndra: „Sieht gut aus. Ausführen!“
Nova: (klickt) „Oh! ‚Query OK, 1 row affected.‘ Hat geklappt?“
Elyndra: „Genau. Eine Zeile wurde eingefügt. Herzlichen Glückwunsch zu deinem ersten INSERT!“
Nova: „Nice! Und was ist meine kunden_id?“
Elyndra: „Die hat die Datenbank automatisch vergeben. AUTO_INCREMENT, erinnerst du dich? Wahrscheinlich die nächste freie Nummer.“
Tom: (kommt rein) „Was macht ihr?“
Nova: „Ich hab mich gerade selbst in die Datenbank eingetragen!“
Tom: „Cool! Kann ich auch?“
Elyndra: „Klar. Aber denk dran: Texte in Anführungszeichen. Und am Ende ein Semikolon.“
Tom: (tippt)
INSERT INTO kunden (name, vorname, stadt) VALUES (Fischer, Tom, Hamburg)
Tom: „Fehler: ‚Unknown column Fischer’… Was?“
Elyndra: „Anführungszeichen vergessen! Ohne Anführungszeichen denkt die Datenbank, Fischer ist eine Spalte, nicht ein Text.“
Tom: „Ah! Also 'Fischer' mit Anführungszeichen?“
Elyndra: „Genau. Typischer Anfängerfehler. Passiert jedem einmal.“
✅ Checkpoint: Hast du es verstanden?
Bevor du weitermachst, teste dein Wissen:
Quiz:
Frage 1: Welchen Datentyp würdest du für einen Preis verwenden? (z.B. 19.99€)
Frage 2: Was bedeutet AUTO_INCREMENT bei einem Primärschlüssel?
Frage 3: Was ist der Unterschied zwischen VARCHAR(50) und VARCHAR(255)?
Frage 4: Warum ist es gefährlich, UPDATE oder DELETE ohne WHERE auszuführen?
Frage 5: Schreibe einen INSERT-Befehl, der ein Produkt „USB-Kabel“ mit Preis 9.99 und Lagerbestand 100 einfügt.
Mini-Challenge:
Aufgabe:
Schreibe SQL-Befehle für folgende Aktionen in der versandhandel-Datenbank:
- Füge einen neuen Kunden ein:
- Name: Bauer, Vorname: Max
- Straße: Waldweg 7, Stadt: Frankfurt, PLZ: 60311
- Füge ein neues Produkt ein:
- Artikel: „Webcam HD“, Preis: 49.99, Lagerbestand: 75
- Ändere den Lagerbestand von Produkt mit ID 3: Erhöhe ihn um 25 Stück.
- Ändere die Stadt des Kunden mit ID 2 auf „Düsseldorf“.
- Lösche das Produkt mit ID 10 (angenommen, es gibt keine Bestellungen dafür).
Tipp: Achte auf Anführungszeichen bei Texten und vergiss das WHERE nicht!
Lösung:
Wir besprechen die Lösung am Anfang von Tag 5!
❓ Häufig gestellte Fragen
Frage 1: Muss ich die Spalten bei INSERT immer angeben?
Du kannst sie weglassen, aber dann musst du ALLE Spalten in der richtigen Reihenfolge befüllen:
INSERT INTO kunden VALUES (NULL, 'Müller', 'Anna', 'Hauptstr. 1', 'Berlin', '10115');
Das NULL steht für die AUTO_INCREMENT-ID. Besser: Spalten explizit angeben!
Frage 2: Kann ich mehrere Spalten gleichzeitig mit UPDATE ändern?
Ja! Trenne sie mit Komma:
UPDATE kunden SET stadt = 'Köln', plz = '50667' WHERE kunden_id = 1;
Frage 3: Was passiert, wenn ich einen Wert einfüge, der zu lang ist?
Wenn du in VARCHAR(10) einen 20-Zeichen-Text einfügst, wird er abgeschnitten oder du bekommst einen Fehler (je nach Datenbankeinstellung). Plane deine Feldlängen großzügig!
Frage 4: Kann ich einen DELETE rückgängig machen?
Nur wenn du eine Transaktion benutzt und noch kein COMMIT gemacht hast. Sonst: Nein! Deshalb immer vorsichtig mit DELETE. Am besten erst mit SELECT prüfen, was gelöscht würde:
SELECT * FROM produkte WHERE produkte_id = 5; -- Erst schauen DELETE FROM produkte WHERE produkte_id = 5; -- Dann löschen
Frage 5: Was bedeutet DEFAULT CURRENT_TIMESTAMP?
Wenn du keinen Wert angibst, wird automatisch das aktuelle Datum/Uhrzeit eingetragen. Praktisch für „Erstellt am“-Spalten!
Frage 6: Kann ich eine Tabelle nachträglich ändern?
Ja, mit ALTER TABLE:
ALTER TABLE kunden ADD email VARCHAR(255); -- Neue Spalte ALTER TABLE kunden DROP COLUMN email; -- Spalte löschen
Frage 7: Tom hat gefragt, ob man mit DELETE auch „ein bisschen löschen“ kann. Was meinst du?
Lol, nein. DELETE löscht ganze Zeilen, nicht einzelne Werte. Wenn du nur einen Wert „löschen“ willst, benutze UPDATE und setze ihn auf NULL:
UPDATE kunden SET strasse = NULL WHERE kunden_id = 1;
Real talk: DELETE ist binär – die Zeile ist da oder sie ist weg. Kein Mittelding.
📚 Quiz-Lösungen
Hier sind die Antworten zum Quiz von oben:
Frage 1: Welchen Datentyp würdest du für einen Preis verwenden? (z.B. 19.99€)
Antwort:
DECIMAL(10,2) oder DECIMAL(8,2)
DECIMALspeichert exakte Dezimalzahlen ohne Rundungsfehler(10,2)bedeutet: maximal 10 Stellen insgesamt, davon 2 Nachkommastellen- Also Werte bis 99.999.999,99 möglich
Niemals FLOAT oder DOUBLE für Geldbeträge! Diese Typen können Rundungsfehler haben.
Frage 2: Was bedeutet AUTO_INCREMENT bei einem Primärschlüssel?
Antwort:
Die Datenbank vergibt automatisch die nächste freie Nummer.
- Erster Datensatz bekommt ID 1
- Nächster bekommt ID 2
- Usw.
Du musst dich nicht selbst darum kümmern, welche ID als nächstes dran ist.
Frage 3: Was ist der Unterschied zwischen VARCHAR(50) und VARCHAR(255)?
Antwort:
Die maximale Länge des Textes:
VARCHAR(50)= maximal 50 ZeichenVARCHAR(255)= maximal 255 Zeichen
Beide speichern nur so viel Platz, wie tatsächlich gebraucht wird. Ein Name mit 10 Buchstaben braucht 10 Bytes, egal ob VARCHAR(50) oder VARCHAR(255).
Trotzdem: Wähle sinnvolle Limits. Eine PLZ braucht keine 255 Zeichen.
Frage 4: Warum ist es gefährlich, UPDATE oder DELETE ohne WHERE auszuführen?
Antwort:
Ohne WHERE betrifft der Befehl ALLE Zeilen der Tabelle!
UPDATE kunden SET stadt = 'Berlin'→ ALLE Kunden wohnen jetzt in BerlinDELETE FROM kunden→ ALLE Kunden werden gelöscht
Das ist fast nie gewollt und kann zu massivem Datenverlust führen.
Tipp: Erst WHERE schreiben, dann den Rest!
Frage 5: Schreibe einen INSERT-Befehl, der ein Produkt „USB-Kabel“ mit Preis 9.99 und Lagerbestand 100 einfügt.
Antwort:
INSERT INTO produkte (artikel, preis, lagerbestand)
VALUES ('USB-Kabel', 9.99, 100);
Beachte:
'USB-Kabel'in Anführungszeichen (Text)9.99und100ohne Anführungszeichen (Zahlen)produkte_idwird weggelassen (AUTO_INCREMENT)
🎉 Tag 4 geschafft!
Boom! Du hast deinen ersten SQL-Code geschrieben! 🚀
Das hast du heute gelernt:
- ✅ CREATE TABLE – Tabellen erstellen
- ✅ Datentypen richtig wählen
- ✅ INSERT – Daten einfügen
- ✅ UPDATE – Daten ändern (mit WHERE!)
- ✅ DELETE – Daten löschen (mit WHERE!)
Du kannst jetzt: Selbständig Tabellen erstellen und Daten pflegen. Das ist echtes, produktives SQL!
Honestly? Du hast gerade die Grundlagen von DDL (Data Definition Language) und DML (Data Manipulation Language) gelernt. Das sind zwei der vier großen SQL-Kategorien. Ab morgen kommt die dritte: Abfragen mit SELECT! 💪
Wie geht’s weiter?
Morgen (Tag 5): SELECT – Deine erste Abfrage
Was dich erwartet:
- SELECT * FROM – Alle Daten anzeigen
- Nur bestimmte Spalten auswählen
- Spalten umbenennen mit AS
- Berechnungen in Abfragen
- Das ist der Befehl, den du am häufigsten nutzen wirst! 🔥
Brauchst du eine Pause?
Du hast es dir verdient! Vier Tage geschafft, das Fundament steht.
Tipp für heute:
Probiere die Befehle in phpMyAdmin aus! Öffne den SQL-Tab und tippe ein paar INSERT-Befehle. Mach ruhig Fehler – davon lernt man am meisten. Die versandhandel-Datenbank kannst du jederzeit neu importieren, falls du sie „kaputt“ machst.
🛠️ Troubleshooting
Problem: „Ich bekomme einen Syntaxfehler.“
Lösung: Häufige Ursachen:
- Semikolon am Ende vergessen
- Anführungszeichen bei Text vergessen
- Komma zwischen Spalten vergessen
- Klammer nicht geschlossen
Problem: „INSERT funktioniert nicht – ‚foreign key constraint fails‘.“
Lösung: Du versuchst, einen Fremdschlüssel einzufügen, der in der referenzierten Tabelle nicht existiert. Beispiel: kunden_id: 99 einfügen, aber es gibt keinen Kunden mit ID 99.
Problem: „Ich habe aus Versehen alle Daten gelöscht!“
Lösung: Wenn du kein Backup hast und keine Transaktion offen war: Die Daten sind weg. Deshalb: Immer erst mit SELECT prüfen, was betroffen wäre, bevor du DELETE ausführst!
📖 Im Buch nachlesen
Mehr Details zu den heutigen Themen findest du in:
Kapitel 5: Datendefinition (DDL)
- 5.4 CREATE DATABASE, CREATE TABLE
- 5.5 Datentypen
- 5.6 Constraints
Kapitel 7: Datenmanipulation (DML)
- 7.4.1 INSERT
- 7.4.2 UPDATE
- 7.4.3 DELETE
- 7.4.4 Transaktionen
SQL Ressourcen & Weiterführende Links
Elyndra’s Schatzkiste – Alles, was du für deinen SQL-Lernweg brauchst
🎮 Interaktive Übungsplattformen
Übung macht den Meister. Diese Plattformen lassen dich SQL direkt im Browser ausprobieren – ohne Installation, ohne Risiko.
SQLBolt – Der Klassiker für Einsteiger
- Interaktive Lektionen mit sofortigem Feedback
- Perfekt strukturiert: SELECT → JOINs → Subqueries
- Keine Registrierung nötig
- Empfohlen für: Tag 5-8 unseres Kurses
SQLZoo – Echte Daten, echte Herausforderungen
- Seit über 20 Jahren der Goldstandard
- Übungen mit echten Datensätzen (Nobel-Preise, Fußball-WM, etc.)
- Progressiv schwieriger werdende Aufgaben
- Empfohlen für: Tag 9-10 und danach
W3Schools SQL Tutorial
- „Try it Yourself“ Editor bei jedem Beispiel
- Komplette Referenz aller SQL-Befehle
- Gut zum Nachschlagen
- Empfohlen für: Schnelles Nachschlagen während des Kurses
SQL Easy – Minimalistisch & Effektiv
- Reduziert auf das Wesentliche
- Sofort loslegen ohne Ablenkung
- Über 200.000 Lernende seit 2017
- Empfohlen für: Schnelle Wiederholung
Learn SQL Online
- Komplett kostenlos
- Interaktive Code-Beispiele
- Community-getrieben
- Empfohlen für: Zusätzliche Übungen
📚 Offizielle Dokumentation
Wenn du es genau wissen willst, führt kein Weg an der offiziellen Doku vorbei.
MariaDB Knowledge Base (Deutsch)
- Offizielle Dokumentation auf Deutsch
- Alle Befehle, Datentypen, Konfigurationen
- Das Nachschlagewerk für unseren Kurs
MariaDB.org Documentation
- Hauptdokumentation der MariaDB Foundation
- PDF-Download verfügbar
- Release Notes für alle Versionen
- Kostenlose Video-Kurse zu fortgeschrittenen Themen
MySQL Referenz
- Gilt zu 95% auch für MariaDB
- Sehr detailliert und umfangreich
- Englisch, aber sehr präzise
🛠️ Setup & Installation
Alles, was du brauchst, um SQL auf deinem Rechner zum Laufen zu bringen.
XAMPP – Das Rundum-Sorglos-Paket
- Apache + MariaDB + PHP in einem Paket
- Windows, Mac, Linux
- Unsere Empfehlung für den Kurs!
- Ein Klick → Datenbank läuft
MariaDB Standalone
🔗 mariadb.com/get-started-with-mariadb
- Offizielle Installationsanleitung
- Für alle Betriebssysteme
- Docker-Variante verfügbar
HeidiSQL – Der komfortable Client
- Kostenloser SQL-Client für Windows
- Grafische Oberfläche statt Kommandozeile
- Perfekt für Einsteiger
- Export/Import von Daten
DBeaver – Der Alleskönner
- Universeller Datenbank-Client
- Windows, Mac, Linux
- Unterstützt MySQL, MariaDB, PostgreSQL, Oracle, …
- Community Edition kostenlos
🇩🇪 Tutorials auf Deutsch
Nicht jeder mag englische Tutorials. Hier die besten deutschen Ressourcen.
IONOS Digital Guide
🔗 ionos.de – MySQL/MariaDB installieren
- Schritt-für-Schritt Installationsanleitung
- Screenshots für jeden Schritt
- Linux, Windows, Mac abgedeckt
Guru99 MariaDB Tutorial
🔗 guru99.com/de/mariadb-tutorial-install.html
- Übersetztes Tutorial
- Viele Screenshots
- Grundlagen gut erklärt
GeeksforGeeks SQL Tutorial
🔗 geeksforgeeks.org/sql-tutorial
- Sehr umfangreich
- Von Basics bis Advanced
- Viele Code-Beispiele
🎬 Video-Kurse (kostenlos)
Manchmal ist Zuschauen einfacher als Lesen.
freeCodeCamp – SQL Full Course
- Kompletter SQL-Kurs in einem Video
- 4+ Stunden Inhalt
- Sehr beliebt (Millionen Views)
- Englisch mit guter Aussprache
Bro Code – SQL Playlist
- Viral gegangen 2024
- Kurze, knackige Videos
- Schritt für Schritt
- Gut für Pausen zwischendurch
📅 Welche Ressource zu welchem Tag?
| Kurstag | Thema | Empfohlene Ressource |
|---|---|---|
| Tag 1 | Was ist eine Datenbank? | XAMPP installieren, MariaDB Doku |
| Tag 2 | Tabellen & Beziehungen | W3Schools Referenz |
| Tag 3 | Schlüssel | MariaDB Knowledge Base |
| Tag 4 | CREATE TABLE | SQLBolt Lesson 16-17 |
| Tag 5 | SELECT Basics | SQLBolt Lesson 1-4 |
| Tag 6 | WHERE & Filter | SQLBolt Lesson 2-4 |
| Tag 7 | GROUP BY | SQLBolt Lesson 10-11 |
| Tag 8 | HAVING | SQLZoo SUM and COUNT |
| Tag 9 | JOINs | SQLBolt Lesson 6-7, SQLZoo JOIN |
| Tag 10 | Subqueries | SQLZoo SELECT within SELECT |
💡 Elyndra’s Pro-Tipps
„Die beste Ressource ist die, die du auch benutzt.“
- Nicht alles auf einmal – Wähle EINE Übungsplattform und bleib dabei
- Täglich 15 Minuten schlägt einmal pro Woche 2 Stunden
- Fehler sind Lernchancen – Jede Fehlermeldung bringt dich weiter
- Eigene Datenbank – Sobald du kannst, arbeite mit eigenen Daten
- Community nutzen – Stack Overflow, Reddit r/SQL, Discord-Server
🚀 Nach dem Kurs: Wie geht’s weiter?
Du hast die Basics drauf? Hier sind die nächsten Schritte:
Fortgeschrittene Themen
- Window Functions – OVER(), PARTITION BY, ROW_NUMBER()
- CTEs – Common Table Expressions (WITH-Klausel)
- Stored Procedures – Wiederverwendbare SQL-Skripte
- Indexe & Performance – Queries optimieren
Weiterführende Kurse
- SQLCourse.com Advanced – Fortgeschrittene Themen
- Mode Analytics SQL Tutorial – Für Data Analytics
- LeetCode SQL – Übungen für Bewerbungen
Zertifizierungen
- Oracle Database SQL Certified Associate
- Microsoft Azure Data Fundamentals (DP-900)
- Google Data Analytics Certificate
📥 Downloads aus unserem Kurs
- versandhandel.sql – Unsere Übungsdatenbank (5 Tabellen)
- adressen.sql – 601 Personen, 1523 Adressen
Fragen? Feedback?
Schreib uns in die Kommentare oder kontaktiere das Java Fleet Team!
Letzte Aktualisierung: Dezember 2025
Zusammengestellt von Elyndra Valen – Senior Database Architect
💬 Feedback?
War dieser Tag zu schnell? Zu viel Code auf einmal?
Schreib uns: elyndra.valen@java-developer.online
Wir wollen, dass du erfolgreich lernst!
Bis morgen – SELECT wartet auf dich! 👋
Elyndra
SQL Basic – Tag 4 von 10
© Java Fleet Systems Consulting
www.java-developer.online

