SQL Kurzreferenz von Christian Ey 

Home > Deutsch > Ressourcen > SQL
(C) Christian R. Ey
last modified:
Tue May 13 17:02:22 GMT+02:00 2008
-- Impressum / Contact --

SQL Kurzreferenz / SQL Referenz

Empfehlung

Um auf Datenbanken per SQL zuzugreifen (unabhängig vom Datenbank-System), um SQL Batch Jobs laufen zu lassen oder einfach den Inhalt von Datenbanken zu browsen, verwende ich das kostenlose Freeware-Programm SQL Workbench von Thomas Kellerer.



 

nach oben

Data Definition Language (DDL): Zum Erzeugen und Löschen von Datenbankobjekten

DATENBANK: Erstellen - Löschen

- Erstellen:

CREATE

DATABASE

datenbankname;

- Löschen:

DROP

DATABASE

datenbankname;

- Beispiel:

CREATE

DATABASE

biblio;

 

TABELLE: Erstellen - Löschen

- Erstellen:

CREATE

TABLE

tabellenname






(

spaltenname

datentyp

[NOT NULL],





[...,]







spaltenname

datentyp

[NOT NULL]

);

- Löschen:

DROP

TABLE

tabellenname;




- Datentypen:

CHAR(n), INT, SMALLINT, NUMBER, FLOAT(n), REAL, DOUBLE PRECISION, DEC(m, [n]), DATE. Weitere Informationen über Datentypen sind in DDL Seite 4 zu finden.

 

TABELLE: Spalten hinzufügen - entfernen

- Hinzufügen:

ALTER TABLE

tabellenname




ADD

spaltenname

datentyp

[NOT NULL],



[...,]





spaltenname

datentyp

[NOT NULL];

- Entfernen:

ALTER TABLE

tabellenname





DROP

(spaltenname,





[...,]





spaltenname);


- Oder 1:

ALTER TABLE

tabellenname





DROP

COLUMN

spaltenname;

 

INDEX: Definieren - Löschen

- CREATE [UNIQUE]

INDEX indexname ON tabellenname (spaltenname, [...]);

- DROP

INDEX indexname;


 

nach oben

Data Manipulation Language (DML): Zum Ändern, Löschen und Hinzufügen von Daten

DATEN: In Tabelle eingeben - aktualisieren - löschen

- Zeilenweise:

INSERT

INTO

tabellenname







(spaltenname,

[...,]

spaltenname)




VALUES

(wert,

[...,]

wert);


- Mehrere Sätze:

INSERT

INTO

tabellenname





SELECT

spaltenname,

[...,]

spaltenname

FROM

tabellen;

- Aktualisieren:

UPDATE


tabellenname






SET

spaltenname =

ausdruck,






[...,]







spaltenname =

ausdruck





WHERE

bedingung;




- Löschen:

DELETE

FROM

tabellenname

[aliasname]





WHERE


bedingung;




 

nach oben

Commit und Rollback: Bestätigen und Verwerfen einer Datenänderung

COMMIT, ROLLBACK: Beschreibung

- COMMIT;

Niederschreiben zwischenzeitlich gemachter Änderungen an den Daten einer Datenbank.

- ROLLBACK;

Macht Änderungen an den Daten rückgängig.
Hinweis:

  1. nicht alle Änderungen können rückgängig gemacht werden
  2. damit Änderungen rückgängig gemacht werden können, muss die Datenbank-Funktion AUTOCOMMIT ausgeschaltet sein


 

nach oben

Data Query Language (DQL): Daten in der Datenbank auswählen, aufbereiten und auslesen

WHERE-Klausel: Logische Ausdrücke

- [NOT]

BETWEEN x AND y


- [NOT]

IN (x1, x2, x3, ..., xn)


- [NOT]

LIKE ‚jokerzeichenfolge'

‚_' ersetzt ein beliebiges Zeichen



‚%' ersetzt beliebig viele Zeichen

- Operatoren:

+, -, *, /, =, != (ungleich), >, <, >=, <=, AND, OR, NOT

- IS [NOT]

NULL bei Frage nach ‚NULL'-Wert

 

DISTINCT: Verhindert Mehrfachnennung

- SELECT DISTINCT spalte FROM tabelle;

 

Arithmetische Funktionen

-

@ABS(x) --> |x|, @FACTORIAL(x) --> x!, @LN(x) --> ln(x), @LOG(x) --> lg(x)

-

@INT(x) --> int(x), @ROUND(x, y) --> x auf y Stellen gerundet

-

@SIN(x) --> sin(x), @COS(x) --> cos(x), @TAN(x) --> tan(x)

-

@ACOS(x) --> arccos(x), @ASIN(x) --> arcsin(x), @ATAN (x) --> arctan(x)

-

@SQRT(x) --> Wurzel von (x)

 

Arithmetische Gruppenfunktionen

-

AVG(M) --> Durchschnitt von (M), COUNT(M) --> Anzahl der Einträge (M)

-

MAX(M)/MIN(M) --> größter/kleinster Eintrag von (M), SUM(M) --> Summe(M)

-

MEDIAN(M) --> Median von (M), SDV(M) --> Standardabweichung von (M)

 

GROUP BY-Klausel: Faßt gleiche Spalteninhalte zusammen

- SELECT deptno, SUM(sal) FROM emp GROUP BY deptno

 

HAVING-Klausel: Bedingung für GROUP BY (ähnlich WHERE, nur für Gruppen)

