SQL-Anweisungen

Eine umfangreiche Liste der gängigen SQL Anweisungen mit Beispielen...

Absolutwert (ABS)

Die Funktion ABS wandelt negativen Zahlen in positive und läßt positive Zahlen unverändert.
SELECT ABS(ANZAHLUNG)
FROM ZAHLUNGEN;

Addiere Monate (ADD_MONTHS)

Diese Funktion addiert eine Anzahl von Monaten auf ein angegebenes Datum.
SELECT URLANFANG, ADD_MONTHS(URLANFANG,1)
FROM URLAUB;

Anzahl (COUNT)

Die Funktion COUNT liefert die Anzahl der Zeilen, die der Bedingung in der WHERE-Klausel entsprechen.
SELECT COUNT(*)
FROM URLAUB
WHERE NAME = 'URLAUBER';

Wenn man COUNT ohne eine WHERE-Klausel verwendet wird, wird die Anzahl aller Datensätze in der Tabelle zurückgegeben.
SELECT COUNT(*)
FROM URLAUB;

ALL

Der Operator ALL liefert nur TRUE wenn die Ergebnisse einer Unterabfrage die Beding erfüllen.
SELECT NAME, VORNAME
FROM URLAUB
WHERE NAME <> ALL
(SELECT NAME
FROM URLAUB
WHERE NAME = 'URLAUBER')

ANY

ANY eine Unterabfrage mit der Abfrage (Rückgabewert TRUE wenn der Vergleich Werte liefert bzw. FALSE wenn Ergebnis NULL ist)
SELECT NAME, VORNAME
FROM URLAUB
WHERE NAME > ANY
(SELECT NAME
FROM URLAUB
WHERE NAME = 'URLAUBER')

CEIL

Die Funktion CEIL gibt die angrenzende ganze Zahl zurück, die größer bzw. gleich dem übergebenen Wert ist.
SELECT CEIL(ANZAHLUNG)
FROM ZAHLUNGEN;

CHR

Die Funktion CHR liefert das zum numerischen Argument äquivalente Zeichen (ASCII) zurück.

CONCAT

Die Funktion CONCAT verbindet Strings.
SELECT CONCAT(NAME, VORNAME)
FROM URLAUB;

COS, COSH, SIN, SINH, TAN und TANH

Die trigonometrischen Funktionen COS, SIN und TAN sowie die Hyperbelfunktionen COSH, SINH und TANH liefern den Kosinus, Sinus, Tangens, Hyperbelkosinus, Hyperbelsinus bzw. Hyperbeltangens einer Zahl zurück. Das Argument ist im Bogenmaß anzugeben. Damit diese Funktion mit Argumenten im Gradmaß arbeitet, muß man das Bogenmaß in das Gradmaß umrechnen.

Differenz (MINUS)

Der Operator MINUS gibt nur die Zeilen aus der ersten Abfrage, die nicht in der zweiten Abfrage enthalten sind.
SELECT NAME
FROM URLAUB
MINUS
SELECT NAME
FROM MITREISENDE;

DISTINCT

Abfragen ohne Wiederholungen
SELECT DISTINCT NAME
FROM URLAUB;

Das Schlüsselwort DISTINCT bewirkt, dass doppelt vorhandene Daten nur einmal erscheinen.
In der grundlegenden SELECT-Anweisung ist das Schlüsselwort ALL (für alle Datensätze) implizit enthalten.
Allerdings wird man dieses Schlüsselwort kaum vorfinden, da SELECT <Tabelle> und SELECT ALL <Tabelle> dasselbe Ergebnis liefern.

Division (/)

SELECT HOTEL, PREIS NORMALPREIS, (PREIS / 2) SUPERSONDERPREIS
FROM PREISLISTE;

Diese Anweisung teilt den PREIS durch 2 und liefert das Ergebnis.

EQUI JOIN (Gleichverknüpfung)

