Bisher haben wir gelernt, Tabellen zu erstellen, zu verknüpfen und einfache CRUD-Operationen durchzuführen.
In diesem Kapitel gehen wir einen Schritt weiter: Wir kombinieren Tabellen mit JOINs, fassen Daten mit GROUP BY zusammen und nutzen Aggregatfunktionen wie COUNT()
, SUM()
, AVG()
.
🔹 JOIN – Daten aus mehreren Tabellen kombinieren
Beispiel 1: Kunden mit ihren Bestellungen
SELECT k.vorname, k.nachname, b.produkt, b.preis, b.bestelldatum FROM kunden k JOIN bestellungen b ON k.id = b.kunde_id;
Beispiel 2: Kunden ohne Bestellungen (LEFT JOIN)
SELECT k.vorname, k.nachname, b.produkt FROM kunden k LEFT JOIN bestellungen b ON k.id = b.kunde_id;
👉 Hinweis: Alle Kunden werden angezeigt, auch die ohne Bestellungen (dann sind Bestellwerte NULL
).
SELECT k.vorname, k.nachname, p.name AS produkt, p.preis FROM kunden k JOIN kunden_produkte kp ON k.id = kp.kunde_id JOIN produkte p ON kp.produkt_id = p.id;
Beispiel 3: Produkte eines Kunden (n:m über Zwischentabelle)
SELECT k.vorname, k.nachname, p.name AS produkt, p.preis FROM kunden k JOIN kunden_produkte kp ON k.id = kp.kunde_id JOIN produkte p ON kp.produkt_id = p.id;
🔹 GROUP BY – Daten zusammenfassen
Beispiel 1: Anzahl der Bestellungen pro Kunde
SELECT k.vorname, k.nachname, COUNT(b.id) AS anzahl_bestellungen FROM kunden k LEFT JOIN bestellungen b ON k.id = b.kunde_id GROUP BY k.id;
Beispiel 2: Gesamtausgaben pro Kunde
SELECT k.vorname, k.nachname, SUM(b.preis) AS gesamt_ausgaben FROM kunden k JOIN bestellungen b ON k.id = b.kunde_id GROUP BY k.id;
Beispiel 3: Durchschnittspreis pro Produkt
SELECT p.name, AVG(b.preis) AS durchschnitt_preis FROM produkte p JOIN kunden_produkte kp ON p.id = kp.produkt_id JOIN bestellungen b ON b.produkt = p.name GROUP BY p.id;
🔹 HAVING – Bedingungen auf Gruppen anwenden
HAVING
ist wie WHERE
, nur für Gruppenergebnisse.
Beispiel: Nur Kunden anzeigen, die mehr als eine Bestellung haben.
SELECT k.vorname, k.nachname, COUNT(b.id) AS anzahl FROM kunden k JOIN bestellungen b ON k.id = b.kunde_id GROUP BY k.id HAVING COUNT(b.id) > 1;
🔹 Subqueries – Abfragen in Abfragen
Beispiel: Kunden mit Bestellungen über 50 €
SELECT vorname, nachname FROM kunden WHERE id IN ( SELECT kunde_id FROM bestellungen WHERE preis > 50 );
🔹 Übung
- Liste alle Kunden mit der Anzahl ihrer Bestellungen.
- Berechne die Gesamtausgaben je Kunde.
- Finde alle Kunden, die keine Bestellungen haben.
- Erstelle eine Abfrage, die alle Produkte auflistet, die von mehr als einem Kunden gekauft wurden.
✅ Zusammenfassung
- JOIN verbindet Tabellen (INNER, LEFT, RIGHT).
- GROUP BY fasst Daten zusammen (z. B. pro Kunde).
-
Aggregatfunktionen wie
COUNT
,SUM
,AVG
liefern Statistiken. - HAVING filtert Gruppenergebnisse.
- Subqueries erlauben verschachtelte Abfragen.
Im nächsten Kapitel schauen wir uns an, wie man eine Datenbank optimiert und verwaltet: Indexe, Views und Transaktionen.
📚 Inhaltsverzeichnis
👉 MariaDB Kapitel 1: Einführung & Installation im Terminal
👉 MariaDB Kapitel 2: Benutzer & Rechteverwaltung
👉 MariaDB Kapitel 3: Tabellen sauber anlegen (Primär- & Fremdschlüssel)
👉 MariaDB Kapitel 4: Grundbefehle & Kurzschreibweisen in der MariaDB-Konsole
👉 MariaDB Kapitel 5: CRUD-Befehle – Daten einfügen, lesen, ändern und löschen
👉 MariaDB Kapitel 6: Primär- und Fremdschlüssel – Tabellen verknüpfen
👉 MariaDB Kapitel 7: Profi-Abfragen mit JOIN, GROUP BY & Aggregatfunktionen
👉 MariaDB Kapitel 8: Indexe, Views & Transaktionen
👉 MariaDB Kapitel 9: Produktivbetrieb – Sicherheit, Backups & Verwaltung
👉 MariaDB Kapitel 10: Abschlussprojekt – Ein Mini-Shop
📚 Bonus-Kapitel Ideen
👉 MariaDB Kapitel 11: Stored Procedures – Automatisierte Abläufe
👉 MariaDB Kapitel 12: Trigger – Aktionen bei Änderungen
👉 MariaDB Kapitel 13: Events – Zeitgesteuerte Aufgaben
👉 MariaDB Kapitel 14: Sicherheit & Best Practices
👉 MariaDB Kapitel 15: Performance-Tuning & Optimierung