SQL Basic Kurs
Von Elyndra Valen, Senior Entwicklerin bei Java Fleet Systems Consulting

JOINs

🗺️ Deine Position im Kurs

TagThemaStatus
1Warum Datenbanken?✅ Abgeschlossen
2Das relationale Modell✅ Abgeschlossen
3Schlüssel & Beziehungen✅ Abgeschlossen
4Tabellen erstellen & Daten pflegen✅ Abgeschlossen
5SELECT – Deine erste Abfrage✅ Abgeschlossen
6Filtern und Sortieren✅ Abgeschlossen
7Gruppieren und Auswerten✅ Abgeschlossen
→ 8Tag 8: JOINs – Tabellen verbinden wie ein ProfiJOINs – Tabellen verbinden👉 DU BIST HIER!
9Subqueries und Views🔜 Kommt als nächstes
10Zusammenfassung & Projekt🔒 Noch nicht freigeschaltet

Modul: SQL Basic
Gesamt-Dauer: 10 Kurstage
Dein Ziel: Daten aus mehreren Tabellen in einer Abfrage kombinieren


📋 Voraussetzungen für diesen Tag

Du brauchst:

  • ✅ Tag 1-7 abgeschlossen
  • ✅ Du verstehst Primär- und Fremdschlüssel (Tag 3!)
  • ✅ XAMPP läuft, phpMyAdmin ist offen
  • ✅ Die Datenbanken sind importiert

Fragen?
Schreib uns: Elyndra.Valen@java-developer.online


🔄 Kurzwiederholung: Lösung der Challenge von Tag 7

1. Anzahl Personen und verschiedene Vornamen:

SELECT 
    COUNT(*) AS anzahl_personen,
    COUNT(DISTINCT FIRSTNAME) AS verschiedene_vornamen
FROM person;

2. Durchschnittsalter:

SELECT ROUND(AVG(AGE), 1) AS durchschnittsalter FROM person;

3. Personen pro Anfangsbuchstabe:

SELECT 
    LEFT(FIRSTNAME, 1) AS buchstabe,
    COUNT(*) AS anzahl
FROM person
GROUP BY LEFT(FIRSTNAME, 1)
ORDER BY anzahl DESC;

4. PERSID mit den meisten Adressen:

SELECT PERSID, COUNT(*) AS anzahl
FROM adressen
GROUP BY PERSID
ORDER BY anzahl DESC
LIMIT 1;

5. Städte mit mehr als 2 Einträgen:

SELECT stadt, COUNT(*) AS anzahl
FROM adressen
GROUP BY stadt
HAVING COUNT(*) > 2
ORDER BY anzahl DESC;

6. Altersgruppen:

SELECT 
    FLOOR(AGE / 10) * 10 AS altersgruppe,
    COUNT(*) AS anzahl
FROM person
GROUP BY FLOOR(AGE / 10) * 10
ORDER BY altersgruppe;

⚡ Das Wichtigste in 30 Sekunden

Heute lernst du:

  • ✅ INNER JOIN – nur passende Daten aus beiden Tabellen
  • ✅ LEFT JOIN – alle aus links, passende aus rechts
  • ✅ RIGHT JOIN – alle aus rechts, passende aus links
  • ✅ Mehr als zwei Tabellen verbinden
  • ✅ JOIN mit Aggregatfunktionen kombinieren

Am Ende des Tages kannst du: Abfragen wie „Zeige alle Kunden mit ihren Bestellungen“ oder „Alle Personen mit allen ihren Adressen“ schreiben.

Schwierigkeitsgrad: 🟡 Mittel (aber wichtig!)


Hi! 👋

Erinnerst du dich an Tag 3? Da hast du schon zwei Tabellen verbunden:

SELECT * FROM person, adressen 
WHERE person.PERSID = adressen.PERSID;

Das war die „alte“ Schreibweise. Heute lernst du die moderne JOIN-Syntax – klarer, lesbarer, und mächtiger.

JOIN ist DAS Werkzeug für relationale Datenbanken. Daten sind auf Tabellen verteilt – JOIN bringt sie wieder zusammen.

