Die Präsentation wird geladen. Bitte warten

Die Präsentation wird geladen. Bitte warten

WS 2012/13 Datenbanksysteme Fr 15:15 – 16:45 R 2.007 Vorlesung #6 SQL (Teil 3)

Ähnliche Präsentationen


Präsentation zum Thema: "WS 2012/13 Datenbanksysteme Fr 15:15 – 16:45 R 2.007 Vorlesung #6 SQL (Teil 3)"—  Präsentation transkript:

1 WS 2012/13 Datenbanksysteme Fr 15:15 – 16:45 R Vorlesung #6 SQL (Teil 3)

2 WS 2012/13 Datenbanksysteme Fr 15:15 – 16:45 R © Bojan Milijaš, Fahrplan Besprechung eines Beispiels, SQL-Übungen Quantifizierte Anfragen JOINs in SQL-92 Vorlesung #6 - SQL (Teil 3)

3 WS 2012/13 Datenbanksysteme Fr 15:15 – 16:45 R © Bojan Milijaš, 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 );

4 WS 2012/13 Datenbanksysteme Fr 15:15 – 16:45 R © Bojan Milijaš, Vorlesung #6 - SQL (Teil 3)4

5 WS 2012/13 Datenbanksysteme Fr 15:15 – 16:45 R © Bojan Milijaš, Vorlesung #6 - SQL (Teil 3)5

6 WS 2012/13 Datenbanksysteme Fr 15:15 – 16:45 R © Bojan Milijaš, 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 ) );

7 WS 2012/13 Datenbanksysteme Fr 15:15 – 16:45 R © Bojan Milijaš, 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);

8 WS 2012/13 Datenbanksysteme Fr 15:15 – 16:45 R © Bojan Milijaš, 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

9 WS 2012/13 Datenbanksysteme Fr 15:15 – 16:45 R © Bojan Milijaš, 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;

10 WS 2012/13 Datenbanksysteme Fr 15:15 – 16:45 R © Bojan Milijaš, 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;

11 WS 2012/13 Datenbanksysteme Fr 15:15 – 16:45 R © Bojan Milijaš, 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;

12 WS 2012/13 Datenbanksysteme Fr 15:15 – 16:45 R © Bojan Milijaš, 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;

13 WS 2012/13 Datenbanksysteme Fr 15:15 – 16:45 R © Bojan Milijaš, 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;

14 WS 2012/13 Datenbanksysteme Fr 15:15 – 16:45 R © Bojan Milijaš, 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

15 WS 2012/13 Datenbanksysteme Fr 15:15 – 16:45 R Vorlesung #6 Ende


Herunterladen ppt "WS 2012/13 Datenbanksysteme Fr 15:15 – 16:45 R 2.007 Vorlesung #6 SQL (Teil 3)"

Ähnliche Präsentationen


Google-Anzeigen