- SELECT job, AVG (sal) FROM emp GROUP BY job HAVING COUNT (*) > 2;

 

ORDER BY-Klausel: Sortiert die Ausgabe nach der/den angegebenen Spalte(n)

- SELECT ename, sal, empno FROM emp WHERE deptno = 30 ORDER BY sal;

 

Bearbeitung alphanumerischer Felder

-

@UPPER(‚xYz') --> ‚XYZ', @LOWER(‚xYz') --> ‚xyz'

-

SELECT ename FROM emp WHERE @UPPER (ename) = ‚WARD';

 

Konversion von NULL-Werten: @NULLVALUE (wert, ersatzwert)

- SELECT ename, (sal + @NULLVALUE (comm,0)) FROM emp;

 

Inner Join: Verknüpfung von Tabellen

- Beispiel:

SELECT

b.buch_nr,

autor,

titel,

leser_nr


FROM

buecher b,

verleih v




WHERE

b.buch_nr =

v.buch_nr;



- Beschreibung:

Hier werden die beiden Spalten buecher.buch_nr und verleih.buch_nr verglichen, und bei gleichem Inhalt in der Tabelle ausgegeben. Somit erhält man eine Tabelle mit dem Inhalt von mehreren Tabellen. Alias-Namen sind nicht zwingend, aber ratsam.

 

Auto Join/Self Join: Verknüpfung einer Tabelle mit sich selbst

- Beispiel:

SELECT

emp1.name,

emp1.sal,

emp2.name,

emp2.sal


FROM

emp emp1,

emp emp2




WHERE

(

(emp2.sal >

emp1.sal)




AND

(emp1.ename =

‚BLAKE')

);

- Beschreibung:

Hier können Angaben einer Tabelle miteinander verknüpft und verglichen werden. Alias-Namen sind wegen der garantiert doppelt vorkommenden Namen Pflicht.

 

Outer Join: Verknüpfung von Tabellen

- Beispiel:

SELECT * FROM u, v WHERE u.s1(+) = v.s1(+);

--> vollständig


SELECT * FROM u, v WHERE u.s1(+) = v.s1;

--> einseitig

- Beschreibung:

Bei dieser Tabellenverknüpfung werden auch Zeilen dargestellt, die nur in einer Tabelle vorhanden sind. Die Spalten der anderen Tabelle bleiben an dieser Stelle leer. Beim vollständigen Outer Join geschieht dies bidirektional, beim einseitigen Outer Join nur in eine Richtung.

 

Unterabfragen: Einzeilige (= Single Row Subquery)

- Beispiel:

SELECT

ename

FROM

emp




WHERE

hiredate > (

SELECT

hiredate

FROM

emp




WHERE

ename =

‚FORD'

);

- Beschreibung:

Eine SELECT-Unterabfrage ist dann einzeilig (=Single Row Subquery), wenn sie genau eine Zeile als Ergebnis liefert. Das Ergebnis der einzeiligen SELECT-Abfrage kann mit <, =, >, <= und >= verglichen werden.

 

Unterabfragen: Mehrzeilige (= Multiple Row Subquery)

- Beispiel:

SELECT

*

FROM

buecher







WHERE


buch_nr

IN (

SELECT

buch_nr

FROM

verleih

);

- Beschreibung:

Eine SELECT-Unterabfrage ist dann mehrzeilig (=Multiple Row Subquery), wenn sie als Ergebnis eine mehrzeilige Tabelle liefert, die nur mit Mengenoperatoren verglichen werden kann.

- Mengenoperatoren sind:

ANY, ALL, [NOT] IN, EXISTS, UNION, INTERSECT, MINUS. Auf den Seiten DQL 40 und DQL 42 werden diese beschrieben.

 

Unterabfragen: Abhängige (=Correlated Subquery)

- Beschreibung:

Eine Abhängige Unterabfrage bezieht sich auf die übergeordnete SELECT-Klausel und wird in DQL ab Seite 43 beschrieben.

 

VIEW: Gefilterte Ausgabe einer Tabelle

- VIEW anlegen:

CREATE

VIEW

viewname







AS

SELECT

spalte1,

spalten






FROM

tabelle







WHERE

bedingung;




- VIEW ausgeben:

SELECT

*

FROM

viewname;




- Beschreibung:

Eine VIEW ist eine Art Alias-Name für einen kompletten SELECT-Befehl. Wenn in der VIEW beispielsweise verschiedene Spalten (z.B. mit persönlichen Daten) ausgeblendet sind, so können diese auch später nicht mehr ausgegeben werden. Man könnte auch sagen, eine VIEW ist eine gefilterte Tabelle.

 

VIEW: Auch für Dateneingabe geeignet

VIEWs können zur Dateneingabe verwendet werden wenn:

-

HAVING, GROUP BY, DISTINCT, UNION nicht vorkommen

-

VIEW sich nur auf eine Tabelle bezieht

-

Keine Unterabfragen in der SELECT-Klausel vorkommen

-

Keine arithmetischen Ausdrücke als Felder vorkommen

Wenn eine dieser Bedingungen zutrifft, wird die VIEW automatisch zur READ-ONLY-VIEW, d.h. man darf Daten der VIEW nicht ändern, löschen oder erweitern.


Vielen Dank für Verbesserungsvorschläge und Tipps:

1) Daniel Lehmann, Die Schweizerische Post