Los geht’s! 🚀


🟢 GRUNDLAGEN: INNER JOIN

Die Syntax

SELECT spalten
FROM tabelle1
INNER JOIN tabelle2 ON tabelle1.schluessel = tabelle2.schluessel;

Das ON definiert die Verbindungsbedingung.

Beispiel: Personen mit Adressen

Alte Schreibweise (Tag 3):

SELECT * FROM person, adressen 
WHERE person.PERSID = adressen.PERSID;

Neue Schreibweise (JOIN):

SELECT * 
FROM person
INNER JOIN adressen ON person.PERSID = adressen.PERSID;

Gleiches Ergebnis – aber klarer strukturiert!

Was passiert beim INNER JOIN?

Der INNER JOIN zeigt nur Zeilen, die in beiden Tabellen eine Entsprechung haben.

PERSON:                     ADRESSEN:
PERSID | NAME               ADRESID | PERSID | STADT
1      | Bruno              1       | 1      | Neu Yannik
2      | Roman              2       | 1      | Ricoscheid
3      | Bela               8       | 2      | Kleebergdorf
                            (Bela hat keine Adresse!)

INNER JOIN Ergebnis:
PERSID | NAME  | STADT
1      | Bruno | Neu Yannik
1      | Bruno | Ricoscheid
2      | Roman | Kleebergdorf
(Bela fehlt - keine passende Adresse!)

Bestimmte Spalten auswählen

Bei JOINs musst du oft angeben, aus welcher Tabelle eine Spalte kommt:

SELECT 
    person.FIRSTNAME,
    person.LASTNAME,
    adressen.stadt,
    adressen.STREET
FROM person
INNER JOIN adressen ON person.PERSID = adressen.PERSID;

Tabellen-Aliase für kürzeren Code

SELECT 
    p.FIRSTNAME,
    p.LASTNAME,
    a.stadt,
    a.STREET
FROM person p
INNER JOIN adressen a ON p.PERSID = a.PERSID;

p ist jetzt das Kürzel für person, a für adressen.

Mit WHERE kombinieren

SELECT 
    p.FIRSTNAME,
    p.LASTNAME,
    a.stadt
FROM person p
INNER JOIN adressen a ON p.PERSID = a.PERSID
WHERE a.stadt LIKE 'Bad%';

Alle Personen, die in einer „Bad“-Stadt wohnen.


🟡 PROFESSIONALS: LEFT JOIN und RIGHT JOIN

LEFT JOIN – Alle aus der linken Tabelle

SELECT 
    p.FIRSTNAME,
    p.LASTNAME,
    a.stadt
FROM person p
LEFT JOIN adressen a ON p.PERSID = a.PERSID;

Was passiert?

  • ALLE Personen werden angezeigt
  • Wenn eine Person keine Adresse hat: stadt ist NULL

Wann brauchst du das?

  • „Zeige alle Kunden, auch die ohne Bestellung“
  • „Zeige alle Personen, auch die ohne Adresse“

RIGHT JOIN – Alle aus der rechten Tabelle

SELECT 
    p.FIRSTNAME,
    p.LASTNAME,
    a.stadt
FROM person p
RIGHT JOIN adressen a ON p.PERSID = a.PERSID;

Was passiert?

  • ALLE Adressen werden angezeigt
  • Wenn eine Adresse zu keiner Person gehört: Name ist NULL

In der Praxis: RIGHT JOIN wird selten genutzt. Du kannst stattdessen die Tabellen tauschen und LEFT JOIN verwenden.

Übersicht JOIN-Typen

JOIN-TypZeigt an
INNER JOINNur Zeilen mit Match in BEIDEN Tabellen
LEFT JOINALLE aus links, nur passende aus rechts
RIGHT JOINALLE aus rechts, nur passende aus links

Visualisierung

INNER JOIN:              LEFT JOIN:               RIGHT JOIN:
    ┌───┬───┐               ┌───┬───┐               ┌───┬───┐
    │ A │ B │               │ A │ B │               │ A │ B │
    │   │   │               │   │   │               │   │   │
    │ ███ │               │████│   │               │   │████│
    │   │   │               │   │   │               │   │   │
    └───┴───┘               └───┴───┘               └───┴───┘
  Nur die Schnitt-       Alles aus A,           Alles aus B,
  menge beider           Schnittmenge           Schnittmenge
                         mit B                   mit A

