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.
- Data Definition Language (DDL):
Zum Erzeugen und Löschen von Datenbankobjekten - Data Manipulation Language (DML):
Zum Ändern, Löschen und Hinzufügen von Daten - Commit und Rollback:
Bestätigen und Verwerfen einer Datenänderung - Data Query Language (DQL):
Daten in der Datenbank auswählen, aufbereiten und auslesen
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:
|
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
This document found on : http://www.inweb.de/chetan/Deutsch/Ressourcen/SQL.html