06 - Infoblatt DQL
Funktionen in SELECT-Abfragen
Im SQL-Standard werden einige wenige Funktionen festgelegt, die in jedem SQL-Dialekt vorkommen. In aller Regel ergänzt jedes DBMS diese Funktionen durch weitere eigene. Eine ganze Reihe davon kann als Standard angesehen werden, weil sie immer (oder fast immer) vorhanden sind. An vielen Stellen ist aber auf Unterschiede im Namen oder in der Art des Aufrufs hinzuweisen.
Aggregatfunktionen
Aggregatfunktionen (Gruppenfunktionen) werten eine oder mehrere Spalten einer Tabelle nach bestimmten Kriterien aus. Das Ergebnis wird in einem Feld ausgegeben:
Funktion | Ergebnis |
---|---|
MIN(Spaltenname) | Minimalwert der Feldinhalte einer Spalte |
MAX(Spaltenname) | Maximalwert |
COUNT(Spaltenname) | Anzahl der vorhandenen Einträge in einer Spalte |
COUNT(*) | Anzahl aller Datensätze |
SUM(Spaltenname) | Summe der Feldinhalte einer Spalte |
AVG(Spaltenname) | Arithmetischer Mittelwert der Feldinhalte |
Bsp.: SELECT AVG(Beitrag) AS Durchschnittsbeitrag FROM sportarten;
Mathematische Funktionen
Mit den Werten aus numerischen Spalten können Rechenoperationen durchgeführt werden. Neben den üblichen Operatoren für Grundrechenarten (+, -, *, /) sowie den üblichen mathematischen Regeln (Punkt vor Strich) existieren zusätzlich mathematische Funktionen:
Funktion | Ergebnis |
---|---|
ABS(zahl) | Absoluter Wert (ohne negatives Vorzeichen) |
SQRT(zahl) | Wurzel einer Zahl |
RAND() | Zufallszahl zwischen 0 und 1 |
ISNULL(Ausdruck) | Wert = 1 wenn Feldinhalt leer, sonst 0 |
EXP(Wert) | Ergibt e^Wert mit der Eulerschen Zahl e = 2,718… |
LOG(Wert) | Der natürliche Logarithmus |
SIGN(Wert) | Liefert -1 für negative Werte und 1 für positive Werte |
MOD(Wert, Divisor) | Restwert der ganzzahligen Division von Wert/Divisor |
POWER(X, Y) | X hoch Y → xʸ |
ROUND(zahl, Genauigkeit) | Rundet mathematisch auf angegebene Anzahl an Nachkommastellen (z. B.: SELECT ROUND(12.248, 2); ) |
Zeichenkettenfunktionen
Um mit Zeichenketten zu arbeiten stehen folgende Funktionen zur Verfügung:
Funktion | Ergebnis |
---|---|
ASCII(’n') | Liefert die ASCII-Codenummer von n |
UPPER(‘string’) | Wandelt in Großbuchstaben um |
LOWER(‘string’) | …in Kleinbuchstaben (z. B.: SELECT LOWER('MÜLLER'); ) |
CHAR_LENGTH(‘string’) | Gibt die Zeichenanzahl aus |
CONCAT(‘string’, ‘string’, …) | Gibt verknüpfte übergebene Zeichenketten aus |
Datumsfunktionen
Für die Datentypen Datum und Zeit gibt es spezielle Funktionen, für die wie immer gilt: Jeder SQL-Dialekt hat sich seinen eigenen „Standard“ ausgedacht. So oder so ähnlich gibt es folgende Funktionen in allen Dialekten (genaueres in den DBMS-Dokumentationen):
Funktion | Ergebnis |
---|---|
CURRENT_DATE() | Aktuelles Datum |
CURRENT_TIME() | Aktuelle Uhrzeit |
CURRENT_TIMESTAMP() | Aktuelles Datum und Aktuelle Uhrzeit |
DAYOFWEEK(value) | Gibt den Wochentag an (als Zahl, 1 für Sonntag usw.) |
EXTRACT(<part> FROM <value>)
<part> ist der Teil des betreffenden Datum/Uhrzeit/Timestamp: YEAR | MONTH | DAY | HOUR | MINUTE | SECOND | MILLISECONDS
Oder alternativ: YEAR(<value>) | MONTH(<value>) | DAY(<value>) | …
Beispiele: SELECT EXTRACT(DAY FROM CURRENT_TIMESTAMP()); oder SELECT YEAR(CURRENT_TIMESTAMP());