NULL-Werte finden mit LEFT JOIN

„Welche Personen haben KEINE Adresse?“

SELECT p.FIRSTNAME, p.LASTNAME
FROM person p
LEFT JOIN adressen a ON p.PERSID = a.PERSID
WHERE a.ADRESID IS NULL;

Der Trick: LEFT JOIN + WHERE … IS NULL findet die „Waisen“.


🟡 Mehr als zwei Tabellen verbinden

Drei Tabellen

SELECT 
    k.name AS kunde,
    b.datum AS bestelldatum,
    p.artikel AS produkt
FROM kunden k
INNER JOIN bestellungen b ON k.kunden_id = b.kunden_id
INNER JOIN positionen pos ON b.bestellungen_id = pos.bestellungen_id
INNER JOIN produkte p ON pos.produkt_id = p.produkte_id;

Das verbindet: Kunden → Bestellungen → Positionen → Produkte

Die Kette

kunden ─────► bestellungen ─────► positionen ─────► produkte
       kunden_id           bestellungen_id      produkt_id

Jeder JOIN folgt einem Fremdschlüssel!

Mit Aggregation

„Wie viel hat jeder Kunde insgesamt bestellt?“

SELECT 
    k.name,
    COUNT(DISTINCT b.bestellungen_id) AS anzahl_bestellungen,
    SUM(pos.menge * pos.preis) AS gesamtwert
FROM kunden k
INNER JOIN bestellungen b ON k.kunden_id = b.kunden_id
INNER JOIN positionen pos ON b.bestellungen_id = pos.bestellungen_id
GROUP BY k.kunden_id, k.name
ORDER BY gesamtwert DESC;

🔴 BONUS: Profi-Tipps

Self-Join – Tabelle mit sich selbst

Manchmal muss eine Tabelle mit sich selbst vergunden werden.

„Finde Personen mit gleichem Nachnamen:“

SELECT 
    p1.FIRSTNAME AS person1,
    p2.FIRSTNAME AS person2,
    p1.LASTNAME
FROM person p1
INNER JOIN person p2 ON p1.LASTNAME = p2.LASTNAME
WHERE p1.PERSID < p2.PERSID;  -- Duplikate vermeiden

USING statt ON (Kurzschreibweise)

Wenn die Spalten in beiden Tabellen gleich heißen:

-- Statt:
SELECT * FROM person 
INNER JOIN adressen ON person.PERSID = adressen.PERSID;

-- Kannst du schreiben:
SELECT * FROM person 
INNER JOIN adressen USING (PERSID);

Kürzer, aber nur wenn die Spaltennamen identisch sind.

NATURAL JOIN (Vorsicht!)

SELECT * FROM person NATURAL JOIN adressen;

Verbindet automatisch über gleichnamige Spalten. Gefährlich – du weißt nicht genau, was verbunden wird. Besser explizit sein!

Performance-Tipp

Bei JOINs ist Indexierung wichtig. Fremdschlüssel sollten indiziert sein. Das macht der Datenbank-Admin – aber gut zu wissen!


💬 Real Talk: Die Kursplanung für Tag 8

Java Fleet Büro, Nachmittag. Das Team diskutiert den JOIN-Tag.


Franz-Martin: „JOINs. Der Kern relationaler Datenbanken.“

Nova: „Ich hab ewig gebraucht, bis ich den Unterschied zwischen INNER und LEFT verstanden hab.“

Tom: „Für mich war die Visualisierung hilfreich. Die Kreise mit der Schnittmenge.“

Kat: „Ja, aber echte Beispiele sind besser. ‚Zeig alle Kunden, auch die ohne Bestellung‘ – das ist greifbar.“

Elyndra: „Beide. Visualisierung für das Konzept, praktische Beispiele für die Anwendung.“

