WS 2014/15 Datenbanksysteme D0 15:15 – 16:45 R 4.080 Vorlesung #6 SQL (Teil 3)

Slides:



Advertisements
Ähnliche Präsentationen
Datenintegrität Einschränkung der möglichen Datenbankzustände und -übergänge auf die in der Realität möglichen Formulierung von Integritätsbedingungen.
Advertisements

Datenintegrität Integitätsbedingungen Schlüssel
ER-Datenmodell und Abfragen in SQL
© A. Kemper / A. Eickler1 Kapitel 5: Datenintegrität Integitätsbedingungen Schlüssel Beziehungskardinalitäten Attributdomänen Inklusion bei Generalisierung.
Bauinformatik II Softwareanwendungen 1
Systemüberblick Beispiele: Microsoft Access Oracle Ingres Informix
Kapitel 2 SQL Anfragen.
Kapitel 2 SQL Anfragen.
Alternativen und Muster. Alternativen Gegeben ist eine Tabelle in der ein Attribut der Tabelle Buecher Gruppe genannt wurde. So gibt es unter anderem.
IS: Datenbanken, © Till Hänisch 2000 CREATE TABLE Syntax: CREATE TABLE name ( coldef [, coldef] [, tableconstraints] ) coldef := name type [länge], [[NOT]NULL],
Ü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
Datenintegrität Integitätsbedingungen Schlüssel
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.
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 #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 2012/13 Datenbanksysteme Fr 15:15 – 16:45 R Vorlesung #8 SQL (Teil 5)
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 2007/08 Datenbanksysteme Mi 17:00 – 18:30 R Vorlesung #9 Anfragebearbeitung (Teil 1)
WS 2007/08 Datenbanksysteme Mi 17:00 – 18:30 R Vorlesung #5 SQL (Teil 2)
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 2009/10 Datenbanksysteme Fr 15:15 – 16:45 R Vorlesung #7 SQL (Teil 4)
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
Relationales Datenmodell und DDL
1 Gruppierung, Aggregierung und Sortierung (2) Abarbeitungsmodell bei Gruppierung: Werte from- und where-Klauseln aus wie bisher (Bildung von Kreuzprodukt.
Verdichten von Daten mit Gruppenfunktionen
Datenbanksysteme II Vorlesung WS 2006 / 2007 Paul Manthey
Structured Query Language
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)
WS 2013/14 Datenbanksysteme Do 17:00 – 18:30 R Vorlesung #8 SQL (Teil 5)
WS 2014/15 Datenbanksysteme Do 17:00 – 18:30 R Vorlesung #9 SQL Zusammenfassung.
Datenbanken abfragen mit SQL
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).
(Structured Query Language)
 Präsentation transkript:

WS 2014/15 Datenbanksysteme D0 15:15 – 16:45 R Vorlesung #6 SQL (Teil 3)

WS 2014/15 Datenbanksysteme D0 15:15 – 16:45 R © Bojan Milijaš, Vorlesung #6 - SQL (Teil 3) „Fahrplan“  Wiederholung  Korrelierte vs. Unkorrelierte Anfragen  Entschachtelung der Anfragen  Operationen der Mengenlehre  Spezielle Sprachkonstrukte (BETWEEN, CASE, LIKE) 2

WS 2014/15 Datenbanksysteme D0 15:15 – 16:45 R © Bojan Milijaš, Vorlesung #6 - SQL (Teil 3) Nullwerte  UPDATE studenten SET semester = '' WHERE matrnr = 24002; select count (*) from Studenten where Semester = 13  Tupel (Zeilen) mit Null-Werten werden einfach nicht mitgezählt !!! 3

WS 2014/15 Datenbanksysteme D0 15:15 – 16:45 R © Bojan Milijaš, Vorlesung #6 - SQL (Teil 3) 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 4

WS 2014/15 Datenbanksysteme D0 15:15 – 16:45 R © Bojan Milijaš, Vorlesung #6 - SQL (Teil 3) 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) 5

