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


🗺️ 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👉 DU BIST HIER!
8JOINs – Tabellen verbinden🔜 Kommt als nächstes
9Subqueries und Views🔒 Noch nicht freigeschaltet
10Zusammenfassung & Projekt🔒 Noch nicht freigeschaltet

Modul: SQL Basic
Gesamt-Dauer: 10 Kurstage
Dein Ziel: Daten zusammenfassen und statistische Auswertungen erstellen


📋 Voraussetzungen für diesen Tag

Du brauchst:

  • ✅ Tag 1-6 abgeschlossen
  • ✅ Du kannst SELECT mit WHERE und ORDER BY
  • ✅ 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 6

1. Alle Personen unter 25:

SELECT * FROM person WHERE AGE < 25;

2. Vorname mit ‚M‘ und über 30:

SELECT * FROM person 
WHERE FIRSTNAME LIKE 'M%' AND AGE > 30;

3. Städte mit „burg“ im Namen:

SELECT * FROM adressen WHERE stadt LIKE '%burg%';

4. Die 10 ältesten Personen:

SELECT FIRSTNAME, LASTNAME, AGE 
FROM person 
ORDER BY AGE DESC 
LIMIT 10;

5. Unter 20 ODER über 80:

SELECT * FROM person 
WHERE AGE < 20 OR AGE > 80 
ORDER BY AGE;

6. Bestimmte Altersstufen mit IN:

SELECT * FROM person 
WHERE AGE IN (18, 21, 30, 40, 50, 60);

⚡ Das Wichtigste in 30 Sekunden

Heute lernst du:

  • ✅ COUNT, SUM, AVG, MIN, MAX – Aggregatfunktionen
  • ✅ GROUP BY – Daten in Gruppen zusammenfassen
  • ✅ HAVING – gruppierte Daten filtern
  • ✅ Auswertungen wie „Durchschnittsalter pro Stadt“

Am Ende des Tages kannst du: Fragen beantworten wie: „Wie viele Kunden haben wir pro Stadt?“ oder „Was ist der durchschnittliche Bestellwert?“

Schwierigkeitsgrad: 🟡 Mittel


Hi! 👋

Bis jetzt hast du einzelne Datensätze abgefragt. Heute wird’s analytisch!

Stell dir vor, dein Chef fragt: „Wie viele Kunden haben wir eigentlich?“ oder „Was ist unser Durchschnittsalter?“ – Das sind keine Fragen nach einzelnen Zeilen, sondern nach Zusammenfassungen.

Dafür gibt es Aggregatfunktionen. Klingt kompliziert, ist aber super praktisch.

Los geht’s! 🚀


🟢 GRUNDLAGEN: Aggregatfunktionen

COUNT – Zählen

Wie viele Personen gibt es?

SELECT COUNT(*) FROM person;

Ergebnis: Eine Zahl (ca. 600).

Wie viele Adressen gibt es?

SELECT COUNT(*) FROM adressen;

Mit schönem Namen:

SELECT COUNT(*) AS anzahl_personen FROM person;

Nur bestimmte Werte zählen:

SELECT COUNT(*) FROM person WHERE AGE > 50;

Wie viele Personen sind über 50?

Nur nicht-leere Werte zählen:

SELECT COUNT(telefon) FROM kunden;

Zählt nur Zeilen, wo telefon NICHT NULL ist.

Eindeutige Werte zählen:

SELECT COUNT(DISTINCT stadt) FROM adressen;

Wie viele verschiedene Städte gibt es?

SUM – Summieren

Gesamter Lagerbestand aller Produkte:

SELECT SUM(lagerbestand) FROM produkte;

Gesamtwert aller Produkte im Lager:

SELECT SUM(preis * lagerbestand) AS lagerwert FROM produkte;

Gesamtalter aller Personen (sinnlos, aber möglich):

SELECT SUM(AGE) FROM person;

AVG – Durchschnitt

Durchschnittsalter:

SELECT AVG(AGE) FROM person;

Durchschnittspreis aller Produkte:

SELECT AVG(preis) FROM produkte;

Gerundet auf 2 Nachkommastellen:

SELECT ROUND(AVG(preis), 2) AS durchschnittspreis FROM produkte;

MIN und MAX – Minimum und Maximum

Jüngste und älteste Person:

SELECT MIN(AGE) AS juengste, MAX(AGE) AS aelteste FROM person;

Günstigstes und teuerstes Produkt:

SELECT MIN(preis) AS guenstigster, MAX(preis) AS teuerster FROM produkte;

Funktioniert auch mit Text (alphabetisch):

SELECT MIN(LASTNAME) AS erster, MAX(LASTNAME) AS letzter FROM person;

Übersicht Aggregatfunktionen