Franz-Martin: „Wie gehen wir mit der alten Komma-Syntax um? Die kennen sie ja von Tag 3.“

Elyndra: „Erwähnen, dass es dasselbe ist. Aber die JOIN-Syntax ist Standard und klarer. Bei komplexen Abfragen mit 4-5 Tabellen wird die Komma-Syntax unlesbar.“

Tom: „Und mehrere JOINs? Kunden → Bestellungen → Positionen → Produkte?“

Elyndra: „Ja, aber als Bonus. Die Kette erklären. Jeder JOIN folgt einem Fremdschlüssel.“

Nova: „Self-Join ist auch cool. ‚Finde alle Personen mit gleichem Nachnamen.'“

Kat: „Aber das ist schon advanced. Vielleicht nur als Bonus?“

Elyndra: „Stimmt. INNER JOIN und LEFT JOIN sind die wichtigsten. Der Rest ist Kür.“


✅ Checkpoint: Hast du es verstanden?

Bevor du weitermachst, teste dein Wissen:

Quiz:

Frage 1: Was ist der Unterschied zwischen INNER JOIN und LEFT JOIN?

Frage 2: Du willst alle Personen mit ihren Adressen sehen. Schreibe die JOIN-Abfrage.

Frage 3: Wie findest du Personen, die KEINE Adresse haben?

Frage 4: Warum brauchst du Tabellen-Aliase bei JOINs oft?

Frage 5: In welcher Reihenfolge fügst du JOIN, WHERE und ORDER BY ein?


Mini-Challenge:

Aufgabe:

Arbeite mit den Datenbanken:

  1. Zeige alle Personen mit ihren Adressen (Vorname, Nachname, Stadt, Straße). Nutze INNER JOIN.
  2. Zeige ALLE Personen, auch die ohne Adresse. Die Adress-Spalten sollen NULL zeigen, wenn keine Adresse existiert.
  3. Wie viele Adressen hat jede Person? Zeige Vorname, Nachname und Anzahl. Sortiere nach Anzahl (absteigend).
  4. Finde alle Personen, deren Vorname mit dem gleichen Buchstaben anfängt wie ihre Stadt. (Tipp: JOIN + WHERE mit LEFT())
  5. (Bonus) Bei versandhandel: Zeige für jeden Kunden die Anzahl seiner Bestellungen und den Gesamtwert aller Positionen.

Lösung:
Wir besprechen die Lösung am Anfang von Tag 9!


❓ Häufig gestellte Fragen

Frage 1: Muss ich INNER schreiben, oder reicht JOIN?

JOIN alleine ist dasselbe wie INNER JOIN. Aber schreib INNER dazu – es ist klarer.

Frage 2: Kann ich LEFT JOIN und INNER JOIN mischen?

Ja! Jeder JOIN in einer Abfrage kann ein anderer Typ sein.

Frage 3: Was ist schneller – die alte Komma-Syntax oder JOIN?

Gleich schnell. Der Datenbank-Optimizer macht das gleiche draus. Aber JOIN ist lesbarer.

Frage 4: Kann ich mehr als 2 Tabellen joinen?

Ja, beliebig viele. Aber jeder JOIN braucht eine ON-Bedingung.

Frage 5: Was ist ein FULL OUTER JOIN?

Alle aus BEIDEN Tabellen, auch ohne Match. MariaDB/MySQL unterstützt das nicht direkt – du müsstest LEFT JOIN und RIGHT JOIN mit UNION kombinieren.

Frage 6: Warum ist mein JOIN so langsam?

Große Tabellen ohne Indexe auf den Schlüsselspalten. Lösung: Indexe erstellen (Fortgeschrittenes Thema).

Frage 7: Nova sagte, sie hat den Unterschied zwischen INNER und LEFT „ewig“ nicht verstanden. Was war das Problem?

Real talk: Das klassische Problem ist die Frage „Was passiert mit Zeilen ohne Match?“. Bei INNER JOIN: Weg. Bei LEFT JOIN: Bleiben drin, aber mit NULL-Werten. Der Aha-Moment kommt, wenn du es mal ausprobierst – mach eine Person ohne Adresse und schau, was die beiden JOINs unterschiedlich zeigen. Hands-on beats Theorie.