Die Tabellen werden über die Gleichverbindung der Spalten verknüpft.
SELECT U.NAME, U.VORNAME, U.ALTER, U.URLANFANG, U.URLENDE, M.NAME_ID, M.NAME, M.VORNAME, M.ALTER, P.LAND, P.STADT, P.HOTEL, P.KATEGORIE, P.PREIS
FROM MITREISENDE M, PREISLISTE P, URLAUB U
WHERE
M.NAME_ID = U.NAME_ID
AND
P.UNTERKUNFT_ID = U.UNTERKUNFT_ID

EXISTS

EXISTS übernimmt eine Unterabfrage als Argument (Rückgabewert TRUE wenn die Unterabfrage Werte liefert bzw. FALSE wenn Ergebnis NULL ist)
SELECT NAME, VORNAME
FROM URLAUB
WHERE EXISTS
(SELECT *
FROM URLAUB
WHERE NAME = 'URLAUBER')

EXP

Die Funktion EXP liefert die Basis e (eulersche Zahl e = 2,718281828459...) potenziert mit der als Argument angegebenen Zahl.

FLOOR

Die Funktion FLOOR gibt die angrenzende ganze Zahl zurück, die kleiner bzw. gleich dem übergebenen Wert ist.
SELECT FLOOR(ANZAHLUNG)
FROM ZAHLUNGEN;

FROM

FROM <Tabellenreferenz> [, <Tabellenreferenz> ...]
FROM spezifiziert, welche Tabellen verwendet und/oder verknüpft werden.

Gleichheitszeichen (=)

In der WHERE-Klausel dient das Gleichheitszeichen in der Regel als Vergleichsoperator.
SELECT NAME, URLANFANG, URLENDE
FROM URLAUB
WHERE NAME = 'URLAUBER';

Gleich-Größer als (>=)

SELECT *
FROM PREISLISTE
WHERE PREIS >= 20;

Gleich-Kleiner als (<=)

SELECT *
FROM PREISLISTE
WHERE PREIS <= 20;

Vergleichsoperatoren lassen sich für alle Datentypen einsetzen dabei werden die Ergebnisse vom jeweiligen Datentyp bestimmt.

GREATEST

Die Funktion GREATEST ermittelt das größte Element aus einer Liste.
GREATEST('A', 'B', 'C', 'D')

Größer als (>)

SELECT *
FROM PREISLISTE
WHERE PREIS > 20;

GROUP BY

Die Anweisung GROUP BY ermöglicht die Gruppierung der abgefragten Daten nach gleichen Spaltenwert(en). Die Gruppierungskriterien müssen eindeutig sein.
SELECT NAME||', '||VORNAME, COUNT(NAME)
FROM URLAUB
GROUP BY NAME||', '||VORNAME;

HAVING

HAVING ist nur gültig mit GROUP BY und schränkt die Auswahl auf die Gruppen ein, die Klausel HAVING ermöglicht den Einsatz von Aggregatfunktionen in einer Vergleichsanweisung und liefert ein konstruktives Element, das der WHERE-Klausel für einzelne Zeilen entspricht.
SELECT STADT, MIN(PREIS), MAX(PREIS)
FROM PREISLISTE
GROUP BY STADT
HAVING MIN(PREIS) < 50;

Das nächste Beispiel zeigt eine HAVING-Klausel mit dem Operator IN.
SELECT STADT, MIN(PREIS)
FROM PREISLISTE
GROUP BY STADT
HAVING STADT IN ('BERLIN', 'HAMBURG');

IN

Der Operator IN stellt eine Kurzversionen für Vergleichsoperationen bereit.
SELECT NAME || ', ' || VORNAME
FROM URLAUB
WHERE NAME IN ('URLAUBER', 'BLAUMACHER');

INITCAP

Die Funktion INITCAP wandelt das erste Zeichen eines Strings in einen Großbuchstaben und alle übrigen Zeichen in Kleinbuchstaben um.
SELECT INITCAP(NAME)
FROM URLAUB;

