4 SQL Teil 2
4 SQL Teil 2
Die Folien bauen auf dem Foliensatz zum Buch und den von Prof. Dr.-Ing.
Norbert Fuhr in den vergangenen Semestern verwendeten Folien auf.
2
Professoren Studenten
PersNr Name Rang Raum MatrNr Name Semester Vorlesungen
2125 Sokrates C4 226 24002 Xenokrates 18 VorlNr Titel SWS gelesenVon
2126 Russel C4 232 25403 Jonas 12 5001 Grundzüge 4 2137
2127 Kopernikus C3 310 26120 Fichte 10 5041 Ethik 4 2125
2133 Popper C3 52 26830 Aristoxenos 8 5043 Erkenntnistheorie 3 2126
2134 Augustinus C3 309 27550 Schopenhauer 6 5049 Mäeutik 2 2125
2136 Curie C4 36 28106 Carnap 3 5052 Logik 4 2125
2137 Kant C4 7 29120 Theophrastos 2 5216 Wissenschaftstheorie 3 2126
voraussetzen 29555 Feuerbach 2
5216 Bioethik 2 2126
Vorgänger Nachfolger hören
5259 Der Wiener Kreis 2 2133
5001 5041 MatrNr VorlNr
5001 5043 5022 Glaube und Wissen 2 2134
26120 5001
5001 5049 4630 Die 3 Kritiken 4 2137
27550 5001
5041 5216 27550 4052 Assistenten
5043 5052 28106 5041 PersNr Name Fachgebiet Boss
5041 5052 28106 5052 3002 Platon Ideenlehre 2125
5052 5259 28106 5216 3003 Aristoteles Syllogistik 2125
prüfen 3004 Wittgenstein Sprachtheorie 2126
28106 5259
MatrNr VorlNr PersNr Note 3005 Rhetikus Planetenbewegung 2127
29120 5001
28106 5001 2126 1 3006 Newton Keplersche Gesetze 2127
29120 5041
25403 5041 2125 2 3007 Spinoza Gott und Natur 2126
29120 5049
27550 4630 2137 2
Wiederholung
Datenbanken: SQL
Einfache SQL-Anfrage
Sortierung
Duplikateliminierung
Rang
C4 Rang
C4 C3
C3
C4
C3
C3
C4
C4 6
Vorlesungen
Wiederholung VorlNr Titel SWS gelesenVon
Professoren Professoren
PersNr Name Rang Raum VorlNr Tite SWS gelesenVon
2125 Sokrates C4 226 5001 Grundzüge 4 2137
2126 Russel C4 232 5041 Russel 4 2125
…
…
5049 Mäeutik 2 2125
2137 Kant C4 7
…
4630 Die 3 Kritiken 4 2137
Verknüpfung
Datenbanken | Prof. Dr. Dirk Lewandowski | WS 2022/23 x 8
Wiederholung
Datenbanken: SQL
PersNr Name Rang Raum VorlNr Titel SWS gelesenVon
2125 Sokrates C4 226 5001 Grundzüge 4 2137
2125 Sokrates C4 226 5041 Ethik 4 2125
…
…
2125 Sokrates C4 226 5049 Mäeutik 2 2125
…
…
2126 Russel C4 232 5001 Grundzüge 4 2137
2126 Russel C4 232 5041 Ethik 4 2125
…
…
2137 Kant C4 7 4630 Die 3 Kritiken 4 2137
Auswahl
PersNr Name Rang Raum VorlNr Titel SWS gelesenVon
2125 Sokrates C4 226 5049 Mäeutik 2 2125
Projektion
Explizite Tupelvariablen
werden im from-Teil deklariert:
Beachte: Die Tupelvariablen müssen in allen Teilen der Anfrage verwendet werden, nicht
nur im where-Teil
Mengenoperationen
Mengenoperationen union, intersect, minus
(Anleihen an der Relationenalgebra)
( select [Link]
from Assistenten a)
union
( select [Link]
from Professoren p);
11
Aggregatfunktionen
12
Datenbanken: SQL
Aggregatfunktionen
14
Datenbanken: SQL
Vorlesungen x Professoren
VorlNr Titel SWS gelesenVon PersNr Name Rang Raum
5001 Grundzüge 4 2137 2125 Sokrates C4 226
5041 Ethik 4 2125 2125 Sokrates C4 226
… … … … … … … …
4630 Die 3 Kritiken 4 2137 2137 Kant C4 7
where-Bedingung
Gruppierung
Datenbanken | Prof. Dr. Dirk Lewandowski | WS 2022/23
17
VorlNr Titel SWS gelesenVon PersNr Name Rang Raum
5041 Ethik 4 2125 2125 Sokrates C4 226
5049 Mäeutik 2 2125 2125 Sokrates C4 226
4052 Logik 4 2126 2125 Sokrates C4 226
5043 Erkenntnistheorie 3 2126 2126 Russel C4 232
5052 Wissenschaftsth. 3 2126 2126 Russel C4 232
5216 Bioethik 2 2126 2126 Russel C4 232
5001 Grundzüge 4 2137 2137 Kant C4 7
4630 Die 3 Kritiken 4 2137 2137 Kant C4 7
having-Bedingung
VorlNr Titel SWS gelesenVon PersNr Name Rang Raum
5041 Ethik 4 2125 2125 Sokrates C4 226
5049 Mäeutik 2 2125 2125 Sokrates C4 226
4052 Logik 4 2125 2125 Sokrates C4 226
5001 Grundzüge 4 2137 2137 Kant C4 7
4630 Die 3 Kritiken 4 2137 2137 Kant C4 7
Endergebnis
20
Datenbanken: SQL
Geschachtelte Anfragen
§ Unteranfragen
§ Korrelierte vs. unkorrelierte Anfragen
§ Entschachtelung korrelierter Anfragen
§ Verwertung der Ergebnismenge einer Unteranfrage
§ Anfragen mit in und all
Geschachtelte Anfragen
select p.*
from prüfen p
where [Link] < ( select avg ([Link])
from prüfen q );
Datenbanken | Prof. Dr. Dirk Lewandowski | WS 2022/23
22
Datenbanken: SQL
Geschachtelte Anfragen
§ Unteranfrage in der select-Klausel
§ Für jedes Ergebnistupel wird die Unteranfrage ausgeführt
§ Man beachte, dass die Unteranfrage korreliert ist (greift auf Attribute der
umschließenden Anfrage zu)
select [Link], [Link], (
select sum ([Link]) as Lehrbelastung
from Vorlesungen v
where [Link]=[Link] )
from Professoren p;
as dient zur Umbenennung von Attributen
Datenbanken | Prof. Dr. Dirk Lewandowski | WS 2022/23
23
Datenbanken: SQL
select a.*
from Assistenten a, Professoren p
where [Link]=[Link] and [Link] > [Link];
select [Link]
from Professoren p
where [Link] not in ( select [Link]
from Vorlesungen v);
select [Link]
from Studenten s
where [Link] > = all (
select [Link] from Studenten s1);
Datenbanken | Prof. Dr. Dirk Lewandowski | WS 2022/23
29
Quantifizierung in SQL
30
Datenbanken: SQL
Quantifizierung in SQL
§ exists
§ Vergleiche mit all
§ Allquantifizierung: Umformung in exists
§ Allquantifizierung durch count-Aggregation
§ Existenzquantor: exists
select [Link]
from Professoren p
where not exists ( select v.*
from Vorlesungen v
where [Link] = [Link] );
Existenzquantor exists
select [Link]
Kor
re latio
from Professoren p n
where not exists ( select v.*
from Vorlesungen v
where [Link] = [Link] );
Mengenvergleich
Unkorrelierte
Unteranfrage: meist
effizienter, wird nur
select [Link] einmal ausgewertet
from Professoren p
where [Link] not in (
select [Link]
from Vorlesungen v);
select [Link]
from Studenten s
where [Link] >= all (
select [Link] from Studenten s1);
Allquantifizierung
§ SQL-92 hat keinen Allquantor
§ Allquantifizierung muss also durch eine äquivalente Anfrage mit
Existenzquantifizierung ausgedrückt werden
§ Kalkülformulierung der Anfrage: Wer hat alle vierstündigen Vorlesungen
gehört?
§ Wir erhalten
select s.*
from Studenten s
where not exists
(select v.*
from Vorlesungen v
where [Link] = 4 and not exists
(select h.*
from hören h
where [Link] = [Link] and [Link]=[Link] ) );
Datenbanken | Prof. Dr. Dirk Lewandowski | WS 2022/23
38
Datenbanken: SQL
Herausforderung
§ Wie formuliert man die komplexere Anfrage: Wer hat alle vierstündigen
Vorlesungen gehört?
§ Grundidee besteht darin, vorher durch einen Join die
Studenten/Vorlesungs-Paare einzuschränken und danach das Zählen
durchzuführen
41
Datenbanken: SQL
Nullwerte
not
true false
unknown unknown
false true
47
Datenbanken: SQL
Spezielle Sprachelemente
§ between und in
§ like
§ case
Das case-Konstrukt