SQL-Abfragen werden verwendet, um in der Datenbank nach bestimmten Informationen zu suchen. Eine SQL-Abfrage liefert eine Tabelle mit Datensätzen zurück.
Aufbau
Eine SQL-Abfrage beginnt immer mit dem Schlüsselwort SELECT
. Danach werden die Spalten aufgelistet, die ausgewählt werden sollen; alternativ kann der Stern *
angegeben werden, um alle Spalten auszuwählen. Danach wird ein FROM
benötigt, gefolgt von einer oder mehreren Tabellen, in denen sich die Daten befinden:
SELECT [auszugebende Spalten]
FROM [Tabellenliste]
Mit WHERE
kann man eine Bedingung hinzufügen, die alle Datensätze erfüllen müssen.
Beispiel
Betrachten wir folgende Tabelle:
SELECT Titel, Erscheinungsjahr
FROM Buch
WHERE Autor = "Hans C. Andersen"
Bei dieser Abfrage werden Titel und Erscheinungsjahr aller Bücher von Hans Christian Andersen angezeigt, die in der Datenbank eingetragen sind.
SELECT *
FROM Buch
WHERE Autor <> "Hans C. Andersen"
Bei dieser Abfrage werden alle Eigenschaften aller Bücher außer denen von Hans Christian Andersen angezeigt, die in der Datenbank eingetragen sind. Das <>
bedeutet ungleich ≠.
Abfragen über mehrere Tabellen
Eine Abfrage an mehrere Tabellen liefert das Kartesische Produkt der Tabellen. Man sollte dies nur machen, wenn die Tabellen in einer Relation zueinander stehen. In diesem Fall muss man einer WHERE
-Bedingung oder einer JOIN
-Operation dafür sorgen, dass nur zusammengehörige Datensätze vereint werden.
- Beispiel ist in Arbeit.
Erweiterte Abfrage
Mit Aggregatfunktionen wie z.B. COUNT
(Anzahl der Datensätze), AVG
(Mittelwert), SUM
(Summe aller Werte), MIN
(kleinster Wert) oder MAX
(größter Wert) lassen sich aus den Datensätzen neue Informationen gewinnen. Beispiel:
SELECT MAX(Erscheinungsjahr)
FROM Buch
WHERE Autor = "Hans C. Andersen"
Dies gibt das Jahr zurück, in dem das neueste Buch von Hans Christian Andersen erschienen ist (vorausgesetzt, das Erscheinungsjahr ist als Zahl gespeichert).
Mit GROUP BY
lässt sich die Ergebnistabelle nach bestimmten Spalten gruppieren. Eine Bedingung wird mit HAVING
festgelegt.
Beispiel
SELECT COUNT(*)
FROM Buch
GROUP BY Autor
HAVING Erscheinungsjahr >= 1900
Dies gibt die Anzahl der Autoren zurück, die seit 1900 ein Buch geschrieben haben, das sich in unserer Datenbank befindet.