SQL-Sprachreferenz



 

Die wichtigsten SQL-Kommandos

 

CREATE TABLE <Tabellenname> [( Spaltenname Datentyp [,Spaltenname, Datentyp]...)];

Erzeugen einer neuen Tabelle.

Beispiel:
 

CREATE TABLE Kunde

 (Kunden_Nr CHAR(4),
 Vorname CHAR(15),
 Name  CHAR(15),
 Strasse  CHAR(15),
 PLZ  CHAR(6),
 Ort  CHAR(15));


Wichtige Datentypen:
 

INTEGER

numerisch, Wertebereich -9.999.999.999 ... 99.999.999.999

 

DECIMAL(p, q)

numerisch, p: 1 .. 19, q: 0 .. 18

Beispiel: -0.97856

NUMBER(p, q)

numerisch, p: 1 .. 20, q: 0 .. 18

Beispiel: 0.9e+24

CHAR(n)

Zeichenkette, n: 1 .. 254

Beispiel: 'Testwort'

DATE

Datum

Beispiel: '25.04.96'


 
 

ALTER TABLE <Tabellenname>
         ADD (<Spaltenname> <Datentyp> [,<Spaltenname> <Datentyp>] ...);

Hinzufügen von Spalten.

Beipiel:
 

ALTER TABLE Kunde

ADD (GebDatum DATE);


 

DROP TABLE <Tabellenname>;

Löschen einer Tabelle.

Beispiel:
 

DROP TABLE Kunde;


 

INSERT INTO <Tabellenname> [(<Spaltenliste>)]
         VALUES (<Werteliste>) | SELECT-Befehl;

Fügt eine Reihe von Daten in die Tabelle ein.

Beispiel:
 

INSERT INTO Kunde

VALUES ('K001', 'Heiner', 'Müller', 'Am Burggraben', '02345', 'Wallstedt');


 

UPDATE <Tabellenname>
         SET <Spaltenname> = <Ausdruck> [,<Spaltenname> = <Ausdruck>] ...
         [ WHERE <Bedingungsausdruck> ];

Verändern bestehender Zeilen.

Beispiel:
 

UPDATE Kunde

SET  Zuname = 'Meier'
WHERE Kunden_Nr = 'K001';


 

COMMIT;

- alle innerhalb einer Transaktion gemachten Änderungen bleibend machen
- eine Transaktion beenden
 
 

CREATE VIEW <Viewname> [(<Spaltenliste>)]
         AS <SELECT-Angabe>;

Erzeugen einer Sicht (virtuelle Tabelle).

Beispiel:
 

CREATE VIEW KundView (Rufname, Familienname)

AS SELECT Vorname, Zuname
FROM Kunde;


 

DROP VIEW <Viewname>;

Löschen einer Sicht (virtuellen Tabelle).

Beispiel:
 

DROP VIEW KundView;


 

Einige ausgewählte SQL-Plus-Kommandos


SQL-Plus-Kommandos müssen nicht mit einem Semikolon abgeschlossen werden.
 
 

CONNECT <Datenbankname>

Stellt eine Verbindung zu der angegebenen Datenbank her. Eine bestehende Verbindung wird beendet.
 
 

START <Filename>

Führt die in der Textdatei <Filename> gespeicherten SQL-Kommandos aus.
 
 

QUIT

Verlassen von SQL-Plus
 

Das Select-Kommando mit seinen Komponenten

 