INNER JOIN (Innere Verknüpfung)

Eine INNER JOIN kombiniert die Zeilen einer Tabelle mit sich selbst.
SELECT U.NAME_ID, U.NAME, U.VORNAME, M.NAME, M.VORNAME
FROM URLAUB U
JOIN MITREISENDE M ON MITREISENDE.NAME = 'URLAUBER'

INSTR

Mit der Funktion INSTR kann man das X. Auftreten von Zeichen(folgen) in einem String ermitteln. Ist die Startposition negativ beginnt die Suche vom Ende des Strings.
INSTR(String, Suchzeichen(folge), Startposition optional, Welche Übereinstimmung soll gefunden werden optional);
SELECT INSTR(NAME, 'e', 2, 1)
FROM URLAUB;

INTERSECT

INTERSECT gibt alle gemeinsamen Elemente aus den Ergebnismengen zweier SELECT-Anweisungen zurück.

Kleiner als (<)

SELECT *
FROM PREISLISTE
WHERE PREIS < 20;

LEAST

Die Funktion LEAST ermitteln das kleinste Element aus einer Liste.
LEAST(34, 567, 3, 45, 1090)

LENGTH

Die Funktion LENGTH gibt die Zeichenfolgenlänge des Strings zurück.
SELECT LENGTH(NAME)
FROM URLAUB;

Letzter Tag (LAST_DAY)

Die Funktion LAST_DAY ermittelt letzten Tag eines Monats (Schaltjahre werden berücksichtigt).
SELECT URLANFANG, LAST_DAY(URLANFANG)
FROM URLAUB;

LIKE

Liefert als Rückgabewert die Daten welche einem bestimmten Muster entsprechen, aber keine genauen Übereinstimmungen haben.
SELECT NAME, URLANFANG, URLENDE
FROM URLAUB
WHERE NAME LIKE '%LAUB%';

Das Prozentzeichen dient dabei als Platzhalter für eine beliebige Anzahl von Zeichen. Die Groß-/Kleinschreibung wird dabei berücksichtigt.

LN

Die Funktion LN gibt den natürlichen Logarithmus einer Zahl zurück (nur positve Argumente erlaubt siehe ABS).

LOG

Die zweite Logarithmusfunktion LOG übernimmt zwei Argumente und berechnet den Logarithmus für die Zahl (erstes Argument) zur Basis (zweites Argument).

LOWER

Die Funktion LOWER wandelt alle Zeichen in Kleinbuchstaben.
SELECT LOWER(NAME)
FROM URLAUB;

LPAD und RPAD

Die Funktionen LPAD und RPAD fügt Links oder Rechts Zeichen an Strings an.
*PAD(String, aufzufüllenden Zeichen, Füllzeichen optional - Standard Leerzeichen)
LPAD(STRING, 99, '+')

LTRIM und RTRIM

Die Funktionen LTRIM und RTRIM löscht Links oder Rechts Zeichen aus Strings.
*TRIM(String, zulöschendes Zeichen optional - Standard Leerzeichen)
LTRIM(STRING, '+')

Maximun (MAX)

Mit der Funktion MAX läßt sich der größte Wert einer Spalte ermitteln.
SELECT MAX(ANZAHLUNG)
FROM ZAHLUNGEN;

Minimum (MIN)

Mit der Funktion MIN läßt sich der kleinste Wert einer Spalte ermitteln.
SELECT MIN(ANZAHLUNG)
FROM ZAHLUNGEN;

Minus (-)

Das Minuszeichen kann das Vorzeichen einer Zahl ändern (+/-).
SELECT HOTEL, PREIS, -PREIS
FROM PREISLISTE;

Die eigentliche Verwendung des Minuszeichens ist aber die Subtraktion einer Spalte von einer anderen.
SELECT HOTEL, PREIS, (PREIS - KOSTEN) NETTOPREIS
FROM PREISLISTE;

