Grundstruktur einer SELECT-Abfrage
Thema
Mit SELECT ... FROM ... können Daten gelesen werden.
SELECT ... FROM ...
Wichtige Punkte
SELECT: Legt fest, welche Spalten ausgegeben werden.
FROM: Gibt an, aus welcher Tabelle die Daten gelesen werden.
Ergebnis: Eine (virtuelle) Tabelle (Ergebnismenge).
Merksatz „SELECT bestimmt die Spalten, FROM die Tabelle.“
SELECT
FROM
Alle Spalten oder einzelne auswählen
Auswahl bestimmter Spalten bzw. aller Spalten.
SELECT * FROM Tabelle; → Gibt alle Spalten aus.
SELECT * FROM Tabelle;
Oder man listet die konkreten Spaltennamen einzeln auf, etwa SELECT Name, Capital FROM Country;.
SELECT Name, Capital FROM Country;
Merksatz „* steht für alle Spalten, sonst Spalten explizit nennen.“
*
Doppelte Zeilen entfernen (DISTINCT)
Mehrfach vorkommende Zeilen entfernen.
SELECT DISTINCT Continent FROM Country;
Duplikate werden hierdurch zu einer einzigen Zeile zusammengefasst.
Merksatz „DISTINCT fasst identische Zeilen im Ergebnis zu einer zusammen.“
DISTINCT
Filterung mit WHERE
Einschränkung auf bestimmte Datensätze.
WHERE-Bedingungen vergleichen Spaltenwerte mit Operatoren:
WHERE
=, != (Ungleich), >, <, >=, <=
LIKE (Muster), IN (Werte in einer Liste), BETWEEN …
IS NULL bzw. IS NOT NULL
Logische Verknüpfungen: AND, OR, NOT
Beispiel
sql
CopyEdit
SELECT Name, Population FROM Country WHERE Continent = 'Asia' AND Population > 1000000000;
Merksatz „WHERE grenzt die Ergebnismenge auf die passenden Datensätze ein.“
Sortierung mit ORDER BY
Sortierte Ausgabe der Ergebnisse.
ORDER BY Spalte [ASC|DESC]
Mehrfache Sortierkriterien (z. B. ORDER BY Kontinent ASC, Population DESC).
ORDER BY Kontinent ASC, Population DESC
SELECT Name, Population FROM Country ORDER BY Population DESC;
(Sortiert nach Einwohnerzahl absteigend.)
Merksatz „ORDER BY strukturiert das Ergebnis nach gewünschten Spalten.“
ORDER BY
Gruppierung mit GROUP BY
Daten nach bestimmten Spalten zusammenfassen (Gruppierung).
GROUP BY fasst Zeilen mit gleichen Attributwerten zu einer Gruppe zusammen.
GROUP BY
Typische Aggregatsfunktionen in Verbindung mit GROUP BY:
COUNT(*), SUM(...), AVG(...), MIN(...), MAX(...)
COUNT(*)
SUM(...)
AVG(...)
MIN(...)
MAX(...)
SELECT Continent, COUNT(*) AS AnzahlLaender FROM Country GROUP BY Continent;
(Gibt die Zahl der Länder pro Kontinent.)
Merksatz „GROUP BY bündelt Ergebnisse; Aggregatsfunktionen fassen Werte in Gruppen zusammen.“
HAVING – Bedingung auf Gruppen
Gruppenergebnisse filtern.
HAVING funktioniert ähnlich wie WHERE, bezieht sich aber auf bereits gruppierte Daten.
HAVING
Wird nur zusammen mit GROUP BY verwendet.
Beispiel: Nur Gruppen ausgeben, deren Summe größer/kleiner als ein bestimmter Wert ist.
SELECT Continent, COUNT(*) AS AnzahlLaender FROM Country GROUP BY Continent HAVING COUNT(*) > 3;
Merksatz „HAVING filtert Gruppenergebnisse (nach Aggregation), WHERE filtert Einzelzeilen (vor Aggregation).“
Aggregatsfunktionen
Zusammenfassung oder Auswertung einer ganzen Spalte.
COUNT(*) → Anzahl Zeilen
SUM(spalte) → Summe aller Werte
SUM(spalte)
AVG(spalte) → Durchschnitt
AVG(spalte)
MIN(spalte) / MAX(spalte) → Minimum / Maximum
MIN(spalte)
MAX(spalte)
SELECT Continent, MAX(Population) AS MaxEinwohner FROM Country GROUP BY Continent;
Merksatz „Aggregatsfunktionen laufen immer über mehrere Zeilen und liefern einen einzelnen Wert pro Gruppe.“
Unterabfragen (Subselects)
SELECT-Statements innerhalb von SELECT.
Unterabfragen können in WHERE- oder HAVING-Bedingungen verwendet werden.
Vergleichsoperatoren: IN, ANY, ALL, EXISTS.
IN
ANY
ALL
EXISTS
Beispiel: „Finde alle Länder, deren Fläche über der durchschnittlichen Fläche liegt.“
SELECT Name FROM Country WHERE Area > (SELECT AVG(Area) FROM Country);
Merksatz „Unterabfragen erlauben es, dynamische Vergleichswerte direkt aus den Daten zu berechnen.“
Best Practice für Abfragen
Praxis-Tipps.
Spalten gezielt auswählen statt SELECT * → Performance und Übersicht.
SELECT *
WHERE-Filter konkret formulieren.
Sortierkriterien nur falls nötig verwenden (kann aufwendig sein).
Bei vielen Gruppen oder großen Tabellen: nur sinnvolle Aggregatsfunktionen nutzen.
Merksatz „Gute SQL-Abfragen sind präzise, vermeiden unnötige Daten und verbessern Performance.“
Last changed2 months ago