📚 Quiz-Lösungen

Hier sind die Antworten zum Quiz von oben:


Frage 1: Unterschied INNER JOIN vs. LEFT JOIN?

Antwort:

  • INNER JOIN zeigt nur Zeilen, die in BEIDEN Tabellen einen Match haben
  • LEFT JOIN zeigt ALLE Zeilen aus der linken Tabelle, auch wenn kein Match existiert (dann NULL)

Frage 2: Personen mit Adressen (JOIN)?

Antwort:

SELECT 
    p.FIRSTNAME,
    p.LASTNAME,
    a.stadt,
    a.STREET
FROM person p
INNER JOIN adressen a ON p.PERSID = a.PERSID;

Frage 3: Personen OHNE Adresse finden?

Antwort:

SELECT p.FIRSTNAME, p.LASTNAME
FROM person p
LEFT JOIN adressen a ON p.PERSID = a.PERSID
WHERE a.ADRESID IS NULL;

LEFT JOIN + WHERE IS NULL findet die „Waisen“.


Frage 4: Warum Tabellen-Aliase bei JOINs?

Antwort:

  1. Kürzer zu schreiben (p.FIRSTNAME statt person.FIRSTNAME)
  2. Pflicht bei Self-Joins (gleiche Tabelle zweimal)
  3. Eindeutigkeit bei gleichnamigen Spalten in verschiedenen Tabellen

Frage 5: Reihenfolge JOIN, WHERE, ORDER BY?

Antwort:

SELECT spalten
FROM tabelle1
JOIN tabelle2 ON ...
WHERE bedingung
ORDER BY sortierung;

JOIN kommt direkt nach FROM, WHERE und ORDER BY bleiben wo sie sind.


🎉 Tag 8 geschafft!

Mega! Du kannst jetzt Tabellen verbinden! 🚀

Das hast du heute gelernt:

  • ✅ INNER JOIN für Matches in beiden Tabellen
  • ✅ LEFT JOIN für „alle aus links, passende aus rechts“
  • ✅ Tabellen-Aliase für kürzeren Code
  • ✅ Mehrere Tabellen in einer Abfrage
  • ✅ JOIN mit WHERE, GROUP BY, ORDER BY kombinieren

Du kannst jetzt: Die volle Power relationaler Datenbanken nutzen! Daten aus beliebig vielen Tabellen in einer Abfrage zusammenführen.

Das war der letzte „große“ Baustein. Mit SELECT, WHERE, GROUP BY und JOIN beherrschst du 95% aller alltäglichen SQL-Aufgaben! 💪


Wie geht’s weiter?

Morgen (Tag 9): Subqueries und Views

Was dich erwartet:

  • Subqueries – Abfragen in Abfragen
  • Views – gespeicherte Abfragen
  • Komplexe Probleme elegant lösen

🛠️ Troubleshooting

Problem: „Column ‚xyz‘ in field list is ambiguous“

Lösung: Die Spalte existiert in beiden Tabellen. Schreibe tabelle.spalte oder nutze Aliase.

Problem: Viel mehr Ergebnisse als erwartet

Lösung: Falsche JOIN-Bedingung? Wenn du versehentlich eine Spalte vergisst, die nicht der Schlüssel ist, bekommst du das „Kreuzprodukt“ – jede Zeile mit jeder.

Problem: Ergebnis ist leer, obwohl Daten da sind

Lösung: INNER JOIN ohne Matches? Prüfe, ob die Schlüsselwerte wirklich übereinstimmen. Vielleicht LEFT JOIN probieren?


📖 Im Buch nachlesen

Mehr Details zu den heutigen Themen findest du in:

Kapitel 7: Joins

  • 7.1 Kartesisches Produkt
  • 7.2 INNER JOIN
  • 7.3 OUTER JOIN (LEFT, RIGHT)
  • 7.4 Mehrere Tabellen verbinden
  • 7.5 Self-Join

SQL Ressourcen & Weiterführende Links

Elyndra’s Schatzkiste – Alles, was du für deinen SQL-Lernweg brauchst

