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;