SQL als Abfragesprache
theoretische und praktische Einführung
Wikipedia schreibt:
 SQL (Structured Query Language), ist eine Datenbanksprache
zur Definition, Abfrage und Manipulation von Daten in
relationalen Datenbanken.
 SQL ist von ANSI und ISO standardisiert und wird von fast
allen gängigen Datenbanksystemen unterstützt.
 SQL umfasst die folgenden Datenbanksprachen: Data
Manipulation Language, Data Definition Language, Data
Control Language.
Allgemeines
 Entstand gegen Ende der 70er (IBM, San Jose)
 Eigentlicher Name: SEQUEL
 Aktueller Standard: SQL:2008
 „Nichtprozedural“
 User formuliert was getan werden soll, ohne es selbst zu tun
 Beispiel-Implementierungen: MySQL, Access, uvm.
 Möglichkeiten der Erstellung per GUI oder „zu Fuß“
 Befehle orientieren sich an natürlicher Sprache (Englisch)
 Erweiterbar durch Schnittstellen zu anderen
Programmiersprachen und durch Exportfunktionen
Beispiel einer Relation
Entität/Relation
Nutzer-ID
Vorname
Nachname
Karten-Nummer
1
Heinz
Happ
34556
2
Gabi
Gabel
468786
3
Martin
Mann
123786
4
Frieda
Frau
846513
5
Harry
Hirsch
132464
Attribut
Schema
Nutzer
Tupel
Beispiel einer Relation
Bücher
Buch-ID
Autor
Verlag
Verlagsjahr
Titel
Datum
1
Hans Vielschreiber
Musterverlag
2007
Wir lernen
SQL
13.01.2007
2
J. Gutenberg
Gutenberg
und Co.
1452
Drucken
leicht
gemacht
01.01.1452
3
G. I. Caesar
Handschrift
Verlag
-44
Mein Leben
mit Asterix
16.03.-44
5
Galileo Galilei
Inquisition
International
1640
Eppur si
muove
1641
6
Charles Darwin
Vatikan Verlag
1860
Adam und
Eva
1862
Beispiel einer Relation
Entliehen
Nutzer-ID
Buch-ID
5
1
5
2
3
3
1
5
2
6
Indizes/Schlüssel
 Jedes Tupel (Zeile) in einer Tabelle kann durch einen
eindeutigen Index (Primary Key) identifiziert werden
 Dieser wird explizit vergeben oder aus bestimmten Spalten
zusammengesetzt
 Um eindeutig zu sein muss sich der zusammengesetzte
Schlüssel in mindestens einem Punkt von allen anderen
unterscheiden
Data Manipulation Language
 Daten werden abgerufen
 Daten können manipuliert werden
 Wichtigste Befehle:
SELECT
INSERT
UPDATE
DELETE
Beispiel Select
SELECT Spaltenname1, Spaltenname2 (* für Alle)
FROM Relationsname;
Wählt bestimmte Spalten aus einer bestimmten
Tabelle aus
Beispiel Select
SELECT Spaltenname1, Spaltenname2
FROM Relationsname
WHERE Bool‘sche Bedingung;
(<,>,||,=,AND,OR,BETWEEN,EXISTS,IS NULL etc.)
Wählt bestimmte Spalten aus einer bestimmten
Tabelle aus, deren Inhalt eine Bedingung erfüllt
Beispiel Select
SELECT Spaltenname1, Spaltenname2 (* für Alle)
FROM Relationsname
WHERE Bool‘sche Bedingung
ORDER BY Spaltenname asc/desc;
Wählt bestimmte Spalten aus einer bestimmten
Tabelle aus, deren Inhalt eine Bedingung erfüllt
und sortiert diese
Beispiel Select
SELECT Spaltenname1, Spaltenname2 (* für Alle)
FROM Relationsname
GROUP BY Gruppierungen
(COUNT,MAX,MIN,AVG,SUM,etc.)
Wählt bestimmte Spalten aus einer bestimmten
Tabelle aus und führt eine mathematische
Operation mit diesen durch
Kreuzen
links
rechts
A
B
B
C
1
2
3
4
2
3
4
5
SELECT *
FROM links, rechts;
A
B
B
C
1
2
3
4
2
3
3
4
1
2
4
5
2
3
4
5
Join Select
links
rechts
A
B
B
C
1
2
3
4
2
3
4
5
SELECT *
FROM links, rechts
WHERE links.B=rechts.B;
A
B
C
2
3
4
Beispiel Insert
INSERT INTO Relationsname (Spaltenname)
VALUES (Werte);
Fügt in einer bestimmten Spalte einer bestimmten
Tabelle, Werte ein.
Beispiel Update
UPDATE Relationsname
SET Spaltenname = Wert
WHERE Bool‘sche Bedingung;
Ändert in einer bestimmten Spalte einer
bestimmten Tabelle den Wert, der eine Bedingung
erfüllt.
Beispiel Delete
DELETE FROM Relationsname
WHERE Bool‘sche Bedingung;
Löscht in einer bestimmten Tabelle den Tupel, der
eine Bedingung erfüllt.
Data Definition Language
 Daten werden erzeugt
 Relationen werden erzeugt/gelöscht
 Wichtigste Befehle:
CREATE
DROP
ALTER
Beispiel Create
CREATE TABLE Relationsname
(Spaltenname1,Spaltenname2);
Erzeugt eine Tabelle mit den angegebenen Spalten.
Wobei hinter jeder Spalte ein Datentyp definiert
wird (INT,CHAR,BIT,DATE, etc.).
Exkurs: Datentypen in SQL
 int: Ganze Zahl (Variationen smallint, bigint)
 numeric (n,m): Festkommazahl (n Stellen, davon m Nachkommastellen
 float (m): Gleitkommazahl (mit m Stellen)
 real/double: Gleitkommazahlen (vom DBS festgelegt)
 char (n): Zeichenkette mit n Stellen
 varchar: Zeichenkette variabler Länge
 date: Datumsangabe
 time: Zeitangabe
 timestamp: Datum und Uhrzeit
 boolean: wahr- oder falsch-Wert
 blob (n): „Binary Large Object“ mit n Byte Länge
 clob (n): „Character Large Object“ mit n Zeichen Länge
Beispiel Create
CREATE INDEX Indexname
ON Relationsname (Spaltenname);
Erzeugt einen Index auf den angegebenen Spalten.
Beispiel Alter
ALTER TABLE Relationsname
ADD Spaltenname1, Spaltenname2;
Fügt zu einer Tabelle die angegebenen Spalten.
Wobei hinter jeder Spalte ein Datentyp angegeben
wird.
Beispiel Drop
DROP TABLE Relationsname;
Löscht eine bestimmte Tabelle.
Beispiel Drop
DROP INDEX Indexname;
Löscht einen bestimmten Index.
Data Control Language
 Rechte werden gegeben
 Rechte werden eingeschränkt
 Wichtigste Befehle:
GRANT
REVOKE
Beispiel Grant
GRANT Befehl1,Befehl2
ON Relationsname1, Relationsname2
TO Benutzername (kann auch PUBLIC sein);
[WITH GRANT OPTION;]
Gestattet Befehle auf bestimmten Tabellen,
einem/mehreren/allen Benutzern
[mit der Option dieses Recht weiterzugeben].
Beispiel Revoke
REVOKE Befehl1,Befehl2
ON Relationsname1, Relationsname2
FROM Benutzername (kann auch PUBLIC sein);
Entzieht Befehle auf bestimmten Tabellen,
einem/mehreren/allen Benutzern.

Dedy-SQL