FunktionWas sie tutBeispiel
COUNT(*)Zählt alle ZeilenCOUNT(*) → 600
COUNT(spalte)Zählt nicht-NULL WerteCOUNT(telefon)
COUNT(DISTINCT spalte)Zählt eindeutige WerteCOUNT(DISTINCT stadt)
SUM(spalte)Summiert alle WerteSUM(preis)
AVG(spalte)Berechnet DurchschnittAVG(AGE)
MIN(spalte)Findet kleinsten WertMIN(preis)
MAX(spalte)Findet größten WertMAX(preis)

🟡 PROFESSIONALS: GROUP BY – Gruppieren

Gruppieren

Das Problem

Du willst wissen: „Wie viele Adressen gibt es PRO PERSON?“

Mit einfachem COUNT bekommst du nur die Gesamtzahl. Du brauchst Gruppierung.

Die Lösung: GROUP BY

SELECT PERSID, COUNT(*) AS anzahl_adressen
FROM adressen
GROUP BY PERSID;

Was passiert hier?

  1. Die Tabelle wird nach PERSID gruppiert
  2. Für jede Gruppe (= jede Person) wird COUNT ausgeführt
  3. Ergebnis: Eine Zeile pro Person mit der Anzahl ihrer Adressen

Weiteres Beispiel: Durchschnittsalter nach Anfangsbuchstabe

SELECT 
    LEFT(FIRSTNAME, 1) AS anfangsbuchstabe,
    COUNT(*) AS anzahl,
    ROUND(AVG(AGE), 1) AS durchschnittsalter
FROM person
GROUP BY LEFT(FIRSTNAME, 1)
ORDER BY anfangsbuchstabe;

Wie viele Personen gibt es pro Anfangsbuchstabe, und wie alt sind sie im Schnitt?

Die goldene Regel

Alles, was in SELECT steht und KEINE Aggregatfunktion ist, MUSS in GROUP BY stehen!

-- FALSCH:
SELECT FIRSTNAME, COUNT(*) FROM person GROUP BY LASTNAME;

-- RICHTIG:
SELECT LASTNAME, COUNT(*) FROM person GROUP BY LASTNAME;

Wenn du nach LASTNAME gruppierst, kannst du nicht einfach FIRSTNAME anzeigen – welchen Vornamen sollte SQL nehmen, wenn es mehrere Müllers gibt?

Mehrere Spalten gruppieren

SELECT 
    stadt,
    LEFT(STREET, 1) AS strassen_anfang,
    COUNT(*) AS anzahl
FROM adressen
GROUP BY stadt, LEFT(STREET, 1);

Gruppiert nach Stadt UND Straßenanfangsbuchstabe.


🟡 HAVING – Gruppierte Daten filtern

Das Problem

Du willst nur Personen sehen, die MEHR ALS 3 Adressen haben.

Das funktioniert NICHT:

SELECT PERSID, COUNT(*) AS anzahl
FROM adressen
WHERE COUNT(*) > 3   -- FEHLER!
GROUP BY PERSID;

WHERE wird VOR der Gruppierung ausgeführt – da gibt es COUNT noch gar nicht!

Die Lösung: HAVING

SELECT PERSID, COUNT(*) AS anzahl
FROM adressen
GROUP BY PERSID
HAVING COUNT(*) > 3;

HAVING filtert NACH der Gruppierung.

WHERE vs. HAVING

WHEREHAVING
Filtert einzelne ZeilenFiltert Gruppen
VOR der GruppierungNACH der Gruppierung
Keine AggregatfunktionenMit Aggregatfunktionen

Beide kombiniert:

SELECT PERSID, COUNT(*) AS anzahl
FROM adressen
WHERE stadt LIKE 'Bad%'     -- nur Adressen in "Bad..."-Städten
GROUP BY PERSID
HAVING COUNT(*) >= 2;        -- nur Personen mit mindestens 2 solcher Adressen

Die komplette Reihenfolge

SELECT spalten
FROM tabelle
WHERE bedingung_fuer_zeilen
GROUP BY gruppierung
HAVING bedingung_fuer_gruppen
ORDER BY sortierung
LIMIT anzahl;

Merksatz: SELECT – FROM – WHERE – GROUP BY – HAVING – ORDER BY – LIMIT


🔴 BONUS: Praktische Beispiele

Beispiel 1: Altersverteilung in 10er-Schritten

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

Ergebnis: Wie viele Personen sind 10-19, 20-29, 30-39, usw.

Beispiel 2: Top 5 Städte mit den meisten Adressen

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

Beispiel 3: Personen mit überdurchschnittlichem Alter

Erst Durchschnitt berechnen, dann filtern:

SELECT * FROM person
WHERE AGE > (SELECT AVG(AGE) FROM person);

(Das ist eine Subquery – mehr dazu an Tag 9!)

Beispiel 4: Statistik-Übersicht

