Download - SQL als Abfragesprache
theoretische und praktische Einführung
SQL als Abfragesprache
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.
AllgemeinesEntstand gegen Ende der 70er (IBM, San Jose)Eigentlicher Name: SEQUELAktueller Standard: SQL:2008„Nichtprozedural“User formuliert was getan werden soll, ohne es
selbst zu tunBeispiel-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
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
Nutzer
Tupel
Attribut
Entität/Relation
Schema
Beispiel einer Relation
Buch-ID
Autor VerlagVerlagsj
ahrTitel Datum
1Hans
VielschreiberMusterver
lag2007
Wir lernen SQL
13.01.2007
2 J. GutenbergGutenberg und Co.
1452Drucken
leicht gemacht
01.01.1452
3 G. I. CaesarHandschrift Verlag
-44Mein
Leben mit Asterix
16.03.-44
5 Galileo Galilei
Inquisition
International
1640Eppur si muove
1641
6 Charles DarwinVatikan Verlag
1860Adam und
Eva1862
Bücher
Beispiel einer Relation
Nutzer-ID
Buch-ID
5 1
5 2
3 3
1 5
2 6
Entliehen
Indizes/SchlüsselJedes 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 LanguageDaten werden abgerufenDaten können manipuliert werdenWichtigste Befehle:
SELECTINSERTUPDATEDELETE
Beispiel SelectSELECT Spaltenname1,
Spaltenname2 (* für Alle)FROM Relationsname;
Wählt bestimmte Spalten aus einer bestimmten Tabelle aus
Beispiel SelectSELECT Spaltenname1, Spaltenname2FROM RelationsnameWHERE 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 SelectSELECT Spaltenname1, Spaltenname2 (*
für Alle)FROM RelationsnameWHERE Bool‘sche BedingungORDER BY Spaltenname asc/desc;
Wählt bestimmte Spalten aus einer bestimmten Tabelle aus, deren Inhalt eine Bedingung erfüllt und sortiert diese
Beispiel SelectSELECT Spaltenname1,
Spaltenname2 (* für Alle)FROM RelationsnameGROUP 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
A B
1 2
2 3
B C
3 4
4 5
links rechts
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
A B
1 2
2 3
B C
3 4
4 5
links rechts
SELECT *FROM links, rechtsWHERE links.B=rechts.B;
A B C
2 3 4
Beispiel InsertINSERT INTO Relationsname
(Spaltenname)VALUES (Werte);
Fügt in einer bestimmten Spalte einer bestimmten Tabelle, Werte ein.
Beispiel UpdateUPDATE RelationsnameSET Spaltenname = WertWHERE Bool‘sche Bedingung;
Ändert in einer bestimmten Spalte einer bestimmten Tabelle den Wert, der eine Bedingung erfüllt.
Beispiel DeleteDELETE FROM RelationsnameWHERE Bool‘sche Bedingung;
Löscht in einer bestimmten Tabelle den Tupel, der eine Bedingung erfüllt.
Data Definition LanguageDaten werden erzeugtRelationen werden erzeugt/gelöschtWichtigste Befehle:
CREATEDROPALTER
Beispiel CreateCREATE 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 CreateCREATE INDEX IndexnameON Relationsname (Spaltenname);
Erzeugt einen Index auf den angegebenen Spalten.
Beispiel AlterALTER TABLE RelationsnameADD Spaltenname1, Spaltenname2;
Fügt zu einer Tabelle die angegebenen Spalten.
Wobei hinter jeder Spalte ein Datentyp angegeben wird.
Beispiel DropDROP TABLE Relationsname;
Löscht eine bestimmte Tabelle.
Beispiel DropDROP INDEX Indexname;
Löscht einen bestimmten Index.
Data Control LanguageRechte werden gegebenRechte werden eingeschränktWichtigste Befehle:
GRANTREVOKE
Beispiel GrantGRANT Befehl1,Befehl2ON Relationsname1, Relationsname2TO Benutzername (kann auch PUBLIC sein);[WITH GRANT OPTION;]
Gestattet Befehle auf bestimmten Tabellen, einem/mehreren/allen Benutzern
[mit der Option dieses Recht weiterzugeben].
Beispiel RevokeREVOKE Befehl1,Befehl2ON Relationsname1, Relationsname2FROM Benutzername (kann auch
PUBLIC sein);
Entzieht Befehle auf bestimmten Tabellen, einem/mehreren/allen Benutzern.