SELECT [DISTINCT] * | <Spaltenliste>
           FROM  <Tabellenliste>
            [ WHERE <Ausdrucksliste> ]
            [ GROUP BY <Gruppierungsliste> ]
            [ ORDER BY <Spaltenname> [ASC | DESC][, <Spaltenname> [ASC | DESC] ]... ;

Die SELECT-Komponente

DISTINCT (engl.: unterschiedlich) verhindert, daß im Ergebnis mehrere Zeilen mit denselben Werten vorkommen.

In der <Spaltenliste> werden die Namen der gewünschten Spalten der in der <Tabellenliste> angegebenen Tabellen aufgeführt:

[<Qualifikator>.] <Spaltenname>  [, [<Qualifikator>.]<Spaltenname>] ...

Vor dem Spaltennamen kann ein s.g. Qualifikator stehen. Das ist eine Namenserweiterung, damit der Spaltenname eindeutig wird.

Ein Qualifikator kann entweder der vollständige Tabellenname oder ein in der <Tabellenliste> festlegbarer Aliasname der Tabelle sein. Ein Aliasname ist nur innerhalb eines Select-Befehles gültig !

Beispiel: siehe Beispiel für Vergleichsausdrücke (weiter unten)

Wird anstelle der <Spaltenliste> der Stern (*) angegeben, so werden alle Spalten der in der Tabellenliste verzeichneten Tabellen zurückgegeben. (keine Auswahl von Spalten)
 

Die FROM-Komponente

In der <Tabellenliste> werden die Tabellennamen angegeben, auf die sich der SELECT-Befehl bezieht. Mehr als ein Tabellenname erzeugt aus diesen Tabellen einen s.g. Verbund (engl.: join)
 

Die WHERE-Komponente

Der WHERE-Komponente folgt eine <Ausdrucksliste>, die die Suchbedingung des SELECT-Befehls darstellt.
Die Auswertung der Suchbedingung ergibt entweder den Wert wahr oder falsch. Dadurch wird entschieden, ob eine Zeile in das Ergebnis des SELECT-Befehls aufgenommen wird oder nicht.
Mit Suchbedingungen werden Prädikate geschrieben. Das sind Aussagen über eine Eigenschaft einer Zeile.
Ein Prädikat kann aus mehreren Teilprädikaten bestehen, die über logische Operatoren (AND / OR / NOT) miteinander verknüpft sind.
 

Prädikat

Beispiel

einfacher Vergleichsausdruck

Preis > 1000

zusammengesetzter Vergleichsausdruck

Name >= 'A' AND Name < 'N'

BETWEEN-Prädikat

Betrag BETWEEN 100 AND 1000

IN-Prädikat

Ort IN ('Halle', 'Merseburg', 'Querfurt')

EXISTS-Prädikat

EXISTS (Select Kunden_Nr FROM Rechnung)

LIKE-Prädikat

Titel LIKE '%Oracle%'

Einfache und zusammengesetzte Vergleichsausdrücke

Vergleichsoperatoren:

= gleich
< kleiner
> größer
<= kleiner oder gleich
>= größer oder gleich
<> ungleich

Einer der Operanden in einem Vergleichsausdruck muß einen Spaltennamen enthalten !

In der WHERE-Komponente eines SELECT-Befehls ist es möglich, einen weiteren SELECT-Befehl anzugeben. Dieser geschachtelte SELECT-Befehl wird Unterabfrage (engl: subquery) genannt.

Beispiel: Kundendaten des Kunden mit dem höchsten Rechnungsbetrag, mindestens jedoch 1000,-DM
 

SELECT Kunden_Nr, Vorname, Name, Ort

FROM Kunde K
WHERE 1000 <= (SELECT MAX (Betrag)

FROM Rechnung R
WHERE R.Kunden_Nr = K.Kunden_Nr);


In dieser Unterabfrage wurde zusätzlich eine SQL-Funktion (MAX) verwendet, die im obigen Falle den größten Wert der Spalte mit dem Namen Betrag ermittelt. Außerdem wurde mit Alias-Namen für die beiden Tabellen Rechnung und Kunde gearbeitet.
 

Das BETWEEN-Prädikat

Mit dem BETWEEN-Prädiakt kann geprüft werden, ob ein Wert innerhalb eines Intervalls (Bereichsgrenzen eingeschlossen) liegt.
Mit NOT BETWEEN kann leicht getestet werden, ob ein Wert außerhalb eines Intervalls liegt.

Beispiel: Kundendaten der Kunden, deren Kundennummer nicht im Bereich K100 bis K400 liegt
 

SELECT Kunden_Nr, Name, Ort

FROM Kunde
WHERE Kunden_Nr  NOT BETWEEN 'K100' AND 'K200';

Das IN-Prädikat

Es wird getestet, ob der vor IN angeführte Ausdruck in einer nach IN angegebenen Ausdrucksliste (Wertemenge) enthalten ist.
Diese Wertemenge kann auch Ergebnis einer Unterabfrage sein.

Beispiel: Ausgabe der Kundendaten der Kunden, die eine Rechnung über 1000 Mark erhalten haben
 

SELECT Kunden_Nr, Name, Vorname, Ort

FROM Kunde
WHERE Kunden_Nr IN (SELECT Kunden_Nr

FROM Rechnung
WHERE Betrag > 1000);

Das EXISTS-Prädikat

Es wird bestimmt, ob die dem EXIST-Prädikat folgende Unterabfrage mindestens eine Ergebniszeile liefert.

Beispiel: Auswahl aller Kundendaten, die auch (mindestens) eine Rechnung erhalten haben.
 

SELECT *

FROM Kunde
WHERE EXISTS (SELECT Kunden_Nr

FROM Rechnung
WHERE Rechnung.Kunden_Nr = Kunde.Kunden_Nr;

Das LIKE-Prädikat

In dem nach LIKE angegebenen Ausdruck können Platzhalter verwendet werden. So bedeutet der Unterstrich '_' genau ein beliebiges Zeichen, das Prozentzeichen '%' steht für eine beliebig lange Zeichenkette.

Beispiel: Kundendaten der Kunden, die Meierhofer, Mayerhofer oder so ähnlich heißen.
 

SELECT *

FROM Kunde
WHERE name LIKE 'M__erhofer';

Die GROUP BY-Komponente

Die GROUP BY-Komponente faßt mehrere Zeilen zu einer Zeile zusammen (gruppiert Zeilen)
Der in der GROUP BY-Komponente verwendete Spaltenname muß in der <Spaltenliste> der SELECT-Komponente ebenfalls angegeben worden sein. Zusätzlich zu diesem Spaltennamen dürfen in der Spaltenliste ebenfalls SQL-Funktionen (s.u.) auftreten.

Beispiel: Kundennummer, Zuname und Summe der Rechnungsbeträge je Kunde.
 

SELECT K.Kunden_Nr, Name, SUM(Betrag)

FROM Kunde K, Rechnung R
WHERE K.Kunden_Nr = R.Kunden_Nr
GROUP BY K.Kunden_Nr, Name;

Die ORDER BY-Komponente

Mit der ORDER BY-Komponente wird das Ergebnis einer Abfrage in der gewünschten Reihenfolge bereitgestellt. Die Ergebnisreihen werden nach den angegebenen Spalten sortiert, je nach ASC oder DESC aufsteigend oder absteigend.

Beispiel: Alle Studenten des Matrikel INF94 geordnet nach Alter (der jüngste zuerst)
 

SELECT *

FROM Studenten
WHERE Matrikel = 'INF94'
ORDER BY GebDatum DESC;


Werden mehrere Spaltennamen angegeben, so ergibt sich eine hierarchische Sortierung.

Beispiel: Alle Kunden geordnet nach Name und Vorname ausgeben:
 

SELECT *

FROM Kunde
ORDER BY Name, Vorname;


 

Eingebaute SQL-Funktionen

COUNT

Die COUNT-Funktion liefert die Anzahl der ausgewählten Reihen anstelle ihrer Niederschrift.

Beispiel: Anzahl der Kunden in der Kundendatei:
 

SELECT COUNT(*)

FROM Kunde;


SUM

Die SUM-Funktion liefert die Summe aller Werte in den selektierten Reihen einer numerischen Spalte.

Beispiel: Summe aller Rechnungsbeträge des Kunden K001.
 

SELECT SUM(Betrag)

FROM Rechnung
WHERE Kunden_Nr = 'K001';


MIN, MAX

Die MIN-Funktion liefert den kleinsten Wert aller selektierten Reihen einer Spalte.
Die MAX-Funktion liefert den größten Wert aller selektierten Reihen einer Spalte.

Beispiel: Der kleinste Rechnungsbetrag.
 

SELECT MIN(Betrag)

FROM Rechnung;


AVG

Die Funktion AVG liefert den Durchschnitt (Gewogenes arithmetisches Mittel) aller selektierten Reihen einer numerischen Spalte.

Beispiel: Der durchschnittliche Rechnungsbetrag.
 

SELECT AVG(Betrag)

FROM Rechnung;



zurück zur Homepage

(C) Klaus Rittmeier