SQL
ist eine relationale Anfragesprache.
SELECT x
FROM y
WHERE True/False
Das Ergebnis von SELECT ist immer eine Multi-Menge. Es werden also keine Duplikate entfernt. Um Duplikate zu eliminieren verwendet man das Stichwort DISTINCT. (vergleichbar mit Projektion und Selektion aus der Relationenalgebra)
Mengenvergleiche
WHERE x IN (1, 2, 3)
WHERE x IN (SELECT ...)
WHERE EXISTS (SELECT ...)
Quantoren
WHERE x = ANY ()
WHERE x > ALL ()
Join
Sortierung
ORDER BY x ASC, y DES
Mengenoperatoren
In SQL sind auch die gängigen Mengenoperationen UNION, INTERSECT und EXCEPT verfügbar. Natürlich müssen dafür die Relationen auch vereinigungsverträglich sein.
Aggregationsfunktionen
- MIN / MAX
- COUNT
- COUNT(DISTINCT)
- AVG / SUM
Gruppierung
Manchmal möchte man Aggregationsfunktionen nur auf einen Teil einer Spalte anwenden und nicht auf alle Einträge. Dafür gibt es das Prinzip der Gruppierung. Man teilt dafür die Relation anhand einer Spalte in Gruppen auf und kann dann für jede Gruppe nur den entsprechenden Teil einer Spalte aggregieren. Das Ergebnis enthält dann nur für jede Gruppe ein Tupel. Deswegen müssen über alle Elemente aggregiert werden, die nicht im GROUP BY Statement stehen.
HAVING
Mit dem HAVING Statement können Bedingungen auf aggregierte Spalten gestellt werden. Auch hier kann natürlich nur auf aggregierte Spalten zurückgegriffen werden.
Allgemeine Abarbeitung einer SQL Anfrage
Geschachtelte Anfragen
Mit geschachtelten Anfragen können Relationen dynamisch erzeugt werden.
Einfügen
INSERT
INTO Tabelle [Attribute]
VALUES (Werte)
Für jedes Attribut, das keinen dazugehörigen Wert in der VALUES Liste hat wird der NULL Wert angenommen.
Löschen
DELETE FROM Tabelle
WHERE Bedingung
Update
UPDATE Tabelle
SET Attribut = Wert
WHERE Bedingung
Beispiele
TOP N Anfrage
select count(*)
from table
...