SQL (Structured Query Language - strukturierte Abfragesprache)
In vielen Bereichen wird auf Informationen in Datenbanken zurückgegriffen. Im Programm Microsoft Access lassen sich SQL-Anweisungen
manuell eingeben oder mit den visuellen Werkzeugen der Benutzeroberfläche erstellen. Das Programm Microsoft Query übergibt
SQL-Anweisungen an einen Treiber, der die Anweisungen verarbeitet und sie dann an ein Datenbanksystem weiterreicht. Mit SQL*Plus
von Oracle als Werkzeug lassen sich SQL-Anweisungen für eine Datenbank eingeben.
ODBC (Open Database Connectivity)
Definiert eine Schnittstelle für den Datenbankzugriff um damit per SQL auf Daten zugreifen zu können.
Allgemeine Syntaxregeln
Zu beachten sind Groß-/Kleinschreibung, Leerzeichen und logische Trennung der Komponenten durch SQL-Schlüsselwörter.
Die meisten Anweisungen beginnen mit
SELECT
gefolgt von
FROM
.
SELECT <Spaltennamen>
FROM <Tabelle>;
Beispiel einer Abfrage
SELECT * FROM URLAUB;
Das Sternchen (
*
) in weist die Datenbank an, alle Spalten aus der Tabelle
URLAUB
zurückzugeben. Die Reihenfolge der Spalten wird durch die Datenbank bestimmt.
Die Reihenfolge der Spalten in der Ausgabe wird festgelegt indem die Spaltennamen in der Reihenfolge der gewünschten Ausgabe
mitgegeben werden. Die Spaltennamen werden durch Komma getrennt. Es werden nur die namentlich angegebenen Spalten ausgegeben.
Zwischen dem letzten Spaltennamen und
FROM
darf kein Komma stehen.
Beispiel Grossbuchstaben
SELECT NAME, URLANFANG, URLENDE
FROM URLAUB
WHERE NAME = 'URLAUBER';
Beispiel Schlüsselwörter in Kleinbuchstaben
select name, urlanfang, urlende
from urlaub
where name = 'URLAUBER';
Beispiel ohne Zeilenumbruch
SELECT NAME, URLANFANG, URLENDE FROM URLAUB WHERE NAME = 'URLAUBER';
Zu beachten ist das
URLAUBER
in allen Beispielen groß geschrieben wird. Die SQL-Anweisung ist nicht von der
Groß-/Kleinschreibung abhängig. Bei Bezügen auf Daten in einer Datenbank ist die Schreibweise jedoch genau einzuhalten.
Im Beispiel wurde angenommen, dass die Spalte
NAME
nur Großbuchstaben enthält.
Daher führt eine Suche nach
Urlauber
in der Spalte
NAME
nicht zu den gewünschten Ergebnissen.
Befehlszeilenorientierte SQL-Programme benötigen ein Semikolon am Ende des Ausdrucks, damit die Abfrage ausgeführt wird.
Microsoft Query erfordert kein Abschlusszeichen, da die Abfrage in ein Bearbeitungsfeld
eingegeben und bei Betätigung der Schaltfläche ausgeführt wird.
Arithmetische Operatoren
Wenn in einem Ausdruck mehrere Operatoren ohne Klammern vorkommen, findet die Auswertung der Ausdrücke in der folgenden
Reihenfolge statt: Multiplikation, Division, Modulo, Addition und Subtraktion
Bedingungen
Um ein bestimmtes Element oder eine Gruppe von Elementen in einer Datenbank zu suchen benötigt man eine oder mehrere Bedingungen.
Mit Bedingungen lassen sich selektive Abfragen erstellen. Die einfachste Form einer Bedingung besteht aus einer Variablen, einer
Konstanten und einem Vergleichsoperator. Im folgenden Beispiel ist
NAME
die Variable,
'URLAUBER'
die Konstante und
=
der Vergleichsoperator.
WHERE NAME = 'URLAUBER';
Die Bedingung
NAME = 'URLAUBER'
liefert einen Booleschen Ausdruck. Wenn die Gleich-Bedingung erfüllt ist liefert
NAME = 'URLAUBER'
den Wert
TRUE
ansonsten
FALSE
.
Vergleichsoperatoren
Rückgabewerte:
TRUE
= Wahr,
FALSE
= Falsch (oder
UNKNOWN
)
In Datenbanken bezeichnet
NULL
das Fehlen von Daten in einem Feld. Das bedeutet aber nicht, daß
eine Spalte eine
0
oder ein Leerzeichen enthält. Die
0
oder das Leerzeichen sind tatsächliche
Werte.
NULL
bedeutet, dass kein Wert in diesem Feld enthalten ist. Führt man einen Vergleich wie
PREIS = 9
aus und der einzige Wert für
PREIS
ist
NULL
,
liefert der Vergleich das Ergebnis
UNKNOWN
.
Die meisten SQL-Versionen wandeln daher
UNKNOWN
in
FALSE
und stellen den speziellen Operator
IS NULL
für die Suche einer
NULL
bereit.
Beispiel
NULL
- Werte aufspüren
SELECT *
FROM PREISLISTE
WHERE PREIS IS NULL;
Wenn man das Gleichheitszeichen (
=
) verwendet...
SELECT *
FROM PREISLISTE
WHERE PREIS = NULL;
...werden keine Einträge gefunden, da der Vergleich
PREIS = NULL
den Wert
FALSE
zurückgibt.
Es empfiehlt sich also
IS NULL
anstelle des Gleichheitszeichens zu verwenden und die
WHERE
-Anweisung in
WHERE PREIS IS NULL
zu ändern.
Tabellen verknüpfen
Mit SQL kann man Daten aus mehreren Tabellen in einer Abfrage verknüpfen. Wenn eine Spalte in zwei Tabellen denselben Namen hat,
muß man die anzuzeigende Spalte mit einem Alias (
FROM MITREISENDE M, PREISLISTE P, URLAUB U
) spezifizieren.
Mit diesen Aliasnamen lassen sich viele Tastenanschläge einsparen und die Lesbarkeit der Anweisung wird verbessert.
Es empfiehlt sich immer diesen Alias zu verwenden, um bei einer Erweiterung einer Tabelle Fehler durch doppelte Spaltennamen zu vermeiden.
Werden zwei Tabellen ohne die
WHERE
-Klausel verknüpft, erhält man das sogenannte kartesische Produkt.
Dabei werden alle Zeilen aus allen Tabellen in der
FROM
-Klausel miteinander verknüpft.
(z.B.: jede Tabelle hat 10 Zeilen; Ergebnismenge 10 mal 10 ergibt 100 Zeilen)
Einfache Unterabfrage
Eine Unterabfrage erstellt eine Abfrage mit den Ergebnissen aus einer Unterabfrage.
SELECT * FROM
Tabelle
WHERE (
Unterabfrage
) =
Wert
Verschachtelte Unterabfrage
Eine verschachtelte Unterabfrage enthält mindstens eine weitere Unterabfrage in dieser Unterabfrage.
SELECT * FROM
Tabelle
WHERE (
Unterabfrage
(
Unterabfrage
(
Unterabfrage...
)))