Die Präsentation wird geladen. Bitte warten

Die Präsentation wird geladen. Bitte warten

WS 2013/14 Datenbanksysteme D0 15:15 – 16:45 R 1.007 Vorlesung #5 SQL (Teil 2)

Ähnliche Präsentationen


Präsentation zum Thema: "WS 2013/14 Datenbanksysteme D0 15:15 – 16:45 R 1.007 Vorlesung #5 SQL (Teil 2)"—  Präsentation transkript:

1 WS 2013/14 Datenbanksysteme D0 15:15 – 16:45 R Vorlesung #5 SQL (Teil 2)

2 WS 2013/14 Datenbanksysteme D0 15:15 – 16:45 R © Bojan Milijaš, „Fahrplan“  Aggregation und Gruppierung  NULL -Werte, 3-wertige Logik  Kanonische Übersetzung (SQL  relationale Algebra)  Geschachtelte Anfragen in SQL

3 WS 2013/14 Datenbanksysteme D0 15:15 – 16:45 R © Bojan Milijaš,

4 WS 2013/14 Datenbanksysteme D0 15:15 – 16:45 R © Bojan Milijaš, Aggregatfunktionen  min, max, avg, sum, count SELECT min(Semester) FROM Studenten; SELECT max(Semester) FROM Studenten; SELECT avg(Semester) FROM Studenten; SELECT sum(Semester) FROM Studenten; SELECT count(MatrNr), -- count(*) count(DISTINCT Semester) FROM Studenten;

5 WS 2013/14 Datenbanksysteme D0 15:15 – 16:45 R © Bojan Milijaš, mit Gruppierung  min, max, avg, sum, count mit GROUP BY select gelesenVon, sum (SWS) from Vorlesungen group by gelesenVon;  mit HAVING select gelesenVon, Name, sum (SWS) from Vorlesungen, Professoren where gelesenVon = PersNr and Rang = ´C4´ group by gelesenVon, Name having avg (SWS) >= 3;

6 WS 2013/14 Datenbanksysteme D0 15:15 – 16:45 R © Bojan Milijaš, Besonderheiten bei Aggregatoperationen SQL erzeugt pro Gruppe ein Ergebnistupel Deshalb müssen alle in der select-Klausel aufgeführten Attribute - außer den aggregierten – auch in der group by- Klausel aufgeführt werden Nur so kann SQL sicherstellen, dass sich das Attribut nicht innerhalb der Gruppe ändert SELECT A 1, A 2, A n, count(*) FROM... WHERE.. GROUP BY A1, A2, An

7 WS 2013/14 Datenbanksysteme D0 15:15 – 16:45 R © Bojan Milijaš,

8 WS 2013/14 Datenbanksysteme D0 15:15 – 16:45 R © Bojan Milijaš,

9 WS 2013/14 Datenbanksysteme D0 15:15 – 16:45 R © Bojan Milijaš,

10 WS 2013/14 Datenbanksysteme D0 15:15 – 16:45 R © Bojan Milijaš, Ergebnis der Abfrage gelesenVonNamesum (SWS) 2125Sokrates Kant8

11 WS 2013/14 Datenbanksysteme D0 15:15 – 16:45 R © Bojan Milijaš,  SQL, Fortsetzung  Geschachtelte Anfragen  Korrelierte Anfragen  Mengenoperationen  Quantifizierte Anfragen ( ,  )  Spezielle Sprachkonstrukte  Joins in SQL-92, SQL-99  Rekursion  Sichten (Views) Ausblick Vorlesung #5

12 WS 2013/14 Datenbanksysteme D0 15:15 – 16:45 R © Bojan Milijaš, Nullwerte  unbekannter Wert  „wird vielleicht später nachgereicht“  Nullwerte können auch im Zuge der Anfrageauswertung entstehen (Bsp. äußere Joins)  manchmal sehr überraschende Anfrageergebnisse, wenn Nullwerte vorkommen  UPDATE studenten SET semester = '' WHERE matrnr = 24002; select count (*) from Studenten where Semester = 13  Tupel (Zeilen) mit Null-Werten werden einfach nicht mitgezählt !!!

13 WS 2013/14 Datenbanksysteme D0 15:15 – 16:45 R © Bojan Milijaš, Nullwerte (2)  NULL + 1 = NULL, NULL * 1 = NULL  Beispiele (Oracle) SELECT NULL + 2 FROM Dual; SELECT NULL * 2 FROM Dual;  Dual ist so etwas wie „Dummy“-Tabelle in Oracle  Es gilt die sogenannte 3-wertige Logik in SQL

14 WS 2013/14 Datenbanksysteme D0 15:15 – 16:45 R © Bojan Milijaš, wertige Logik (NULL Logik) not TRUEFALSE NULL FALSETRUE andTRUENULLFALSE TRUE NULLFALSE NULL FALSE orTRUENULLFALSE TRUE NULLTRUENULL FALSETRUENULLFALSE

15 WS 2013/14 Datenbanksysteme D0 15:15 – 16:45 R © Bojan Milijaš, Regeln für NULL Werte  In arithmetischen Ausdrücken werden NULL Werte propagiert (NULL + 3 = NULL)  Es gilt die 3-wertige Logik. Vergleichsoperatoren (=, >,<=) liefern immer NULL zurück, wenn mindestens ein Argument NULL ist  Logische Ausdrücke werden entsprechend den vorgestellten 3-wertige-Logik Tabellen ausgewertet  Tupeln mit NULL als Ergebnis in einer WHERE Klausel werden nicht weitergereicht, d.h NULL Werte werden in WHERE Klauseln ausgelassen  Bei Gruppierung ist NULL ein eigenständiger Wert

16 WS 2013/14 Datenbanksysteme D0 15:15 – 16:45 R © Bojan Milijaš, Behandlung von NULL Werten (Oracle und SQL-92)  In Oracle gibt es eine „null value“ Funktion nvl (if NULL then): SELECT nvl(NULL,5) + 2 AS Result FROM Dual; Result  Man kann NULL Werte mit IS NULL oder IS NOT NULL testen (SQL-92)

17 WS 2013/14 Datenbanksysteme D0 15:15 – 16:45 R © Bojan Milijaš, 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

18 WS 2013/14 Datenbanksysteme D0 15:15 – 16:45 R © Bojan Milijaš, 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 );

19 WS 2013/14 Datenbanksysteme D0 15:15 – 16:45 R © Bojan Milijaš, 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;

20 WS 2013/14 Datenbanksysteme D0 15:15 – 16:45 R © Bojan Milijaš, 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

21 WS 2013/14 Datenbanksysteme D0 15:15 – 16:45 R © Bojan Milijaš, 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;

22 WS 2013/14 Datenbanksysteme D0 15:15 – 16:45 R Vorlesung #5 Ende


Herunterladen ppt "WS 2013/14 Datenbanksysteme D0 15:15 – 16:45 R 1.007 Vorlesung #5 SQL (Teil 2)"

Ähnliche Präsentationen


Google-Anzeigen