WS 2014/15 Datenbanksysteme D0 15:15 – 16:45 R © Bojan Milijaš, Vorlesung #6 - SQL (Teil 3) 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 ); 6

WS 2014/15 Datenbanksysteme D0 15:15 – 16:45 R © Bojan Milijaš, Vorlesung #6 - SQL (Teil 3) 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; 7

WS 2014/15 Datenbanksysteme D0 15:15 – 16:45 R © Bojan Milijaš, Vorlesung #6 - SQL (Teil 3) 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 8

WS 2014/15 Datenbanksysteme D0 15:15 – 16:45 R © Bojan Milijaš, Vorlesung #6 - SQL (Teil 3) 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; 9

WS 2014/15 Datenbanksysteme D0 15:15 – 16:45 R © Bojan Milijaš, Vorlesung #6 - SQL (Teil 3) 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); 10

WS 2014/15 Datenbanksysteme D0 15:15 – 16:45 R © Bojan Milijaš, Vorlesung #6 - SQL (Teil 3) 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 11

WS 2014/15 Datenbanksysteme D0 15:15 – 16:45 R © Bojan Milijaš, Vorlesung #6 - SQL (Teil 3) 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; 12

WS 2014/15 Datenbanksysteme D0 15:15 – 16:45 R © Bojan Milijaš, Vorlesung #6 - SQL (Teil 3) 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 13

WS 2014/15 Datenbanksysteme D0 15:15 – 16:45 R © Bojan Milijaš, Vorlesung #6 - SQL (Teil 3) Operationen der Mengenlehre (2) UNION – mit Duplikatelimierung, UNION ALL – ohne Duplikateliminierung (select Name from Assistenten ) union (select Name from Professoren ); 14

WS 2014/15 Datenbanksysteme D0 15:15 – 16:45 R © Bojan Milijaš, Vorlesung #6 - SQL (Teil 3) Operationen der Mengenlehre (3)  Mengendurchschnitt – INTERSECT  Alle Professoren, die eine Vorlesung halten SELECT PersNr FROM Professoren INTERSECT SELECT gelesenVon FROM Vorlesungen 15

WS 2014/15 Datenbanksysteme D0 15:15 – 16:45 R © Bojan Milijaš, Vorlesung #6 - SQL (Teil 3) 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); 16

WS 2014/15 Datenbanksysteme D0 15:15 – 16:45 R © Bojan Milijaš, Vorlesung #6 - SQL (Teil 3) Operationen der Mengenlehre (5)  Mengendifferenz – MINUS  Alle Professoren, die keine Vorlesung halten SELECT PersNr FROM Professoren MINUS SELECT gelesenVon FROM Vorlesungen; 17

WS 2014/15 Datenbanksysteme D0 15:15 – 16:45 R © Bojan Milijaš, Vorlesung #6 - SQL (Teil 3) 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); 18

WS 2014/15 Datenbanksysteme D0 15:15 – 16:45 R © Bojan Milijaš, Vorlesung #6 - SQL (Teil 3) 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); 19

WS 2014/15 Datenbanksysteme D0 15:15 – 16:45 R © Bojan Milijaš, Vorlesung #6 - SQL (Teil 3) 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); 20

WS 2014/15 Datenbanksysteme D0 15:15 – 16:45 R © Bojan Milijaš, Vorlesung #6 - SQL (Teil 3) 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; 21

WS 2014/15 Datenbanksysteme D0 15:15 – 16:45 R © Bojan Milijaš, Vorlesung #6 - SQL (Teil 3) 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%´; 22

WS 2014/15 Datenbanksysteme D0 15:15 – 16:45 R © Bojan Milijaš, Vorlesung #6 - SQL (Teil 3) Ausblick Vorlesung #6  Quantifizierte Anfragen  Joins in SQL 92  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) 23

WS 2014/15 Datenbanksysteme D0 15:15 – 16:45 R Vorlesung #6 Ende