Donnerstag, 2025-10-09_DB_WIT¶
DQL – Data Query Language (SQL-Abfragen)¶
Thema: Datenabfrage in relationalen Datenbanksystemen
Kontext: Lesen, Filtern und Auswerten von Daten (ohne Veränderung)
1. Einordnung: SQL und DQL¶
SQL (Structured Query Language) besteht aus mehreren Teilsprachen:
- DDL – Data Definition Language (CREATE, ALTER, DROP)
- DML – Data Manipulation Language (INSERT, UPDATE, DELETE)
- DQL – Data Query Language (SELECT)
- DCL – Data Control Language (GRANT, REVOKE)
- TCL – Transaction Control Language (COMMIT, ROLLBACK)
Diese Mitschrift behandelt ausschließlich DQL.
2. Was ist DQL?¶
DQL (Data Query Language) dient zum Abfragen von Daten aus einer Datenbank.
Eigenschaften: - liest Daten ohne sie zu verändern - ist logisch seiteneffektfrei - bildet die Grundlage für: - Auswertungen - Reports - Anwendungslogik - Benutzeroberflächen
Zentrales Schlüsselwort:
SELECT
3. Grundstruktur einer SELECT-Abfrage¶
SELECT spalten
FROM tabelle
WHERE bedingung;
Bedeutung: - SELECT → Welche Daten? - FROM → Aus welcher Tabelle? - WHERE → Unter welchen Bedingungen?
Beispiel:
SELECT name, email
FROM kunden
WHERE aktiv = 1;
4. Wichtige Bestandteile von DQL¶
WHERE – Filtern von Datensätzen¶
Vergleichsoperatoren:
- =, !=, <, >, <=, >=
Logische Operatoren:
- AND
- OR
- NOT
Beispiel:
SELECT *
FROM bestellungen
WHERE preis > 100 AND status = 'offen';
ORDER BY – Sortieren von Ergebnissen¶
ORDER BY spalte ASC | DESC
Beispiel:
SELECT *
FROM produkte
ORDER BY preis DESC;
LIMIT – Begrenzen der Ergebnismenge¶
LIMIT anzahl
Beispiel:
SELECT *
FROM logeintraege
ORDER BY zeitstempel DESC
LIMIT 10;
5. Aggregatfunktionen (Auswertungen)¶
DQL erlaubt statistische Auswertungen:
COUNT()– AnzahlSUM()– SummeAVG()– DurchschnittMIN()– MinimumMAX()– Maximum
Beispiel:
SELECT COUNT(*)
FROM kunden
WHERE aktiv = 1;
6. GROUP BY – Gruppierte Abfragen¶
Aggregatfunktionen werden pro Gruppe angewendet.
Beispiel:
SELECT status, COUNT(*)
FROM bestellungen
GROUP BY status;
7. HAVING – Filtern nach Aggregation¶
Unterschied:
- WHERE filtert vor der Gruppierung
- HAVING filtert nach der Gruppierung
Beispiel:
SELECT status, COUNT(*)
FROM bestellungen
GROUP BY status
HAVING COUNT(*) > 10;
8. DQL und Performance¶
Best Practices:
- Nur benötigte Spalten abfragen (
SELECT namestattSELECT *) - WHERE-Klauseln gezielt einsetzen
- Indizierte Spalten bevorzugen
- Große Ergebnismengen vermeiden
DQL-Abfragen beeinflussen direkt: - Antwortzeiten - Serverlast - Benutzererfahrung
9. Typische Fehler¶
SELECT *ohne Notwendigkeit- Fehlende WHERE-Bedingungen
- Verwechslung von WHERE und HAVING
- Ungenaue Filter → unnötig große Ergebnismengen
10. Bedeutung für FIAE¶
DQL ist zentral für:
- Backend-Entwicklung
- Datenanalyse
- Webanwendungen
- Prüfungen (AP1/AP2)
- Technische Interviews
Ohne DQL:
- keine Datenanzeige
- keine Suche
- keine Auswertung