Relationale Datenbanken und SQL - Fachbereich Informatik und

Werbung
Relationale Datenbanken
und SQL
• Definition einer Datenbank
• Dreischichtenmodell
• Relationale Algebra
• SQL
• select
• Aussagelogik
Worzyk
FH Anhalt
Medienarchive Winter 2008
SQL 1
1
IBM Computertechnologie
Die permanente Innovation
Worzyk
FH Anhalt
Medienarchive Winter 2008
SQL 2
In den Anfängen der Verarbeitung großer Datenbestände bildeten Daten und
Programme eine Einheit und waren optimal aufeinander abgestimmt. Wenn ein
anderes Programm die gleichen Daten bearbeiten wollte, mußte es sich genau
an die Datenstruktur anpassen. Wenn dann die Datenstruktur geändert wurde,
mußten beide Programme synchron dazu auch geändert werden. Im Lauf der
Zeit wurde die Menge der Programme, die den gleichen Datenbestand
bearbeiteten immer größer und damit nahm der Koordinierungsaufwand bei
Änderung der Datenstruktur zum Teil einen Umfang an, der nicht mehr zu
bewältigen war. Er kann abgeschätzt werden an dem Wehklagen einiger Firmen
bei der Umstellung von einer zweistelligen auf eine vierstellige Jahreszahl , die
zum Jahrhundertwechsel in alten Programmen notwendig ist.
Die Nachteile der starren Kopplung zwischen Programmen und Daten wurde
recht früh erkannt und es entstanden Konzepte, diese Kopplung flexibel zu
gestalten. Ein Konzept wurde 1970 von E.F. Codd vorgestellt und beschreibt
relationale Datenbanken, die eine Trennung zwischen Daten und Programmen
vorsehen.
2
Definition einer Datenbank
• Datenbanksystem
– Datenbankmanagementsystem
• Abfrage
• Manipulation
• Zugriffssteuerung
• Konsistenzsicherung
– Datenstrukturen
• Daten
Worzyk
FH Anhalt
Medienarchive Winter 2008
SQL 3
Unter einer Datenbank wollen wir in dieser Vorlesung ein Datenbanksystem und
die darin enthaltenen Daten verstehen.
Ein Datenbanksystem besteht aus einem Datenbankmanagementsystem
(DBMS), welches die Daten bearbeitet und Ergebnisse von Anfragen an den
Auftraggeber zurückliefert. Weiterhin ist es für die Verwaltung paralleler Zugriffe
und die Sicherung der Konsistenz der Daten zuständig. Zum Datenbanksystem
gehört auch die Beschreibung der Datenstruktur.
Datenbank:
-
Datenbanksystem
-
Datenbankmanagementsystem
-
Manipulation
-
Zugriffssteuerung
-
Konsistenzsicherung
-
Datenstrukturen
-
Daten
3
Dreischichtenmodell nach
ANSI/SPARC
• Externe Schicht
– Benutzersicht
• Konzeptionelle Schicht
– Datenbankadministratorsicht
• Interne Schicht
– Datenbankherstellersicht
Worzyk
FH Anhalt
Medienarchive Winter 2008
SQL 4
Dreischichtenmodell nach ANSI/SPARC
Die Trennung zwischen Daten und Programmen, die durch Datenbanksysteme
ermöglicht wird, erlaubt unterschiedliche Betrachtungsweisen des
Datenbanksystems.
•Die externe Schicht beschreibt die Sicht des Benutzers oder Programmierers;
hier ist die Datenmanipulation im Vordergrund (ansehen, einfügen, ändern und
löschen von Datensätzen).
•Die konzeptionelle Schicht beschreibt die Sicht des Datenbankadministrators;
hier ist die Struktur der Daten, die Ordnungsreihenfolge, die
Zugriffsberechtigung im Vordergrund.
•Die interne Schicht beschreibt die Sicht des Entwicklers des
Datenbanksystems; hier stehen die physikalische Datenspeicherung, die
Mechanismen des konkurrierenden Zugriffs und der Konsistenzsicherung im
Vordergrund.
Das Dreischichtenmodell ist vom American National Standards Institute definiert
worden.
SPARC = Standards Planning and Requirements Committee
4
Datenmanipulation
• Suchen
• Hinzufügen
• Ändern
• Löschen
Worzyk
FH Anhalt
Medienarchive Winter 2008
SQL 5
5
Beispiel Programmierstile
prozedural
Eintrag = anfang
repeate eintrag = eintrag.next
until eintrag.name = ‚Worzyk‘;
gesuchte_nummer = eintrag.nummer - 10;
for eintrag = anfang to eintrag = ende do
if eintrag.nummer = gesuchte_nummer
print eintrag.name;
eintrag = eintrag.next;
end;
Worzyk
FH Anhalt
Medienarchive Winter 2008
SQL 6
6
Beispiel Programmierstile
deklarativ
SELECT name FROM telefonbuch
WHERE nummer =
(SELECT nummer from telefonbuch
WHERE name = ‘Worzyk‘) - 10;
Worzyk
FH Anhalt
Medienarchive Winter 2008
SQL 7
7
Standardisierung von SQL
Structured Query Language
Grundlage ist das mathematische Modell
einer Relationenalgebra
-> Entwicklung einer mathematischen
Theorie, welche die Eigenschaften des
Modells beschreibt
-> Implementierung von DBMS, so dass
diese Eigenschaften erfüllt sind.
Medienarchive Winter 2008
SQL 8
Worzyk
FH Anhalt
Eine Algebra ist allgemein eine Grundmenge und eine Familie von darauf
definierten Operationen.
Beispiele:
Vektorraum mit einem Vektorprodukt
Compiler, der Programmcode von einer Sprache in eine andere
übersetzt.
Die Eigenschaften der Relationenalgebra können unabhängig von einem
konkreten Problem definiert werden und so formuliert werden, dass sie
möglichst universell sind.
Es findet eine Arbeitsteilung zwischen den Theoretikern, die Anforderungen
definieren und den Praktikern, die Datenbankmanagementsysteme
entsprechende den Anforderungen realisieren und auf Praktikabilität testen.
8
Relation
Sei X = {A1, …, Am} eine Menge von Attributen,
wobei jedes Attribut A ∈ X einen nicht-leeren,
endlichen Wertebereich wb(X) atomarer Werte
besitze.
Ein Tupel über X ist eine Abbildung μ: X -> wb(X),
für die für jedes A ∈ X gilt: μ(A) ∈ wb(X)
Eine Relation r über X ist eine endliche Menge
von Tupeln über X: r ⊆Tup(X)
Worzyk
FH Anhalt
Medienarchive Winter 2008
SQL 9
9
Relation
Beispiel
Attribute
Person Ort
Auto
Alter Wohnung
Hans
Köthen
Z3
23
Miete
Emil
Wolfen
Manta
35
ETW
Jutta
Köthen
Golf
25
Miete
Fritz
Aken
C5
45
EFH
Anna
Köthen
Käfer
76
Miete
Else
Aken
Audi
50
ETW
Worzyk
FH Anhalt
Tupel
Medienarchive Winter 2008
SQL 10
Attribute und deren Wertebereiche:
Person: Alle Buchstabenkombinationen, die in irgend einer Sprache einen
Namen ergeben
Ort: Alle bekannten Orte einer bestimmten Region
Auto: Der Wertebereich ist unklar definiert, er enthält Modelle: Z3, Manta, C5;
Kategorie: Golf; Marken: Audi und Umschreibungen: Käfer
Alter: Ganze zweistellige Zahl
Wohnung: nur die erlaubten Werte: Miete, ETW, EFH
10
Relationenalgebra
Projektion
Person Ort
Auto
Alter Wohnung
Hans
Köthen
Z3
23
Miete
Emil
Wolfen
Manta
35
ETW
Jutta
Köthen
Golf
25
Miete
Fritz
Aken
C5
45
EFH
Anna
Köthen
Käfer
76
Miete
Else
Aken
Audi
50
ETW
Worzyk
FH Anhalt
Medienarchive Winter 2008
SQL 11
Einzelne Attribute können ausgeblendet werden
11
Relationenalgebra
Selektion
Aus einer Tabelle werden Tupel mit
bestimmten Eigenschaften ausgewählt
und dem Anwendungsprogramm
präsentiert.
Die Auswahl wird mit Hilfe der
Aussagelogik getroffen.
Worzyk
FH Anhalt
Medienarchive Winter 2008
SQL 12
12
Relationenalgebra
Selektion
Aussagen über Konstanten, Attribute und
Funktionen mit Hilfe von
Vergleichsoperatoren
=≠<≤>≥
und logischen Operatoren
¬∧∨
Worzyk
FH Anhalt
Medienarchive Winter 2008
SQL 13
13
Relationenalgebra
Selektion
Person Ort
Auto
Alter Wohnung
Hans
Köthen
Z3
23
Miete
Emil
Wolfen
Manta
35
Miete
Jutta
Köthen
Golf
25
Miete
Fritz
Aken
C5
45
EFH
Anna
Köthen
Käfer
76
ETW
Else
Aken
Audi
50
ETW
Alle Personen aus Köthen und in einer Mietwohnung
Worzyk
FH Anhalt
Medienarchive Winter 2008
SQL 14
Anna wird nicht ausgewählt, weil sie zwar in Köthen wohnt, aber nicht in einer
Mietwohnung sondern in einer Eigentumswohnung.
14
Relationenalgebra
Differenz
Die Differenz zweier Tabellen T1 und T2
enthält alle Tupel, die in der Tabelle T1
aber nicht in der Tabelle T2 enthalten
sind. Voraussetzung für die Bildung
einer Differenz ist die gleiche Struktur
von T1 und T2
Worzyk
FH Anhalt
Medienarchive Winter 2008
SQL 15
Die gleiche Struktur besagt, dass die Menge der Attribute und die Eigenschaften
der Attribute übereinstimmen müssen. Die Bedeutung der Attribute kann
unterschiedlich sein.
Beispiel:
T1 enthält die Namen aller Mitarbeiter einer Abteilung
T2 enthält die Namen aller Vorgesetzten einer Abteilung
T1 - T2 enthält die Namen Mitarbeiter, die keine Vorgesetzten sind.
15
Relation
Differenz
Tabelle T1
Tabelle T2
Worzyk
FH Anhalt
Person Ort
Auto
Alter
Wohnung
Hans
Köthen
Z3
23
Miete
Emil
Wolfen
Manta
35
ETW
Jutta
Köthen
Golf
25
Miete
Fritz
Aken
C5
45
EFH
Anna
Köthen
Käfer
76
Miete
Else
Aken
Audi
50
ETW
Person Ort
Auto
Alter
Wohnung
Hans
Köthen
Z3
23
Miete
Jutta
Köthen
Golf
25
Miete
Käfer
Anna
Köthen
76
Miete
Otto
Köthen
45
EFH
Horst
Köthen
50
ETW
Medienarchive Winter 2008
SQL 16
Tabelle T1 enthält alle Autobesitzer im Landkreis
Tabelle T2 enthält alle Einwohner im Ort Köthen
Tabelle T1-T2 enthält alle Autobesitzer, die nicht in Köthen wohnen
16
Relationenalgebra
Produkt
Das Produkt der Tabellen T1 und T2 hat
die Attribute von T1 und T2.
Jedes Tupel von T1 wird mit jedem Tupel
von T2 verbunden.
Worzyk
FH Anhalt
Medienarchive Winter 2008
SQL 17
Das Produkt wird ohne Rücksicht auf die Bedeutung der Attribute und die
Sinnhaftigkeit der Ergebnisse gebildet. Es ist die Kunst den Programmierers, aus
dieser Menge diejenigen Tupel auszuwählen, die für die weitere Verarbeitung
sinnvoll sind.
17
Relationenalgebra
Produkt
name
nummer
Biemann 3100
Fissgus 3121
Mylius 3123
Name
Biemann
Biemann
Fissgus
Fissgus
Mylius
Mylius
Worzyk
FH Anhalt
Nummer
3100
3100
3121
3121
3123
3123
Lehrgebiet
Mathematik
Software - Engineering
Lehrgebiet
Mathematik
Software-Engineering
Mathematik
Software-Engineering
Mathematik
Software-Engineering
Medienarchive Winter 2008
SQL 18
Die oberste Zeile enthält die Attribute der einzelnen Spalten: die erste Spalte
enthält Namen, die zweite Spalte enthält (Telefon-)nummern.
Die weiteren Zeilen enthalten jeweils ein Tupel bestehend aus einem Namen
und der dazugehörenden Telefonnummer.
18
Relationenalgebra
Produkt und Selektion
Person
Hans
Emil
Jutta
Fritz
Anna
Else
Ort
Köthen
Wolfen
Köthen
Aken
Köthen
Aken
Person
Emil
Anna
Fritz
Else
Hans
Jutta
Beruf
Hausfrau
Hebamme
Kapitän
Lehrer
Lehrer
Lehrer
Beruf
Lehrer
Hausfrau
Kapitän
Hebamme
Einkommen
500
100
800
600
Mögliche Fragen:
wie heißen die Lehrer in Köthen
wieviel verdienen die Leute in Aken
Worzyk
FH Anhalt
Medienarchive Winter 2008
SQL 19
Suche Person aus (Person,Ort)
für die gilt: Person aus (Person,Ort) = Person aus (Person,Beruf)
∧ Beruf aus (Person,Beruf) = „Lehrer“
19
Aussagen über
Tabelleninhalte
Müller
Worzyk
FH Anhalt
Anton
425
Lehmann Hans
260
Maier
Fritz
250
Müller
Hermann
111
Köhler
Emil
301
Bauer
Else
260
Medienarchive Winter 2008
SQL 20
20
select
SELECT command ::=
SELECT
*
,
DISTINCT
ALL
column
t_alias.
c_alias
table.
,
FROM
table
t_alias
WHERE condition
Worzyk
FH Anhalt
Medienarchive Winter 2008
SQL 21
SELECT: Schlüsselwort, das den Auswahlbefehl und die Liste der
anzuzeigenden Spalten einleitet
DISTINCT: Es werden nur die Zeilen angezeigt, die sich paarweise in mindestens
einem Wert unterscheiden
ALL: es werden alle Zeilen angezeigt
t_alias: Alias für eine Tabellennamen
table: Tabellenname
column: Name der Spalten, die angezeigt werden sollen
FROM: Schlüsselwort, das die Liste der Tabellen einleitet, für die die Auswahl
getroffen werden soll
table: Tabnellenname
t_alias: Alias für eine Tabellennamen; wird an dieser Stelle definiert und kann
dann in der SELECT-Liste benutzt werden
WHERE: Schlüsselwort, das die Auswahlbedingungen einleitet
condition: Auswahlbedingung für die anzuzeigenden Zeilen
21
select
SQL> SELECT * FROM telefonbuch;
NACHNAME
---------------Müller
Lehmann
Maier
Müller
Köhler
Bauer
VORNAME
TELEFONNUMMER EINGERICHTET
---------- ------------- -----------Jutta
425
01.09.99
Hans
260
03.01.00
Fritz
250
05.09.98
Anna
111
03.12.99
Emil
301
03.09.99
Else
260
01.09.99
6 Zeilen ausgewählt.
Worzyk
FH Anhalt
Medienarchive Winter 2008
SQL 22
SQL> ist die Eingabeaufforderung, mit der sich SQL Plus meldet.
* bedeutet die Aufforderung, alle vorhandenen Spalten der angegebenen
Tabelle(n) anzuzeigen.
Spaltenüberschriften und Tabellennamen werden in ORACLE in
Großbuchstaben gespeichert. Sie können in Groß- oder Kleinbuchstaben
eingegeben werden.
22
select
SQL> SELECT vorname, nachname, telefonnummer
2 FROM telefonbuch;
VORNAME
---------Jutta
Hans
Fritz
Anna
Emil
Else
NACHNAME
TELEFONNUMMER
-------------------- ------------Müller
425
Lehmann
260
Maier
250
Müller
111
Köhler
301
Bauer
260
6 Zeilen ausgewählt.
Worzyk
FH Anhalt
Medienarchive Winter 2008
SQL 23
In diesem Beispiel werden die anzuzeigenden Spalten explizit angegeben. Wenn
der select-Befehl innerhalb eines Programmes benutzt wird, sollte nie *
angegeben werden, sondern es sollte immer die Liste der gewünschten Spalten
angegeben werden. Im anderen Fall kann ein Ändern der Reihenfolge oder ein
Hinzufügen einer neuen Spalte zu einem Abbruch des aufrufenden Programms
führen.
23
Abfragen
Alle Tupel von Müller
SQL> SELECT Nachname, Vorname, Telefonnummer
2 FROM telefonbuch
3 WHERE nachname = 'Müller';
NACHNAME
------------------Müller
Müller
Worzyk
FH Anhalt
VORNAME
TELEFONNUMMER
---------- ------------Jutta
425
Anna
111
Medienarchive Winter 2008
SQL 24
24
Abfragen
Alle Tupel mit einer Telefonnummer >300
SQL> SELECT Nachname, Vorname, Telefonnummer
2 FROM telefonbuch
3 WHERE telefonnummer > 300;
NACHNAME
-------------------Müller
Köhler
Worzyk
FH Anhalt
VORNAME
TELEFONNUMMER
---------- ------------Anton
425
Emil
301
Medienarchive Winter 2008
SQL 25
25
Abfragen
Alle Tupel von Müller und mit einer Telefonnummer >300
SQL> SELECT Nachname, Vorname, Telefonnummer
2 FROM telefonbuch
3 WHERE nachname = 'Müller'
4
AND telefonnummer > 300;
NACHNAME
VORNAME
TELEFONNUMMER
-------------------- ---------- ------------Müller
Anton
425
Worzyk
FH Anhalt
Medienarchive Winter 2008
SQL 26
26
Abfragen
Alle Tupel von Lehmann oder mit einer Telefonnummer>300
SQL> SELECT Nachname, Vorname, Telefonnummer
2 FROM telefonbuch
3 WHERE Nachname = 'Lehmann'
4
OR telefonnummer > 300;
NACHNAME
-------------------Müller
Lehmann
Köhler
Worzyk
FH Anhalt
VORNAME
TELEFONNUMMER
---------- ------------Anton
425
Hans
260
Emil
301
Medienarchive Winter 2008
SQL 27
27
Abfragen
Alle Tupel für die nicht gilt:
Der Name ist nicht „Lehmann“
und die Telefonnummer ist nicht > 300
SQL> SELECT Nachname, Vorname, Telefonnummer
2 FROM telefonbuch
3 WHERE NOT( Nachname != 'Lehmann'
4
AND NOT telefonnummer > 300);
NACHNAME
-------------------Müller
Lehmann
Köhler
Worzyk
FH Anhalt
VORNAME
TELEFONNUMMER
---------- ------------Anton
425
Hans
260
Emil
301
Medienarchive Winter 2008
SQL 28
28
Aussagen über
Tabelleninhalte
• Unterschiedliche Aussagen können zu
gleichen Ergebnissen führen
• Exakte Aussagen sind schwierig zu
formulieren
• Umgangssprachliche Aussagen sind
häufig nicht exakt
Worzyk
FH Anhalt
Medienarchive Winter 2008
SQL 29
Es ist also möglich, Abfragen zu ändern und trotzdem die gleiche
Ergebnismenge zu bekommen. Unter Umständen ist eine umformulierte
Abfrage für das DBMS einfacher zu bearbeiten und es können dadurch bis zu
100 mal schnellere Antwortzeiten erzielt werden. Wenn schon vor der Abfrage
bekannt ist, dass diese Abfrage immer die gesamte Ergebnismenge oder immer
die leere Menge liefert, kann diese Abfrage auch unterbleiben.
Die Aussagelogik liefert uns die Möglichkeit, Abfragen an die Datenbank unter
einem formalen Gesichtspunkt zu betrachten und unter anderem Regeln für die
Gleichheit von Aussagen aufzustellen.
29
Aussagelogik
Grundzeichen des Aussagenkalküls:
Aussagevariablen: p, q, r, ...
Konnektoren: ¬ , ∧ , ∨ , → , ↔
Technische Zeichen: ( , )
Metasprache: ≡
Worzyk
FH Anhalt
Medienarchive Winter 2008
SQL 30
30
Aussagelogik
Bildungsregeln für Ausdrücke:
Jede Aussagevariablen ist ein Ausdruck
Wenn p q Ausdrücke sind, dann auch
¬p
Negation
p∧q
Konjunktion
p∨q
Alternative
p→q
Implikation
p↔q
Äquivalenz
p↔q
Antivalenz
Ausdrücke
Worzyk
FH Anhalt
Medienarchive Winter 2008
SQL 31
31
Beispiele für Ausdrücke
p
q
p∧q
r∨q
Name = "Müller"
Telefonnummer >300
Müller und mit einer Telefonnummer >300
Lehmann oder mit einer Telefonnummer
>300
wenn nicht Lehmann dann mit einer
¬r → q
Telefonnummer >300
(p ∧ q) ∨ Alle Tupel von Müller und der TelNr > 300
( p → ¬q) oder wenn der Name „Müller" ist, dann
TelNr ≤ 300, sonst egal
Worzyk
FH Anhalt
Medienarchive Winter 2008
SQL 32
32
Äquivalenzen
p∧q
≡ ¬ ( ¬ p ∨ ¬ q)
p∨q
≡ ¬ ( ¬ p ∧ ¬ q)
p → q ≡ ¬p∨q
p ↔ q ≡ (p → q) ∧ (q → p)
≡ (¬ p ∨ q) ∧ (¬q ∨ p )
p ↔ q ≡ (p ∨ q) ∧ ¬(q ∧ p )
Worzyk
FH Anhalt
Medienarchive Winter 2008
SQL 33
Die Äquivalenzen und Umformungen von p → q und π ↔ θ sind für das
Arbeiten mit relationalen Datenbanken notwendig, da in dem Sprachumfang von
SQL keine Ausdrücke für die Pfeile vorhanden sind (Pfeil-freie Ausdrücke).
Umgangssprachliche Ausdrücke können falsch oder ungenau sein:
Parkverbot an Sonn- und Feiertagen
Ich gehe schwimmen oder ins Kino (Aber nicht beides gleichzeitig)
Hans liebt Else oder Inge ( oder beide)
Ich gehe ins Kino und ich esse Popcorn. ≡ Es ist falsch, dass ich nicht ins Kino
gehe oder kein Popcorn esse.
Hans liebt Else oder Hans liebt Inge. ≡ Es ist falsch, dass Hans nicht Else liebt
und nicht Inge liebt.
Wenn der Petersberg höher als der Brocken ist und die Zugspitze höher als der
Petersberg ist, dann ist die Zugspitze höher als der Brocken
≡ Der Brocken ist höher als der Petersberg oder die Zugspitze ist höher als der
Petersberg.
Die Zugspitze ist höher als der Brocken ist äquivalent zu Der Brocken ist
niedriger als die Zugspitze
≡ Die Zugspitze ist niedriger als der Brocken oder Der Brocken ist niedriger als
die Zugspitze
und
Der Brocken ist höher als die Zugspitze oder Die Zugspitze ist höher als der
Brocken
Wenn ich mit dem Fahrrad fahre, dann fahre ich nicht mit dem Auto ≡
Ich fahre entweder mit dem Fahrrad oder mit dem Auto und nicht mit beiden
gleichzeitig
33
Klammerregeln
((p ∧ q) ∧ r )
≡
(p ∧ (q ∧ r ))
((p ∨ q) ∨ r )
≡
(p ∨ (q ∨ r ))
(p ∧ (q ∨ r ))
≡
(p ∧ q) ∨ (p ∧ r) Distributivität
(p ∨ (q ∧ r ))
≡
(p ∨ q) ∧ (p ∨ r)
Worzyk
FH Anhalt
Assoziativität
Medienarchive Winter 2008
SQL 34
34
De Morgan‘sche Regeln
¬(p ∧ q) ≡
¬(p ∨ q) ≡
Worzyk
FH Anhalt
¬p ∨ ¬q
¬p ∧ ¬q
Medienarchive Winter 2008
SQL 35
Die „oder“ - Verknüpfung kann bei großen Datenmengen in einigen
Datenbanksystemen zu langen Laufzeiten führen, weil die beiden Teilergebnisse
hintereinander ausgeführt werden und dann zusammengeführt werden.
Durch die Anwendung einer Regel von de Morgan kann aus der „oder“ –
Verknüpfung eine „und“ – Verknüpfung erzeugt werden, die eventuell schneller
arbeitet.
35
Kreuzprodukt
SQL> SELECT * FROM belegung;
NACHNAME
VORNAME
VORLESUNG
---------- ---------- --------------Müller
Jutta
Mathematik
Köhler
Emil
DBS1
Maier
Fritz
Programmierung
Worzyk
FH Anhalt
SQL> SELECT * FROM stuga;
NACHNAME
VORNAME
STUDIENGANG
---------- ---------- --------------Müller
Jutta
Informatik
Köhler
Emil
Fachübersetzen
Maier
Fritz
InfManagement
Medienarchive Winter 2008
SQL 36
36
Kreuzprodukt
SQL> SELECT vorlesung, studiengang
2 FROM belegung, stuga;
VORLESUNG
--------------Mathematik
DBS1
Programmierung
Mathematik
DBS1
Programmierung
Mathematik
DBS1
Programmierung
Worzyk
FH Anhalt
STUDIENGANG
--------------Informatik
Informatik
Informatik
Fachübersetzen
Fachübersetzen
Fachübersetzen
InfManagement
InfManagement
InfManagement
Medienarchive Winter 2008
SQL 37
Es wird jedes Element der Tabelle belegung mit jedem Element der Tabelle
stuga verknüpft. Oracle bestimmt die Reihenfolge der Verknüpfungen an Hand
von Zusatzinformationen zu den einzelnen Tabellen wie z.B. vorhandene Indizes
oder die Größe der Tabelle. Da in diesem Beispiel keinerlei Zusatzinformationen
vorliegen, entspricht die Reihenfolge der Verknüpfungen der Reihenfolge der
angegebenen Tabellen.
37
equijoun
SQL>
2
3
4
5
SELECT ta_stuga.nachname, ta_stuga.vorname,
ta_stuga.studiengang, ta_belegung.vorlesung
FROM ta_stuga, ta_belegung
WHERE ta_stuga.nachname = ta_belegung.nachname
AND ta_stuga.vorname = ta_belegung.vorname;
NACHNAME
---------Köhler
Maier
Müller
Worzyk
FH Anhalt
VORNAME
---------Emil
Fritz
Jutta
STUDIENGANG
--------------Fachübersetzen
InfManagement
Informatik
VORLESUNG
-------------DBS1
Programmierung
Mathematik
Medienarchive Winter 2008
SQL 38
Die einfachste und an meisten verwendete Art, sinnvolle Ergebnisse aus dem
Produkt zweier oder mehrerer Tabellen zu bekommen, ist der equi-join. Hierbei
werden in der where-Klausel nur solche Tupel ausgewählt, die identische
Attributwerte in den unterschiedlichen Tabellen besitzen.
38
select
SELECT command ::=
SELECT
*
,
DISTINCT
ALL
column
t_alias.
c_alias
table.
,
FROM
table
t_alias
WHERE condition
,
GROUP BY
expr
HAVING condition
,
ORDER BY
Worzyk
FH Anhalt
column
ASC
DESC
Medienarchive Winter 2008
SQL 39
table: Tabellenname; ist notwendig, wenn identische Spaltennamen in
unterschiedlichen Tabellen angesprochen werden.
t_alias: Alias für einen Tabellennamen. Der Alias wird in der FROM-Klausel
definiert und kann in allen anderen Klauseln benutzt werden.
39
equijoun
SQL>
2
3
4
5
SELECT s.nachname, s.vorname,
s.studiengang, b.vorlesung
FROM ta_stuga s, ta_belegung b
WHERE s.nachname = b.nachname
AND s.vorname = b.vorname;
NACHNAME
---------Köhler
Maier
Müller
Worzyk
FH Anhalt
VORNAME
---------Emil
Fritz
Jutta
STUDIENGANG
--------------Fachübersetzen
InfManagement
Informatik
VORLESUNG
--------------DBS1
Programmierung
Mathematik
Medienarchive Winter 2008
SQL 40
Durch die Einführung eines Tabellenalias wird die SELECT-Anweisung
übersichtlicher. SELECT-Anweisungen von mehr als einer DIN A4 Seite und
mehr als 10 Tabellen sind keine Seltenheit.
40
Herunterladen