Diese Anweisung zieht die KOSTEN vom PREIS ab und liefert das Ergebnis.

Mittelwert (AVG)

Die Funktion AVG berechnet den Mittelwert der Zahlen in einer Spalte.
SELECT AVG(ANZAHLUNG)
FROM ZAHLUNGEN;

Modulo (% oder MOD)

Gibt den Rest einer ganzzahligen Division zurück. Der Modulo-Operator läßt sich nicht auf Datentypen mit Dezimalstellen anwenden.
5 % 2 = 1
6 % 2 = 0

Einige Implementierungen von SQL implementieren Modulo als Funktion namens MOD. Die folgenden Anweisungen liefern die gleichen Ergebnisse.
MOD(5, 2)
MOD(6, 2)

MONTHS_BETWEEN

Liefert die Anzahl der Monate zwischen zwei Daten.
SELECT URLANFANG, URLENDE, MONTHS_BETWEEN(URLENDE, URLANFANG)
FROM URLAUB;

Multiplikation (*)

SELECT HOTEL, PREIS NORMALPREIS, (PREIS * 0.9) SONDERPREIS
FROM PREISLISTE

Diese Anweisung erzeugt einen Preisnachlaß von 10 Prozent.

NEXT_DAY

Die Funktion NEXT_DAY findet das nächstliegende Datum zum angegebenen Wochentag.
SELECT NEXT_DAY(URLANFANG,'FREITAG')
FROM URLAUB;

Nicht (NOT)

Wenn die Abfrage TRUE zurückgibt, wandelt NOT das Ergebnis in FALSE.
Wenn die Abfrage FALSE zurückgibt, wandelt NOT das Ergebnis in TRUE.
SELECT NAME || ', ' || VORNAME
FROM URLAUB
WHERE NAME = 'URLAUBER'
AND
VORNAME NOT LIKE 'A%';

In Verbindung mit IS kann man auf NOT auch den Wert NULL verwenden.

NON EQUI JOIN (Nicht-Gleichverknüpfung)

Die Non Equi Join verwendet für die Verknüpfung der Tabellen alle Operatoren außer dem Gleichheitszeichen.
SELECT A.ZAHL, B.ZAHL
FROM ZAHL1 A, ZAHL2 B
WHERE A.ZAHL > B.ZAHL

Oder (OR)

Der Operator OR liefert das Ergebnis TRUE wenn mindestens eine der Bedingungen TRUE ergibt.
SELECT NAME || ', ' || VORNAME
FROM URLAUB
WHERE NAME = 'URLAUBER'
OR
VORNAME = 'BERTA';

ORDER BY

Die Anweisung ORDER BY sortiert die zurückgegebenen Werte nach der/den angegebenen Spalte(n).
SELECT NAME
FROM URLAUB
ORDER BY NAME;

Mit den Schlüsselworten ASC (Standard ascending - aufsteigend) bzw. DESC (descending - absteigend) läßt sich Reihenfolge der Ausgabe festlegen.
SELECT NAME, URLANFANG
FROM URLAUB
ORDER BY NAME DESC;

Es besteht die Möglichkeit in einer Abfrage eine Spalte Aufsteigend und eine zweite Absteigend zu sortieren.
SELECT NAME, URLANFANG
FROM URLAUB
ORDER BY NAME ASC, URLANFANG DESC;

OUTER JOIN (äußere Verknüfung)

Eine LEFT OUTER JOIN (gruppiert zwei Tabellen) gibt dabei alle Datensätze aus der ersten (links) angegebenen Tabelle zurück, auch wenn keine entsprechenden Werte für Datensätze in der zweiten (rechten) Tabelle existieren. Leere Felder werden dabei mit NULL-Werten gefüllt.
SELECT U.NAME_ID, U.NAME, U.VORNAME, COUNT(M.NAME) MITREISENDE
FROM URLAUB U
LEFT OUTER JOIN MITREISENDE M ON U.NAME_ID = M.NAME_ID
GROUP BY U.NAME_ID, U.NAME, U.VORNAME