SELECT 
    COUNT(*) AS gesamt,
    MIN(AGE) AS juengste,
    MAX(AGE) AS aelteste,
    ROUND(AVG(AGE), 1) AS durchschnitt,
    SUM(CASE WHEN AGE < 30 THEN 1 ELSE 0 END) AS unter_30,
    SUM(CASE WHEN AGE >= 30 AND AGE < 60 THEN 1 ELSE 0 END) AS zwischen_30_60,
    SUM(CASE WHEN AGE >= 60 THEN 1 ELSE 0 END) AS ab_60
FROM person;

Eine komplette Altersstatistik in einer Abfrage!


💬 Real Talk: Die Kursplanung für Tag 7

Java Fleet Büro, Besprechungsraum. Das Team diskutiert.


Franz-Martin: „Tag 7 – Aggregatfunktionen. Das ist der analytische Durchbruch.“

Nova: „COUNT hab ich sofort verstanden. SUM und AVG auch. Aber GROUP BY hat gedauert.“

Tom: „Für mich war HAVING verwirrend. Warum kann ich nicht einfach WHERE benutzen?“

Elyndra: „Weil WHERE vor der Gruppierung passiert. HAVING danach. Das ist der Schlüssel.“

Kat: „Vielleicht hilft ein Bild? Erst werden die Zeilen gefiltert (WHERE), dann gruppiert (GROUP BY), dann die Gruppen gefiltert (HAVING).“

Franz-Martin: „Die Reihenfolge ist wirklich wichtig. SELECT, FROM, WHERE, GROUP BY, HAVING, ORDER BY.“

Nova: „Wie ein Rezept. Erst die Zutaten auswählen (WHERE), dann mischen (GROUP BY), dann aussortieren was nicht schmeckt (HAVING), dann anrichten (ORDER BY).“

Elyndra: „Das ist gut! Das nehmen wir.“

Tom: „Und praktische Beispiele. Nicht nur COUNT(*), sondern echte Fragen: Wie viele Kunden pro Stadt? Durchschnittsalter pro Abteilung?“

Elyndra: „Genau. Die Leute sollen sehen, was sie damit anfangen können. Berichte, Statistiken, Dashboards – alles startet mit GROUP BY.“


✅ Checkpoint: Hast du es verstanden?

Bevor du weitermachst, teste dein Wissen:

Quiz:

Frage 1: Wie zählst du, wie viele verschiedene Nachnamen es in der person-Tabelle gibt?

Frage 2: Was ist der Unterschied zwischen WHERE und HAVING?

Frage 3: Warum liefert SELECT FIRSTNAME, COUNT(*) FROM person GROUP BY LASTNAME; einen Fehler (oder ein seltsames Ergebnis)?

Frage 4: Wie berechnest du den Durchschnittspreis aller Produkte, gerundet auf 2 Nachkommastellen?

Frage 5: Du willst nur Städte sehen, die mindestens 5 mal in der adressen-Tabelle vorkommen. Wie?


Mini-Challenge:

Aufgabe:

Arbeite mit der person– und adressen-Datenbank:

  1. Wie viele Personen gibt es insgesamt? Wie viele verschiedene Vornamen gibt es?
  2. Was ist das Durchschnittsalter aller Personen? (gerundet)
  3. Erstelle eine Liste: Für jeden Anfangsbuchstaben des Vornamens die Anzahl der Personen. Sortiert nach Anzahl (häufigste zuerst).
  4. Welche PERSID hat die meisten Adressen? Wie viele sind es?
  5. Zeige alle Städte, die mehr als 2 mal in der adressen-Tabelle vorkommen, sortiert nach Häufigkeit.
  6. Berechne für jede „Altersgruppe“ (20er, 30er, 40er…) die Anzahl der Personen.

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


❓ Häufig gestellte Fragen

Frage 1: Kann ich mehrere Aggregatfunktionen in einer Abfrage verwenden?

Ja! SELECT COUNT(*), AVG(AGE), MIN(AGE), MAX(AGE) FROM person; funktioniert.

Frage 2: Was passiert, wenn ich GROUP BY vergesse, aber eine Aggregatfunktion benutze?

Du bekommst EINE Zeile mit dem Ergebnis für die gesamte Tabelle. Manchmal ist das gewollt!

Frage 3: Kann ich nach einem Alias gruppieren?

In MySQL/MariaDB: Ja, oft. GROUP BY anfangsbuchstabe funktioniert, wenn du vorher LEFT(FIRSTNAME, 1) AS anfangsbuchstabe geschrieben hast. Standard-SQL erlaubt das eigentlich nicht – aber MariaDB ist tolerant.

Frage 4: Wie runde ich auf ganze Zahlen?

ROUND(AVG(AGE), 0) oder einfach ROUND(AVG(AGE)).

Frage 5: Kann ich in HAVING auf den Alias zugreifen?

