![Page 1: WS 2012/13 Datenbanksysteme Fr 15:15 – 16:45 R 2.007 Vorlesung #6 SQL (Teil 3)](https://reader036.vdocuments.pub/reader036/viewer/2022062312/55204d7649795902118cbee3/html5/thumbnails/1.jpg)
WS 2012/13Datenbanksysteme
Fr 15:15 – 16:45R 2.007
Vorlesung #6
SQL (Teil 3)
![Page 2: WS 2012/13 Datenbanksysteme Fr 15:15 – 16:45 R 2.007 Vorlesung #6 SQL (Teil 3)](https://reader036.vdocuments.pub/reader036/viewer/2022062312/55204d7649795902118cbee3/html5/thumbnails/2.jpg)
WS 2012/13Datenbanksysteme
Fr 15:15 – 16:45R 2.007
© Bojan Milijaš, 09.11.2012 2
„Fahrplan“ Besprechung eines Beispiels, SQL-Übungen Quantifizierte Anfragen JOINs in SQL-92
Vorlesung #6 - SQL (Teil 3)
![Page 3: WS 2012/13 Datenbanksysteme Fr 15:15 – 16:45 R 2.007 Vorlesung #6 SQL (Teil 3)](https://reader036.vdocuments.pub/reader036/viewer/2022062312/55204d7649795902118cbee3/html5/thumbnails/3.jpg)
WS 2012/13Datenbanksysteme
Fr 15:15 – 16:45R 2.007
© Bojan Milijaš, 09.11.2012 Vorlesung #6 - SQL (Teil 3) 3
Quantifizierte Anfragen in SQL
• Es gibt keinen expliziten Allquantor
• Es gibt aber den Existenzquantor: exists, not exist
• wieder: „Professoren, die keine Vorlesung halten“
select Name, PersNr
from Professoren p
where not exists
( select *
from Vorlesungen
where gelesenVon = p.PersNr );
![Page 4: WS 2012/13 Datenbanksysteme Fr 15:15 – 16:45 R 2.007 Vorlesung #6 SQL (Teil 3)](https://reader036.vdocuments.pub/reader036/viewer/2022062312/55204d7649795902118cbee3/html5/thumbnails/4.jpg)
WS 2012/13Datenbanksysteme
Fr 15:15 – 16:45R 2.007
© Bojan Milijaš, 09.11.2012 Vorlesung #6 - SQL (Teil 3) 4
![Page 5: WS 2012/13 Datenbanksysteme Fr 15:15 – 16:45 R 2.007 Vorlesung #6 SQL (Teil 3)](https://reader036.vdocuments.pub/reader036/viewer/2022062312/55204d7649795902118cbee3/html5/thumbnails/5.jpg)
WS 2012/13Datenbanksysteme
Fr 15:15 – 16:45R 2.007
© Bojan Milijaš, 09.11.2012 Vorlesung #6 - SQL (Teil 3) 5
![Page 6: WS 2012/13 Datenbanksysteme Fr 15:15 – 16:45 R 2.007 Vorlesung #6 SQL (Teil 3)](https://reader036.vdocuments.pub/reader036/viewer/2022062312/55204d7649795902118cbee3/html5/thumbnails/6.jpg)
WS 2012/13Datenbanksysteme
Fr 15:15 – 16:45R 2.007
© Bojan Milijaš, 09.11.2012 Vorlesung #6 - SQL (Teil 3) 6
Quantifizierte Anfragen in SQL (4)• Wer hat alle vierstündigen Vorlesungen gehört?
select s.*
from Studenten s
where not exists
(select *
from Vorlesungen v
where v.SWS = 4 and not exists
(select *
from hören h
where h.VorlNr = v.VorlNr and h.MatrNr=s.MatrNr ) );
![Page 7: WS 2012/13 Datenbanksysteme Fr 15:15 – 16:45 R 2.007 Vorlesung #6 SQL (Teil 3)](https://reader036.vdocuments.pub/reader036/viewer/2022062312/55204d7649795902118cbee3/html5/thumbnails/7.jpg)
WS 2012/13Datenbanksysteme
Fr 15:15 – 16:45R 2.007
© Bojan Milijaš, 09.11.2012 Vorlesung #6 - SQL (Teil 3) 7
Quantifizierte Anfragen in SQL (5)
• Allquantifizierung kann immer auch durch eine count Aggregation ausgedrückt werden
Wir betrachten dazu eine etwas einfachere Anfrage, in der wir die (MatrNr der) Studenten ermitteln wollen, die alle Vorlesungen hören:
select h.MatrNr
from hören h
group by h.MatrNr
having count (*) = (select count (*) from Vorlesungen);
![Page 8: WS 2012/13 Datenbanksysteme Fr 15:15 – 16:45 R 2.007 Vorlesung #6 SQL (Teil 3)](https://reader036.vdocuments.pub/reader036/viewer/2022062312/55204d7649795902118cbee3/html5/thumbnails/8.jpg)
WS 2012/13Datenbanksysteme
Fr 15:15 – 16:45R 2.007
© Bojan Milijaš, 09.11.2012 Vorlesung #6 - SQL (Teil 3) 8
JOINs in SQL-92
cross join: Kreuzprodukt natural join: natürlicher Join join oder inner join: Theta-Join left outer join: linker äußerer Join right outer join: rechter äußerer Join full outer join: äußerer Join
![Page 9: WS 2012/13 Datenbanksysteme Fr 15:15 – 16:45 R 2.007 Vorlesung #6 SQL (Teil 3)](https://reader036.vdocuments.pub/reader036/viewer/2022062312/55204d7649795902118cbee3/html5/thumbnails/9.jpg)
WS 2012/13Datenbanksysteme
Fr 15:15 – 16:45R 2.007
© Bojan Milijaš, 09.11.2012 Vorlesung #6 - SQL (Teil 3) 9
CROSS JOIN (Kartesisches Produkt)
SELECT *
FROM Studenten CROSS JOIN prüfen;
ist äquivalent zu
SELECT *
FROM Studenten, prüfen;
![Page 10: WS 2012/13 Datenbanksysteme Fr 15:15 – 16:45 R 2.007 Vorlesung #6 SQL (Teil 3)](https://reader036.vdocuments.pub/reader036/viewer/2022062312/55204d7649795902118cbee3/html5/thumbnails/10.jpg)
WS 2012/13Datenbanksysteme
Fr 15:15 – 16:45R 2.007
© Bojan Milijaš, 09.11.2012 Vorlesung #6 - SQL (Teil 3) 10
NATURAL JOIN(natürlicher Verbund)SELECT *
FROM Studenten NATURAL JOIN prüfen;
ist äquivalent zu
SELECT s.MatrNr, s.Name, s.Semester,
/* p.MatrNr ausgelassen */
p.VorlNr, p.PersNr, p.Note
FROM Studenten s, prüfen p
WHERE s.MatrNr = p.MatrNr;
![Page 11: WS 2012/13 Datenbanksysteme Fr 15:15 – 16:45 R 2.007 Vorlesung #6 SQL (Teil 3)](https://reader036.vdocuments.pub/reader036/viewer/2022062312/55204d7649795902118cbee3/html5/thumbnails/11.jpg)
WS 2012/13Datenbanksysteme
Fr 15:15 – 16:45R 2.007
© Bojan Milijaš, 09.11.2012 Vorlesung #6 - SQL (Teil 3) 11
JOIN(Theta Verbund)SELECT * FROM Studenten s JOIN prüfen p ON s.MatrNr = p.MatrNr;
ist äquivalent zu
SELECT * FROM Studenten s, prüfen p WHERE s.MatrNr = p.MatrNr;
![Page 12: WS 2012/13 Datenbanksysteme Fr 15:15 – 16:45 R 2.007 Vorlesung #6 SQL (Teil 3)](https://reader036.vdocuments.pub/reader036/viewer/2022062312/55204d7649795902118cbee3/html5/thumbnails/12.jpg)
WS 2012/13Datenbanksysteme
Fr 15:15 – 16:45R 2.007
© Bojan Milijaš, 09.11.2012 Vorlesung #6 - SQL (Teil 3) 12
JOIN(Theta Verbund) (2)
Allgemein – setzt die Gleichheit der Join-Spalten nicht voraus:
SELECT *
FROM Professoren p JOIN
Assistenten a
ON p.persnr = a.boss;
![Page 13: WS 2012/13 Datenbanksysteme Fr 15:15 – 16:45 R 2.007 Vorlesung #6 SQL (Teil 3)](https://reader036.vdocuments.pub/reader036/viewer/2022062312/55204d7649795902118cbee3/html5/thumbnails/13.jpg)
WS 2012/13Datenbanksysteme
Fr 15:15 – 16:45R 2.007
© Bojan Milijaš, 09.11.2012 Vorlesung #6 - SQL (Teil 3) 13
* OUTER JOINs(äußerer Vebund)SELECT * FROM Studenten s LEFT OUTER JOIN pruefen p ON s.matrnr = p.matrnr;
SELECT * FROM uni.hoeren h RIGHT OUTER JOIN uni.Vorlesungen v ON h.vorlnr = v.vorlnr;
![Page 14: WS 2012/13 Datenbanksysteme Fr 15:15 – 16:45 R 2.007 Vorlesung #6 SQL (Teil 3)](https://reader036.vdocuments.pub/reader036/viewer/2022062312/55204d7649795902118cbee3/html5/thumbnails/14.jpg)
WS 2012/13Datenbanksysteme
Fr 15:15 – 16:45R 2.007
© Bojan Milijaš, 09.11.2012 Vorlesung #6 - SQL (Teil 3) 14
* OUTER JOINs(äußerer Vebund) (2)
SELECT *
FROM Vorlesungen v FULL OUTER JOIN
Assistenten a
ON v.gelesenvon = a.Boss
![Page 15: WS 2012/13 Datenbanksysteme Fr 15:15 – 16:45 R 2.007 Vorlesung #6 SQL (Teil 3)](https://reader036.vdocuments.pub/reader036/viewer/2022062312/55204d7649795902118cbee3/html5/thumbnails/15.jpg)
WS 2012/13Datenbanksysteme
Fr 15:15 – 16:45R 2.007
Vorlesung #6
Ende