Plus (+)

Beispiel Preis + 5 EURO
SELECT HOTEL, PREIS, PREIS + 5.00
FROM PREISLISTE;

Diese Anweisung addiert 5 Euro zu allen Preisen und liefert das Ergebnis.
Sie müssen bei der Eingabe von Zahlenwerten den Punkt als Dezimalzeichen verwenden. Ein Komma wird als Trennzeichen zwischen zwei Spalten interpretiert!
Mit der Syntax Spaltenname Alias (Leerzeichen zwischen Spaltenname und Alias) läßt sich jede beliebige Spalte umbenennen.
SELECT HOTEL, PREIS EINKAUFSPREIS, (PREIS + 5.00) KATALOGPREIS
FROM PREISLISTE;

In bestimmten Implementierungen von SQL dient das Pluszeichen gleichzeitig als Operator zur Zeichenverkettung.

POWER

Die Funktion POWER(A, B) erhebt eine Zahl A zur B-ten Potenz. Wenn A negativ ist muß B eine ganze Zahl sein.

REPLACE

Die Funktion REPLACE nimmt eine Ersetzung vor.
REPLACE(String, Suchzeichen(folge), Ersatzzeichen optional - Standard NULL);
REPLACE(STRING, 'ABC', 'XYZ');

Schnittmengen (INTERSECT)

Der Operator INTERSECT gibt nur die Zeilen zurück, welche in beiden Abfragen enthalten sind.
SELECT NAME
FROM URLAUB
INTERSECT
SELECT NAME
FROM MITREISENDE;

SELECT

SELECT [DISTINCT | ALL]
Die Anweisung SELECT leitet alle Operationen zum Abrufen von Daten ein. Der Modifizierer DISTINCT spezifiziert eindeutige Werte und verhindert Duplikate. ALL ist der Vorgabewert und erlaubt Duplikate.

SIGN

Die Funktion SIGN ermittelt das Vorzeichen einer Zahl (Rückgabewerte: < 0 = -1; 0 = 0; > 0 = 1)

SQRT

Die Funktion SQRT berechnet die Quadratwurzel des Arguments (nur für positive Zahlen).

STARTING WITH

Die Klausel STARTING WITH ergänzt eine WHERE-Klausel und arbeitet genau wie LIKE.
SELECT NAME, URLANFANG, URLENDE
FROM URLAUB
WHERE NAME STARTING WITH('UR%');

STDDEV

Die Funktion STDDEV berechnet die Standardabweichung einer Zahlenspalte.
SELECT STDDEV(ANZAHLUNG)
FROM ZAHLUNGEN;

SUBSTR

Mit der Funktion SUBSTR lassen sich Teile eines Strings extrahieren. Wenn das Startzeichen ein negativer Wert ist wird der Startpunkt vom Ende des Strings aus berechnet.
SUBSTR(String, Startzeichen, Anzahl der Zeichen optional );
SUBSTR(STRING, 3, 5);

Summe (SUM)

Die Funktion SUM liefert die Summe aller Zahlen in einer Spalte zurück.
SELECT SUM(ANZAHLUNG)
FROM ZAHLUNGEN;

In einer Anweisung können mehrere Summen berechnet werden.
SELECT SUM(ANZAHLUNG), SUM(UEBERWEISUNG)
FROM ZAHLUNGEN;

SYSDATE

Die Funktion SYSDATE liefert System-Datum/Uhrzeit.
SELECT NAME
FROM URLAUB
WHERE URLANFANG > SYSDATE;

TO_CHAR

Die Funktion TO_CHAR wandelt eine Zahl in ein Zeichen um.
TO_CHAR(Zahl);

TO_NUMBER