In MariaDB oft ja: HAVING anzahl > 5. Standard-SQL verlangt: HAVING COUNT(*) > 5.

Frage 6: Was ist der Unterschied zwischen COUNT(*) und COUNT(spalte)?

COUNT(*) zählt alle Zeilen. COUNT(spalte) zählt nur Zeilen, wo diese Spalte NICHT NULL ist.

Frage 7: Nova verglich die SQL-Reihenfolge mit einem Rezept. Macht das wirklich Sinn?

Real talk: Ja, tatsächlich! WHERE ist wie „diese Zutaten verwenden wir“ (Vorfilterung). GROUP BY ist „alles zusammenmischen“ (Gruppierung). HAVING ist „hmm, diese Portion schmeckt nicht, weg damit“ (Nachfilterung). ORDER BY ist „schön anrichten“ (Sortierung). Und LIMIT ist „nur drei Portionen servieren“ (Begrenzung). Kochen = SQL? Irgendwie schon.


📚 Quiz-Lösungen

Hier sind die Antworten zum Quiz von oben:


Frage 1: Verschiedene Nachnamen zählen?

Antwort:

SELECT COUNT(DISTINCT LASTNAME) FROM person;

DISTINCT sorgt dafür, dass jeder Nachname nur einmal gezählt wird.


Frage 2: Unterschied WHERE vs. HAVING?

Antwort:

  • WHERE filtert einzelne Zeilen VOR der Gruppierung
  • HAVING filtert Gruppen NACH der Gruppierung

WHERE kann keine Aggregatfunktionen enthalten, HAVING schon.


Frage 3: Warum funktioniert SELECT FIRSTNAME … GROUP BY LASTNAME nicht richtig?

Antwort:

Wenn du nach LASTNAME gruppierst, gibt es pro Gruppe (pro Nachname) möglicherweise mehrere verschiedene FIRSTNAME-Werte.

SQL weiß nicht, welchen Vornamen es anzeigen soll. Das Ergebnis ist undefiniert (oder ein Fehler, je nach Datenbank-Modus).

Regel: Jede Spalte in SELECT muss entweder in GROUP BY stehen ODER eine Aggregatfunktion sein.


Frage 4: Durchschnittspreis gerundet?

Antwort:

SELECT ROUND(AVG(preis), 2) AS durchschnittspreis FROM produkte;

ROUND(wert, 2) rundet auf 2 Nachkommastellen.


Frage 5: Nur Städte mit mindestens 5 Einträgen?

Antwort:

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

HAVING filtert nach der Gruppierung.


🎉 Tag 7 geschafft!

Wow! Du kannst jetzt Daten analysieren! 🚀

Das hast du heute gelernt:

  • ✅ COUNT, SUM, AVG, MIN, MAX
  • ✅ GROUP BY für Gruppierungen
  • ✅ HAVING für Gruppenfilter
  • ✅ Die Reihenfolge: WHERE → GROUP BY → HAVING

Du kannst jetzt: Echte Business-Fragen beantworten! „Wie viele Kunden pro Region?“, „Durchschnittlicher Umsatz pro Monat?“, „Top 10 Produkte nach Verkaufszahl?“ – alles machbar!

Das ist Analytics-Power. Controller und Manager lieben diese Abfragen! 💪


Wie geht’s weiter?

Morgen (Tag 8): JOINs – Tabellen verbinden

Was dich erwartet:

  • INNER JOIN, LEFT JOIN, RIGHT JOIN
  • Mehrere Tabellen in einer Abfrage
  • „Zeige Kundennamen mit ihren Bestellungen“ – endlich!
  • Der „richtige“ JOIN (du kennst schon die Komma-Variante)

🛠️ Troubleshooting

Problem: „Column ‚xyz‘ not in GROUP BY clause“

Lösung: Jede Spalte in SELECT, die keine Aggregatfunktion ist, muss in GROUP BY stehen.

Problem: HAVING funktioniert nicht

Lösung: HAVING kommt NACH GROUP BY. Reihenfolge beachten!

Problem: Ergebnis hat nur eine Zeile statt vieler

Lösung: GROUP BY vergessen? Ohne GROUP BY gibt eine Aggregatfunktion nur EINE Zeile für die ganze Tabelle.


📖 Im Buch nachlesen

Mehr Details zu den heutigen Themen findest du in:

Kapitel 6: Gruppierung und Aggregation

  • 6.1 Aggregatfunktionen
  • 6.2 GROUP BY
  • 6.3 HAVING
  • 6.4 Kombinierte Beispiele

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 den Unterschied zwischen WHERE und HAVING verstanden?
Schreib uns: Elyndra.Valen@java-developer.online


Bis morgen – dann verbinden wir Tabellen! 👋

Elyndra


SQL Basic – Tag 7 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.