Du hast die 10 Tage SQL Basic Kurs geschafft (oder bist mittendrin) und willst mehr? Hier findest du handverlesene Ressourcen, die dich weiterbringen – von interaktiven Übungsplattformen bis zur offiziellen Dokumentation.


🎮 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

🔗 sqlbolt.com

  • 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

🔗 sqlzoo.net

  • 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

🔗 w3schools.com/sql

  • „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

🔗 sql-easy.com

  • Reduziert auf das Wesentliche
  • Sofort loslegen ohne Ablenkung
  • Über 200.000 Lernende seit 2017
  • Empfohlen für: Schnelle Wiederholung

Learn SQL Online

🔗 learnsqlonline.org

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

🔗 mariadb.com/kb/de/mariadb

  • Offizielle Dokumentation auf Deutsch
  • Alle Befehle, Datentypen, Konfigurationen
  • Das Nachschlagewerk für unseren Kurs

MariaDB.org Documentation

🔗 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

🔗 dev.mysql.com/doc

  • 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

🔗 apachefriends.org/de

  • 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

🔗 heidisql.com

  • Kostenloser SQL-Client für Windows
  • Grafische Oberfläche statt Kommandozeile
  • Perfekt für Einsteiger
  • Export/Import von Daten

DBeaver – Der Alleskönner

🔗 dbeaver.io

  • 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

🔗 YouTube: 4-Stunden-Kurs

  • Kompletter SQL-Kurs in einem Video
  • 4+ Stunden Inhalt
  • Sehr beliebt (Millionen Views)
  • Englisch mit guter Aussprache

Bro Code – SQL Playlist

🔗 YouTube Playlist

  • Viral gegangen 2024
  • Kurze, knackige Videos
  • Schritt für Schritt
  • Gut für Pausen zwischendurch

📅 Welche Ressource zu welchem Tag?

KurstagThemaEmpfohlene Ressource
Tag 1Was ist eine Datenbank?XAMPP installieren, MariaDB Doku
Tag 2Tabellen & BeziehungenW3Schools Referenz
Tag 3SchlüsselMariaDB Knowledge Base
Tag 4CREATE TABLESQLBolt Lesson 16-17
Tag 5SELECT BasicsSQLBolt Lesson 1-4
Tag 6WHERE & FilterSQLBolt Lesson 2-4
Tag 7GROUP BYSQLBolt Lesson 10-11
Tag 8HAVINGSQLZoo SUM and COUNT
Tag 9JOINsSQLBolt Lesson 6-7, SQLZoo JOIN
Tag 10SubqueriesSQLZoo SELECT within SELECT

💡 Elyndra’s Pro-Tipps

„Die beste Ressource ist die, die du auch benutzt.“

  1. Nicht alles auf einmal – Wähle EINE Übungsplattform und bleib dabei
  2. Täglich 15 Minuten schlägt einmal pro Woche 2 Stunden
  3. Fehler sind Lernchancen – Jede Fehlermeldung bringt dich weiter
  4. Eigene Datenbank – Sobald du kannst, arbeite mit eigenen Daten
  5. 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

Zertifizierungen

  • Oracle Database SQL Certified Associate
  • Microsoft Azure Data Fundamentals (DP-900)
  • Google Data Analytics Certificate

📥 Downloads aus unserem Kurs

💬 Feedback?

Hast du JOINs verstanden? Welcher JOIN-Typ war am verwirrendsten?
Schreib uns: feedback@java-developer.online


Bis morgen – dann wird’s verschachtelt! 👋

Elyndra


SQL Basic – Tag 8 von 10
© Java Fleet Systems Consulting
www.java-developer.online

Autor

  • Elyndra Valen

    28 Jahre alt, wurde kürzlich zur Senior Entwicklerin befördert nach 4 Jahren intensiver Java-Entwicklung. Elyndra kennt die wichtigsten Frameworks und Patterns, beginnt aber gerade erst, die tieferen Zusammenhänge und Architektur-Entscheidungen zu verstehen. Sie ist die Brücke zwischen Junior- und Senior-Welt im Team.