Die Funktion TO_NUMBER konvertiert einen String in eine Zahl.
TO_NUMBER(String);

TRANSLATE

Die Funktion TRANSLATE benutzt zur Übersetzung zwei Zeichenfolgen (Von/Nach). Elemente des Strings welche in Von enthalten sind werden in die korrespondierenden Elemente in Nach übersetzt. Die Groß-/Kleinschreibung wird dabei berücksichtigt.
TRANSLATE(String, Von, Nach )
TRANSLATE(STRING, '0123456789ABCDEFGHIJKLMNOPQRSTUVWXYZ', '9876543210ZXYWVUTSRQPONMLKJIHGFEDCBA');

Und (AND)

Der Operator AND liefert das Ergebnis TRUE zurück, wenn beide Ergebnisse TRUE sind. Ist wenigstens ein Operand FALSE liefert AND das Ergebnis FALSE.
SELECT NAME || ', ' || VORNAME
FROM URLAUB
WHERE NAME = 'URLAUBER'
AND
VORNAME = 'ANTON';

Ungleich (< > und !=)

Mit dem Symbol für Ungleich lassen sich alle Datensätze, außer denjenigen mit den spezifizierten Werten zurückgeben.
SELECT NAME, URLANFANG, URLENDE
FROM URLAUB
WHERE NAME <> 'URLAUBER';

oder
SELECT NAME, URLANFANG, URLENDE
FROM URLAUB
WHERE NAME != 'URLAUBER';

UNION

Die Anweisung UNION gibt alle Elemente aus zwei SELECT-Anweisungen zurück.

Unterstrich (_)

Der Unterstrich dient als Platzhalter für genau ein Zeichen, es können mehrere Unterstriche verwendet werden.
SELECT NAME, URLANFANG, URLENDE
FROM URLAUB
WHERE NAME LIKE '_RLAU_ER';

UPPER

Die Funktion UPPER wandelt alle Zeichen in Großbuchstaben.
SELECT UPPER(NAME)
FROM URLAUB;

USER

Die Funktion USER ermittelt den Namen des aktuellen Datenbankbenutzers.
SELECT USER FROM URLAUB;

VARIANCE

Die Funktion VARIANCE ist das Quadrat der Standardabweichung (für statistische Berechnungen).
SELECT VARIANCE(ANZAHLUNG)
FROM ZAHLUNGEN

Vereinigungen (UNION und UNION ALL)

Der Operator UNION gibt die Ergebnisse zweier Abfragen ohne die Duplikate zurück.
SELECT NAME
FROM URLAUB
UNION
SELECT NAME
FROM MITREISENDE

Der Operator UNION ALL funktioniert wie UNION zeigt aber auch die Duplikate.
SELECT NAME
FROM URLAUB
UNION ALL
SELECT NAME
FROM MITREISENDE

WHERE

Die WHERE-Anweisung schränkt die abzurufenden Zeilen auf diejenigen ein, die der Suchbedingung entsprechen.
WHERE <Suchbedingung>
SELECT, FROM und WHERE sind die am häufigsten verwendeten Klauseln in SQL. Mit der WHERE-Klausel lassen sich Abfragen selektiv gestalten. Ohne die WHERE-Klausel kann man mit einer Abfrage lediglich alle Datensätze in ausgewählten Tabellen anzeigen.

Zeichenverkettung (||)

Strings lassen sich mit dem doppelten Pipe-Symbol || verketten. Durch ', ' wird ein Komma zwischen NAME und VORNAME eingefügt.
SELECT NAME || ', ' || VORNAME
FROM URLAUB
WHERE NAME = 'URLAUBER'

Zwischen (BETWEEN)

Der Operator BETWEEN liefert einen Bereich zwischen zwei Werten (einschliesslich der Grenzwerte).
SELECT STADT, HOTEL || ' (' || KATEGORIE || ')'
FROM PREISLISTE
WHERE PREIS BETWEEN 25.99 AND 59;