Eine SQL-Query zum Abfragen von Relationen hat den folgenden generischen Aufbau:
| SELECT | Spalten-1 |
| FROM | Tabellen |
| WHERE | Bedingung-1 |
| GROUP BY | Spalten-2 |
| HAVING | Bedingung-2 |
| ORDER BY | Spalten-3 |
Nur die Klauseln SELECT und FROM sind erforderlich, der Rest ist optional.
Es bedeuten ...
| Spalten-1 | Bezeichnungen der Spalten, die ausgegeben werden |
| Tabellen | Bezeichnungen der verwendeten Tabellen |
| Bedingung-1 | Auswahlbedingung für die auszugebenden Zeilen; verwendet werden |
| AND OR NOT = > < != <= >= IS NULL BETWEEN IN LIKE | |
| Spalten-2 | Bezeichnungen der Spalten, die eine Gruppe definieren. |
| Eine Gruppe bzgl. Spalte x sind diejenigen Zeilen, die bzgl. x | |
| identische Werte haben. | |
| Bedingung-2 | Bedingung zur Auswahl einer Gruppe |
| Spalten-3 | Ordnungsreihenfolge für <Spalten-1> |
Vor <Spalten-1> kann das Schlüsselwort DISTINCT stehen, welches identische Ausgabezeilen unterdrückt.
Sogenannte Aggregate Functions fassen die Werte einer Spalte oder Gruppe zusammen.
Es liefert ...
| COUNT (*) | Anzahl der Zeilen |
| COUNT (DISTINCT x) | Anzahl der verschiedenen Werte in Spalte x |
| SUM (x) | Summe der Werte in Spalte x |
| SUM (DISTINCT x) | Summe der verschiedenen Werte in Spalte x |
| AVG (x) | Durchschnitt der Werte in Spalte x |
| AVG (DISTINCT x) | Durchschnitt der verschiedenen Werte in Spalte x |
| MAX (x) | Maximum der Werte in Spalte x |
| MIN (x) | Minimum der Werte in Spalte x |
jeweils bezogen auf solche Zeilen, welche die WHERE-Bedingung erfüllen. Null-Einträge werden bei AVG, MIN, MAX und SUM ignoriert.
Spalten der Ergebnisrelation können umbenannt werden mit Hilfe der AS-Klausel.