SQL

Werbung
Einführung in Datenbanken
Schlüssel
Definition:
Ein Schlüssel (key) einer Relation r(R) ist eine
Teilmenge
K von R,
T il
R so dass
d für
fü jje zweii
verschiedene Tupeln t1 und t2 ∈ r gilt:
- t1(K) ≠ t2(K) und
- keine echte Teilmenge K' von K
hat diese Eigenschaft.
Eigenschaft
K ist ein Oberschlüssel ((superkey)
p
y) der Relation,,
wenn K einen Schlüssel enthält.
33
Grundlagen der Programmierung II
DBIS – SS 2006
Einführung in Datenbanken
Schlüssel
Beispiel: Anzeigetafel am Flughafen
Flüge
FlugNr von
nach
Abflug
Ankunft
83
JFK
O‘Hare
O‘H
11:30am
11 30
1:43pm
1 43
84
O‘Hare
JFK
3:00pm
5:55pm
109
JFK
L Angeles
A l
Los
9 50
9:50pm
2 25
2:25am
213
JFK
Boston
11:43am
12:45pm
214
B t
Boston
JFK
2 20
2:20pm
3 12
3:12pm
• {FLUGNR} und {VON,NACH} sind mögliche Schlüssel.
• {VON} alleine
ll i ist
i t kein
k i Schlüssel.
S hlü l
• {FLUGNR,VON} ist Oberschlüssel aber keine Schlüssel,
weil bereits {FLUGNR} Schlüssel ist.
34
Grundlagen der Programmierung II
DBIS – SS 2006
Einführung in Datenbanken
Schlüssel
D fi iti
Definition:
Schlüssel, die explizit zu einem Relationenschema angeführt
sind,
sind heißen ausgezeichnete Schlüssel (designated keys).
keys)
Im Allgemeinen wird ein Schlüssel als Primärschlüssel
ausgezeichnet.
Dieser wird im Relationenschema durch
g
Unterstreichen gekennzeichnet.
B i i l Anzeigetafel
Beispiel:
A i t f l am Flughafen
Fl h f
FLUEGE ( FLUGNR, VON, NACH, ABFLUG, ANKUNFT)
35
Grundlagen der Programmierung II
DBIS – SS 2006
Einführung in Datenbanken
SQL – Structured Query Language
Um die Inhalte einer (relationalen) Datenbank
abzufragen benötigt man eine spezielle Sprache.
Durch die von IBM entwickelte Structured Query
Language (SQL) lassen sich verschiedene
Relationen (Tabellen) kombinieren und auch
komplexe Anfragen recht einfach realisieren.
Im Folgenden wird die Funktionsweise von SQL am
Beispiels eines Flugplans erläutert.
erläutert
36
Grundlagen der Programmierung II
DBIS – SS 2006
Einführung in Datenbanken
SQL
Beispiel: Flugplan
FLUEGE ( FLUGNR, VON, NACH, ABFLUG, ANKUNFT))
Zusätzlich werden zwei weitere Relationen erstellt:
• BENUTZBAR ((FLUGNR,, MASCHINE))
Diese Relation gibt an, welche Maschine für welchen Flug
benutzt werden kann.
• ZUGELASSEN (PILOT, MASCHINE)
Diese Relation gibt an, welcher Pilot welche Maschine
fliegen kann.
37
Grundlagen der Programmierung II
DBIS – SS 2006
Einführung in Datenbanken
SQL
Beispiel: Flugplan
Fluege FlugNr von
38
nach
Abflug
Ankunft
83
JFK
O‘Hare
11:30am
1:43pm
84
O‘Hare
JFK
3:00pm
5:55pm
109
JFK
Los Angeles
9:50pm
2:25am
213
JFK
Boston
11:43am
12:45pm
214
Boston
JFK
2:20pm
3:12pm
Grundlagen der Programmierung II
DBIS – SS 2006
Einführung in Datenbanken
SQL
Beispiel: Flugplan
benutzbar FlugNr
l
zugelassen
Pil t
Pilot
M hi
Maschine
Simmons Airbus 300
Simmons Transall
39
Barth
Boeing 747
Hill
Airbus 300
Hill
Boeing 747
Grundlagen der Programmierung II
Maschine
83
Airbus 300
83
Boeing 747
84
Airbus 300
84
Boeing 747
109
Transall
DBIS – SS 2006
Einführung in Datenbanken
SQL - Anfrage
S t kti h G
Syntaktische
Grundform:
df
select A1, ... ,An
Rm
from R1, ... ,R
where Bedingung ;
A1,...,A
An Attribute und R1,...,R
Rm Relationen.
Relationen
40
Grundlagen der Programmierung II
DBIS – SS 2006
Einführung in Datenbanken
SQL - Anfrage
S t kti h G
Syntaktische
Grundform:
df
select A1, ... ,An
from R1, ... ,R
Rm
where Bedingung ;
select Klausel spezifiziert die Attribute,
Attribute die das
• Die select-Klausel
Ergebnis enthalten soll. Werden alle Attribute gewünscht,
schreibt man statt der Attributnamen das Symbol
y
*.
• Die from-Klausel spezifiziert, mit welchen Relationen
gearbeitet werden soll.
• Die where-Klausel ist optional und schränkt das Ergebnis
auf Tupel mit einer bestimmte Eigenschaft ein.
41
Grundlagen der Programmierung II
DBIS – SS 2006
Einführung in Datenbanken
SQL - Projektion
Beispiel: Flugplan
„Alle Paare von Ursprungs- und Zielflughäfen“
select VON, NACH
from FLUEGE;
42
VON
NACH
JFK
O‘Hare
O‘Hare
JFK
JFK
Los Angeles
JFK
Boston
Boston
JFK
Grundlagen der Programmierung II
DBIS – SS 2006
Einführung in Datenbanken
SQL - Projektion
• Diese Art der Abfrage,
Abfrage bei der ausschließlich auf
bestimmte Attribute eingeschränkt wird, nennt
man Projektion.
Projektion
• Projektionen verringern die Zahl der Attribute.
Bei der Durchführung einer Projektion können
dadurch doppelte Tupel (Duplikate) entstehen.
erwünscht müssen sie durch
• Sind keine Duplikate erwünscht,
den Zusatz distinct (auch unique) entfernt werden.
select distinct Attribut1,Attribut2
Attribut1 Attribut2
from Relation;
43
Grundlagen der Programmierung II
DBIS – SS 2006
Einführung in Datenbanken
SQL - Selektion
Beispiel: Flugplan
„Alle Flüge, die am Flughafen ’JFK’ starten“
select *
from FLUEGE
where VON = ‘JFK’;
44
FLUGNR
VON
NACH
ABFLUG
ANKUNFT
083
JFK
O‘Hare
11:30am
1:45pm
109
JFK
Los Angeles 9:50pm
2:25am
213
JFK
Boston
12:45pm
11:43am
Grundlagen der Programmierung II
DBIS – SS 2006
Einführung in Datenbanken
SQL - Selektion
• Diese Art der Abfrage, bei der man nur Tupel mit
einer bestimmten Eigenschaft auswählt, nennt
man Selektion.
where-Klausel.
• Die Spezifikation erfolgt in der where
Klausel.
Bezüglich der Bedingung sind Vergleiche mit den
üblichen Operatoren ((=,, <,...),
,...), die logischen
Verknüpfungen and, or und not sowie beliebige
Klammerungen
g ggestattet.
• Die Selektion verringert i.A. die Zahl der Tupel.
45
Grundlagen der Programmierung II
DBIS – SS 2006
Einführung in Datenbanken
SQL - Selektion
Beispiel:
B
i i l Flugplan
Fl l
„Alle Flüge, die von ’JFK’ nach ‘Boston‘ fliegen“
select *
from FLUEGE
where VON = ‘JFK’ and NACH=‘BOSTON’;
46
FLUGNR
VON
NACH
ABFLUG
ANKUNFT
213
JFK
Boston
11:43am
12:45pm
Grundlagen der Programmierung II
DBIS – SS 2006
Einführung in Datenbanken
SQL - Selektion
Beispiel:
B
i i l Flugplan
Fl l
„Alle Flüge, die vor 1:00 pm ankommen“
select *
from FLUEGE
where ANKUNFT < ‘1:00pm’;
47
FLUGNR
VON
NACH
109
JFK
Los Angeles
g
9:50pm
p
Grundlagen der Programmierung II
ABFLUG
ANKUNFT
2:25am
DBIS – SS 2006
Einführung in Datenbanken
SQL – Join (Verbund)
Ein Join oder Verbund verknüpft zwei (oder mehr)
Relationen auf ihren gemeinsamen Attributen.
Beispiel: Flugplan
„Welche Kombinationsmöglichkeiten von Flügen und
Piloten gibt es“
Relationen: BENUTZBAR ((FLUGNR, MASCHINE))
ZUGELASSEN (PILOT, MASCHINE)
Anfrage: select *
from BENUTZBAR, ZUGELASSEN;
48
Grundlagen der Programmierung II
DBIS – SS 2006
Einführung in Datenbanken
SQL – Join (Verbund)
Beispiel: Flugplan
49
FLUG
MASCHINE
PILOT
083
Airbus
Ai b 300
Simmons
Si
083
Airbus 300
Hill
083
B i 747
Boeing
B th
Barth
083
Boeing 747
Hill
084
Airbus 300
Simmons
084
Airbus 300
Hill
084
Boeing 747
Barth
084
Boeing 747
Hill
109
Transall
Simmons
Grundlagen der Programmierung II
DBIS – SS 2006
Einführung in Datenbanken
SQL - Verbund
Es ist möglich, Attribute miteinander zu vergleichen,
die nicht den selben Namen haben.
Wichtig ist nur der selbe Wertebereich!
Übliche Syntax:
select *
from Relation1, Relation2
where Relation1.A1 = Relation2.A2;
50
Grundlagen der Programmierung II
DBIS – SS 2006
Einführung in Datenbanken
SQL - Verbund
Beispiel: Flugplan
Gegeben sei folgende zusätzliche Relation:
PILOTEN
NAME
WOHNORT
Simmons
Los Angeles
Miller
Frankfurt
Barth
Boston
Hill
Boston
„Welche Piloten wohnen im Ort eines Zielflughafens?“
select FLUGNR,
FLUGNR NAME,
NAME WOHNORT
from FLUEGE, PILOTEN
where FLUEGE.NACH = PILOTEN.WOHNORT;
51
Grundlagen der Programmierung II
DBIS – SS 2006
Einführung in Datenbanken
SQL - Verbund
Beispiel: Flugplan – Ergebnis:
52
FLUGNR
NAME
WOHNORT
109
Si
Simmons
L Angeles
A l
Los
213
Barth
Boston
213
Hill
Boston
Grundlagen der Programmierung II
DBIS – SS 2006
Einführung in Datenbanken
SQL - Aggregatfunktionen
Eine Besonderheit von SQL sind die Operatoren, die
Berechnungen über Gruppen von Tupeln anstellen.
Die folgenden Aggregatfunktionen können in der
select-Klausel anstelle von einzelnen Attributen
b werden:
d
angegeben
– sum(Attribut)
Æ Summe
– max(Attribut)
Æ Maximum
– min(Attribut)
Æ Minimum
– avg(Attribut)
Æ Durchschnitt
(
) Æ Anzahl
– count(Attribut)
53
Grundlagen der Programmierung II
DBIS – SS 2006
Einführung in Datenbanken
SQL - Aggregatfunktionen
Beispiel: Flugplan
Gegeben sei eine zusätzliche Relation:
GEHALT
54
NAME
EURO-BETRAG
Simmons
10.000
Miller
12.000
Barth
10.000
Hill
13.000
Grundlagen der Programmierung II
DBIS – SS 2006
Einführung in Datenbanken
SQL - Aggregatfunktionen
Beispiele: Flugplan
f g „Gesamtkosten ffür die Bezahlung
g der Piloten“
Anfrage:
select sum(Euro-Betrag)
from Gehalt;
Anfrage: „Zahl der Piloten mit einem Gehalt über 11.000 €“
select count(*)
count( )
from Gehalt
where Euro-Betrag > 11.000;
55
Grundlagen der Programmierung II
DBIS – SS 2006
Herunterladen