WS 2007/08 Datenbanksysteme Mi 17:00 – 18:30 R 1.007 Vorlesung #5 SQL (Teil 2)

Slides:



Advertisements
Ähnliche Präsentationen
Datenbanksysteme für FÜ SS 2000 Seite Worzyk FH Anhalt SQL 1 Aussagen über Tabelleninhalte Aussagelogik Äquivalenzen Select Where.
Advertisements

Datenbanksysteme für FÜ WS2004/05 SQL1 - 1 Worzyk FH Anhalt SQL 1 Aussagen über Tabelleninhalte Aussagelogik Äquivalenzen Select Where.
Bauinformatik II Softwareanwendungen 1
Systemüberblick Beispiele: Microsoft Access Oracle Ingres Informix
Kapitel 3: Das Relationenmodell
Kapitel 2 SQL Anfragen.
Kapitel 2 SQL Anfragen.
Grundlagen Datenbanken
EINI-I Einführung in die Informatik für Naturwissenschaftler und Ingenieure I Vorlesung 2 SWS WS 99/00 Gisbert Dittrich FBI Unido
Übung Datenbanksysteme SQL-Anfragen (2)
SQL 2 Order by null Aggregatfunktionen group by Join subselect.
Datenintegrität Referentielle Integrität create table
1 Datenintegrität Statische Bedingung (jeder Zustand) Dynamische Bedingung (bei Zustandsänderung) Bisher: Definition eines Schlüssels 1:N - Beziehung Angabe.
1 Kapitel 8: Datenintegrität. 2 Datenintegrität Statische Bedingung (jeder Zustand) Dynamische Bedingung (bei Zustandsänderung) Bisher: Definition eines.
Abfragen – Tipps und Tricks Buch S102ff (Informatik I, Oldenbourg-Verlag) Nach einer Vorlage von Dieter Bergmann.
SQL in Visual FoxPro. © 1999 TMN-Systemberatung GmbH SQL Historie n SQL - Structured Query Language n In den 70er Jahren von IBM entwickelt n 1986 zum.
Übung 1: SQL Übungen finden bei Bedarf anstelle der Vorlesungen statt
Datenbankentwicklung IV-LK
WS 2009/10 Datenbanksysteme Fr 15:15 – 16:45 R Vorlesung #6 SQL (Teil 3)
WS 2013/14 Datenbanksysteme Do 17:00 – 18:30 R Vorlesung #4 SQL (Teil 1)
WS 2012/13 Datenbanksysteme Fr 15:15 – 16:45 R Vorlesung #6 SQL (Teil 3)
WS 2013/14 Datenbanksysteme Do 17:00 – 18:30 R Vorlesung #6 SQL (Teil 3)
WS 2009/10 Datenbanksysteme Fr 15:15 – 16:45 R Vorlesung #3 Das relationale Modell (Teil 2)
WS 2007/08 Datenbanksysteme Mi 17:00 – 18:30 R Vorlesung #10 Physische Datenorganisation.
SS 2010 – IBB4C Datenmanagement Fr 15:15 – 16:45 R Vorlesung #2 Datenbankentwurf.
WS 2011/12 Datenbanksysteme Fr 15:15 – 16:45 R Vorlesung #6 SQL (Teil 3)
SS 2004 Datenbanken 4W Mi 13:30 – 15:00 G 2.30 Vorlesung #7 SQL (Teil 2)
WS 2007/08 Datenbanksysteme Mi 17:00 – 18:30 R Vorlesung #3 Relationale Anfragesprachen.
WS 2011/12 Datenbanksysteme Mi 15:15 – 16:45 R Vorlesung #9 Physische Datenorganisation.
Vorlesung #4 SQL (Teil 1).
WS 2011/12 Datenbanksysteme Fr 15:15 – 16:45 R Vorlesung #8 Anfragebearbeitung.
SS 2004 Datenbanken 4W Mi 13:30 – 15:00 G 2.30 Vorlesung #3 ER Modellierung.
SS 2004 Datenbanken 4W Mi 13:30 – 15:00 G 2.30 Vorlesung #8 SQL (Teil 3)
SS 2004 Datenbanken 4W Mi 13:30 – 15:00 G 2.30 Vorlesung #5 Relationale Anfragesprachen.
WS 2012/13 Datenbanksysteme Fr 15:15 – 16:45 R Vorlesung #2 Das relationale Modell (Teil 1)
WS 2011/12 Datenbanksysteme Fr 15:15 – 16:45 R Vorlesung #3 Das relationale Modell (Teil 2)
SS 2004 Datenbanken 4W Mi 13:30 – 15:00 G 2.30 Vorlesung #6 SQL (Teil 1)
WS 2013/14 Datenbanksysteme Do 17:00 – 18:30 R Vorlesung #2 Das relationale Modell (Teil 1)
WS 2013/14 Datenbanksysteme Do 17:00 – 18:30 R Vorlesung #7 SQL (Teil 4)
WS 2013/14 Datenbanksysteme D0 15:15 – 16:45 R Vorlesung #5 SQL (Teil 2)
WS 2013/14 Datenbanksysteme Fr 17:00 – 18:30 R Vorlesung #3 Das relationale Modell (Teil 2)
WS 2012/13 Datenbanksysteme Fr 15:15 – 16:45 R Vorlesung #9 Anfragebearbeitung.
WS 2007/08 Datenbanksysteme Mi 17:00 – 18:30 R Vorlesung #9 Anfragebearbeitung (Teil 1)
WS 2012/13 Datenbanksysteme Fr 15:15 – 16:45 R Vorlesung #7 SQL (Teil 4)
WS 2012/13 Datenbanksysteme Fr 15:15 – 16:45 R Vorlesung #3 Das relationale Modell (Teil 2)
WS 2011/12 Datenbanksysteme Fr 15:15 – 16:45 R Vorlesung #4 SQL (Teil 1)
Datenbanksysteme für hörer anderer Fachrichtungen
WS 2011/12 Datenbanksysteme Fr 15:15 – 16:45 R Vorlesung #5 SQL (Teil 2)
Aggregatsfunktion SQL = Structured Query Language.
Vorlesung #10 Physische Datenorganisation
1 Gruppierung, Aggregierung und Sortierung (2) Abarbeitungsmodell bei Gruppierung: Werte from- und where-Klauseln aus wie bisher (Bildung von Kreuzprodukt.
WS 2013/14 Datenbanksysteme Do 17:00 – 18:30 R Vorlesung #9 Anfragebearbeitung.
SQL - Structured Query Language AIFB SS (1/9) Join-Operationen in SQL-92(1/9) Syntax einer Join-Operation: join-op := CROSS JOIN | [NATURAL]
Verdichten von Daten mit Gruppenfunktionen
Datenbanksysteme II Vorlesung WS 2006 / 2007 Paul Manthey
WS 2004/2005 Datenbanken II - 5W Mi 17:00 – 18:30 G 3.18 Vorlesung #3 Anfragebearbeitung (Teil 1)
Vorlesung #5 SQL (Teil 2).
Vorlesung #2 Das relationale Modell (Teil 1)
1 Differenzierte Verbindungsoperationen (1) Beobachtung: Einfach zu formulierende Verbindungen wie ein Natural Join sind nicht als solche dokumentiert.
RelationentheorieObjektorientierte Datenbanken  AIFB SS Anfragen auf Sammlungen(1/29) OQL besteht aus einer Menge von Anfrageausdrücken, die.
WS 2014/15 Datenbanksysteme D0 15:15 – 16:45 R Vorlesung #6 SQL (Teil 3)
WS 2014/15 Datenbanksysteme Do 17:00 – 18:30 R Vorlesung #9 SQL Zusammenfassung.
Datenbanken abfragen mit SQL
Modellierungsspezialisten DRITTE NORMALFORM! „Bei der Abfrage, können wir dann alles wieder zusammenfügen!“
WS 2015/16 Datenbanksysteme Fr 17:00 – 18:30 R Vorlesung #3 Das relationale Modell (Teil 2)
Vorlesung #4 Relationales Kalkül und SQL (Teil 1)
Vorlesung #5 SQL (Teil 2).
Vorlesung #6 SQL (Teil 3).
Vorlesung #7 SQL (Teil 4).
 Präsentation transkript:

WS 2007/08 Datenbanksysteme Mi 17:00 – 18:30 R Vorlesung #5 SQL (Teil 2)

WS 2007/08 Datenbanksysteme Mi 17:00 – 18:30 R © Bojan Milijaš, Vorlesung #5 - SQL (Teil 2)2 Fahrplan Einschub: median Funktion Geschachtelte Anfragen in SQL Korrelierte vs. Unkorrelierte Anfragen Entschachtelung der Anfragen Operationen der Mengenlehre Spezielle Sprachkonstrukte (BETWEEN, CASE, LIKE) Joins in SQL-92

WS 2007/08 Datenbanksysteme Mi 17:00 – 18:30 R © Bojan Milijaš, Vorlesung #5 - SQL (Teil 2)3 median Funktion Median (Zentralwert) – unterhalb und oberhalb des Medians liegt jeweils die Hälfte der Messwerte Bei der ungeraden Anzahl der Messwerte ist Median ein tatsächlich auftretender Wert (1,1,3,4,5,16,29) median = 4 (avg=8.42) Bei geraden Anzahl der Messwerte ist Median Mittelwert der beiden mittleren Werte (1,3,4,5,16,29) median = 4.5 Median ist unempfindlich gegenüber Ausreißern

WS 2007/08 Datenbanksysteme Mi 17:00 – 18:30 R © Bojan Milijaš, Vorlesung #5 - SQL (Teil 2)4 Geschachtelte Anfragen In SQL ist es möglich, SELECT Anweisungen auf viele Weisen zu verknüpfen und zu verschachteln Man unterscheidet zwischen Anfragen, die ein Tupel (eine Zeile) zurückliefern, von denen, die mehrere Tupeln (Zeilen) ergeben Die Anfragen können dann als Unterfragen in SELECT, FROM oder WHERE Teil eingesetzt werden

WS 2007/08 Datenbanksysteme Mi 17:00 – 18:30 R © Bojan Milijaš, Vorlesung #5 - SQL (Teil 2)5 Geschachtelte Anfragen (2)... in WHERE-Klausel Welche Prüfungen sind besser als durchschnittlich verlaufen? SELECT * FROM prüfen WHERE Note < ( select avg (Note) from prüfen );

WS 2007/08 Datenbanksysteme Mi 17:00 – 18:30 R © Bojan Milijaš, Vorlesung #5 - SQL (Teil 2)6 Geschachtelte Anfragen (3)... in SELECT-Klausel Professoren mit deren Lehrbelastung und durchschnittlicher Lehrbelastung SELECT PersNr, Name, sum(SWS) AS Lehrbelastung, ( select avg (sum(SWS)) from Vorlesungen group by gelesenVon) AS Durchschnitt FROM Professoren p, Vorlesungen v WHERE p.PersNr = v.gelesenVon GROUP BY PersNr, Name;

WS 2007/08 Datenbanksysteme Mi 17:00 – 18:30 R © Bojan Milijaš, Vorlesung #5 - SQL (Teil 2)7 Geschachtelte Anfragen (4)... in SELECT-Klausel Professoren mit deren Lehrbelastung und durchschnittlicher Lehrbelsatung – korreliert ohne GROUP BY: SELECT PersNr, Name, (select sum (SWS) from Vorlesungen where gelesenVon = p.PersNr) AS Lehrbelastung, (select sum(SWS) / count(DISTINCT gelesenVon) from Vorlesungen) AS Durchschnitt FROM Professoren p

WS 2007/08 Datenbanksysteme Mi 17:00 – 18:30 R © Bojan Milijaš, Vorlesung #5 - SQL (Teil 2)8 Geschachtelte Anfragen (5)... in FROM-Klausel fleißige Studenten – die mehr als 2 Vorlesungen hören: SELECT tmp.MatrNr, tmp.Name, tmp.VorlAnzahl FROM (select s.MatrNr, s.Name, count(*) as VorlAnzahl from Studenten s, hoeren h where s.MatrNr=h.MatrNr group by s.MatrNr, s.Name) tmp WHERE tmp.VorlAnzahl > 2;

WS 2007/08 Datenbanksysteme Mi 17:00 – 18:30 R © Bojan Milijaš, Vorlesung #5 - SQL (Teil 2)9 Korreliert vs. unkorreliert Achtung: funktioniert in der Original-Beispiel- Datenbank UNI nicht, da GebDatum fehlt! Alle Studenten, die älter als der jüngste Professor sind - korrelierte Formulierung select s.* from Studenten s where exists (select p.* from Professoren p where p.GebDatum > s.GebDatum);

WS 2007/08 Datenbanksysteme Mi 17:00 – 18:30 R © Bojan Milijaš, Vorlesung #5 - SQL (Teil 2)10 Korreliert vs. Unkorreliert (2) Äquivalente unkorrelierte Formulierung select s.* from Studenten s where s.GebDatum < (select max (p.GebDatum) from Professoren p); Vorteil: Unteranfrageergebnis kann materialisiert werden Unteranfrage braucht nur einmal ausgewertet zu werden

WS 2007/08 Datenbanksysteme Mi 17:00 – 18:30 R © Bojan Milijaš, Vorlesung #5 - SQL (Teil 2)11 Entschachtelung korrelierter Unteranfragen Assistenten, die für eine(n) jüngere(n) Professor(in) arbeiten select a.* from Assistenten a where exists ( select p.* from Professoren p where a.Boss = p.PersNr and p.GebDatum > a.GebDatum); Entschachtelung durch Join select a.* from Assistenten a, Professoren p where a.Boss = p.PersNr and p.GebDatum > a.GebDatum;

WS 2007/08 Datenbanksysteme Mi 17:00 – 18:30 R © Bojan Milijaš, Vorlesung #5 - SQL (Teil 2)12 Operationen der Mengenlehre Vereinigung – UNION bzw. UNION ALL Durchschnitt – INTERSECT Differenz – MINUS (auch EXCEPT) UNION, INTERSECT und MINUS setzen Schemagleichheit voraus Der Operator IN bzw. NOT IN testet auf Mengenmitgliedschaft Der Operator ALL testet, ob alle Ergebnisse der Unteranfrage den Vergleich erfüllen

WS 2007/08 Datenbanksysteme Mi 17:00 – 18:30 R © Bojan Milijaš, Vorlesung #5 - SQL (Teil 2)13 Operationen der Mengenlehre (2) UNION – mit Duplikatelimierung, UNION ALL – ohne Duplikateliminierung (select Name from Assistenten ) union (select Name from Professoren );

WS 2007/08 Datenbanksysteme Mi 17:00 – 18:30 R © Bojan Milijaš, Vorlesung #5 - SQL (Teil 2)14 Operationen der Mengenlehre (3) Mengendurchschnitt – INTERSECT Alle Professoren, die eine Vorlesung halten SELECT PersNr FROM Professoren INTERSECT SELECT gelesenVon FROM Vorlesungen

WS 2007/08 Datenbanksysteme Mi 17:00 – 18:30 R © Bojan Milijaš, Vorlesung #5 - SQL (Teil 2)15 Operationen der Mengenlehre (4) Gleiche Abfrage, alle Professoren, die eine Vorlesung halten mit IN Operator SELECT PersNr FROM Professoren WHERE PersNr IN (SELECT gelesenVon FROM Vorlesungen);

WS 2007/08 Datenbanksysteme Mi 17:00 – 18:30 R © Bojan Milijaš, Vorlesung #5 - SQL (Teil 2)16 Operationen der Mengenlehre (5) Mengendifferenz – MINUS Alle Professoren, die keine Vorlesung halten SELECT PersNr FROM Professoren MINUS SELECT gelesenVon FROM Vorlesungen;

WS 2007/08 Datenbanksysteme Mi 17:00 – 18:30 R © Bojan Milijaš, Vorlesung #5 - SQL (Teil 2)17 Operationen der Mengenlehre (6) Gleiche Abfrage, alle Professoren, die keine Vorlesung halten mit NOT IN SELECT PersNr FROM Professoren WHERE PersNr NOT IN ( SELECT gelesenVon FROM Vorlesungen);

WS 2007/08 Datenbanksysteme Mi 17:00 – 18:30 R © Bojan Milijaš, Vorlesung #5 - SQL (Teil 2)18 ALL Operator Studenten mit der größten Semesterzahl SELECT Name, Semester FROM Studenten WHERE Semester >= ALL (select Semester from Studenten); äquivalent SELECT Name, Semester FROM Studenten WHERE Semester >= (select max(Semester) from Studenten);

WS 2007/08 Datenbanksysteme Mi 17:00 – 18:30 R © Bojan Milijaš, Vorlesung #5 - SQL (Teil 2)19 Spezielle Sprachkonstrukte BETWEEN select * from Studenten where Semester > = 1 and Semester < = 4; select * from Studenten where Semester between 1 and 4; select * from Studenten where Semester in (1,2,3,4);

WS 2007/08 Datenbanksysteme Mi 17:00 – 18:30 R © Bojan Milijaš, Vorlesung #5 - SQL (Teil 2)20 Spezielle Sprachkonstrukte (2) CASE WHEN... THEN... ELSE... END – die erste qualifizierende WHEN Klausel wird ausgeführt select MatrNr, ( case when Note < 1.5 then ´sehr gut´ when Note < 2.5 then ´gut´ when Note < 3.5 then ´befriedigend´ when Note < 4.0 then ´ausreichend´ else ´nicht bestanden´end) from pruefen;

WS 2007/08 Datenbanksysteme Mi 17:00 – 18:30 R © Bojan Milijaš, Vorlesung #5 - SQL (Teil 2)21 Spezielle Sprachkonstrukte (3) LIKE Operator – Vergleich von Zeichenketten "%" steht für beliebig viele (auch gar kein) Zeichen "_" steht für genau ein Zeichen select * from Studenten where Name like ´T%eophrastos´; select distinct Name from Vorlesungen v, hören h, Studenten s where s.MatrNr = h.MatrNr and h.VorlNr = v.VorlNr and v.Titel LIKE ´%thik%´;

WS 2007/08 Datenbanksysteme Mi 17:00 – 18:30 R © Bojan Milijaš, Vorlesung #5 - SQL (Teil 2)22 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 );

WS 2007/08 Datenbanksysteme Mi 17:00 – 18:30 R © Bojan Milijaš, Vorlesung #5 - SQL (Teil 2)23

WS 2007/08 Datenbanksysteme Mi 17:00 – 18:30 R © Bojan Milijaš, Vorlesung #5 - SQL (Teil 2)24

WS 2007/08 Datenbanksysteme Mi 17:00 – 18:30 R © Bojan Milijaš, Vorlesung #5 - SQL (Teil 2)25 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 ) );

WS 2007/08 Datenbanksysteme Mi 17:00 – 18:30 R © Bojan Milijaš, Vorlesung #5 - SQL (Teil 2)26 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);

WS 2007/08 Datenbanksysteme Mi 17:00 – 18:30 R © Bojan Milijaš, Vorlesung #5 - SQL (Teil 2)27 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

WS 2007/08 Datenbanksysteme Mi 17:00 – 18:30 R © Bojan Milijaš, Vorlesung #5 - SQL (Teil 2)28 CROSS JOIN (Kartesisches Produkt) SELECT * FROM Studenten CROSS JOIN prüfen; ist äquivalent zu SELECT * FROM Studenten, prüfen;

WS 2007/08 Datenbanksysteme Mi 17:00 – 18:30 R © Bojan Milijaš, Vorlesung #5 - SQL (Teil 2)29 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;

WS 2007/08 Datenbanksysteme Mi 17:00 – 18:30 R © Bojan Milijaš, Vorlesung #5 - SQL (Teil 2)30 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;

WS 2007/08 Datenbanksysteme Mi 17:00 – 18:30 R © Bojan Milijaš, Vorlesung #5 - SQL (Teil 2)31 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;

WS 2007/08 Datenbanksysteme Mi 17:00 – 18:30 R © Bojan Milijaš, Vorlesung #5 - SQL (Teil 2)32 * 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;

WS 2007/08 Datenbanksysteme Mi 17:00 – 18:30 R © Bojan Milijaš, Vorlesung #5 - SQL (Teil 2)33 * OUTER JOINs (äußerer Vebund) (2) SELECT * FROM Vorlesungen v FULL OUTER JOIN Assistenten a ON v.gelesenvon = a.Boss

WS 2007/08 Datenbanksysteme Mi 17:00 – 18:30 R © Bojan Milijaš, Vorlesung #5 - SQL (Teil 2)34 Ausblick Vorlesung #6 Rekursion Rekursion in SQL-92 Rekursion in DBMS-Dialekten (Oracle und DB2) Views (Sichten) - gespeicherte Abfragen Gewährleistung der logischen Datenunabhängigkeit Modellierung von Generalisierung UPDATE-fähige Sichten Datenintegrität Statische und dynamische Bedingungen Referentielle Integrität (primary key, foreign key) Propagieren der Primärschlüsselveränderungen (cascade)

WS 2007/08 Datenbanksysteme Mi 17:00 – 18:30 R Vorlesung #5 Ende