Datenmodellierung. VU , SS 2015 Relationale Abfragesprachen SQL. Sebastian Skritek

Größe: px
Ab Seite anzeigen:

Download "Datenmodellierung. VU , SS 2015 Relationale Abfragesprachen SQL. Sebastian Skritek"

Transkript

1 Relationale Abfragesprachen Datenmodellierung VU , SS 2015 Relationale Abfragesprachen SQL Sebastian Skritek Institut für Informationssysteme Technische Universität Wien Sebastian Skritek Seite 1

2 Relationale Abfragesprachen Acknowledgments Die Folien sind eine kleine Erweiterung der Folien von Katrin Seyr Sebastian Skritek Seite 2

3 Relationale Abfragesprachen Überblick 1 SQL einst und jetzt 2 Datendefinitionssprache 3 Datenabfragesprache 4 Datenmanipulationssprache Sebastian Skritek Seite 3

4 Relationale Abfragesprachen 1 SQL einst und jetzt SQL einst und jetzt SQL wurde auf Basis von relationaler Algebra und Relationenkalkül entwickelt deklarative Sprache mengenorientierte Sprache Abarbeitung Übersetzung der Abfragen mittels Parser in relationale Algebra und Optimierung durch Anfragenoptimierer des DBMS (VO Datenbanksysteme) Relationen werden dargestellt in Form von Tabellen SQL stellt eine standardisierte Datendefinitions (DDL)- Datenmanipulations (DML)- Anfrage (Query)-Sprache Sebastian Skritek Seite 4

5 Relationale Abfragesprachen 1 SQL einst und jetzt SQL einst und jetzt SQL 99: derzeit aktueller Standard, erweiterte SQL 92 um objektrelationale Konstrukte, rekursive Abfragen und Trigger SQL 2003: bietet erweiterte Unterstützung von Nested Tables, von Merge Operationen und auf XML bezogene Eigenschaften SQL 2006: Brücke zu XML, XQuery, nicht in DBMS realisiert System R (IBM): erster DBMS Prototyp, Sprache: Structured English Query Language SQL DBMS: Oracle (Oracle Corporation), Informix (Informix), SQL-Server (Microsoft), DB2 (IBM), PostgreSQL, MySQL Sebastian Skritek Seite 5

6 Relationale Abfragesprachen 2 Datendefinitionssprache Datendefinitionssprache Datentypen: Konstrukte für Zeichenketten, Zahlen, Datum, character (n), char (n) character varying (n), varchar (n) numeric (p,s) integer, int date blob, raw % für große binäre bzw Text Daten clob % für große Text Daten Sebastian Skritek Seite 6

7 Relationale Abfragesprachen 2 Datendefinitionssprache Datendefinitionssprache Schemadefinition und -veränderung create table Professoren ( PersNr integer primary key, Name varchar (10) not null, Rang character (2), Raum integer ); create table voraussetzen ( VorgNr integer, NachfNr integer, primary key ( VorgNr, NachfNr ) ); Sebastian Skritek Seite 7

8 Relationale Abfragesprachen 2 Datendefinitionssprache Datendefinitionssprache Schemadefinition und -veränderung drop table Professoren ; alter table Professoren add ( Raum integer ); alter table Professoren modify ( Name varchar (30)); alter table Professoren alter Name type varchar (30); Sebastian Skritek Seite 8

9 Relationale Abfragesprachen 3 Datenmanipulationssprache Datenmanipulationssprache Tupel Einfügen Einfügen von Tupeln in eine angelegte Tabelle Professoren ( PersNr : integer, Name : varchar (30), Rang : character (2), Raum : integer ) Einfügen der Professorin Curie: insert into Professoren values (2136, Curie, C4, 36); Einfügen mehrerer Professoren: insert into Professoren values (2125, Sokrates, C4, 226), (2126, Russel, C4, 232); Sebastian Skritek Seite 9

10 Relationale Abfragesprachen 3 Datenmanipulationssprache Datenmanipulationssprache Tupel Einfügen Das Ergebnis einer Anfrage in eine Tabelle eintragen: Eintragen aller Studenten zur Vorlesung Logik : hören ( MatrNr, VorlNr ) Studenten ( MatrNr, Name, Sem ) Vorlesungen ( VorlNr, Titel, SWS, PersNr ) insert into hören select MatrNr, VorlNr from Studenten, Vorlesungen where Titel = Logik ; Sebastian Skritek Seite 10

11 Relationale Abfragesprachen 3 Datenmanipulationssprache Datenmanipulationssprache Tupel Löschen Auflisten der zu löschenden Tupeln: Löschen des Herrn Kant aus der Professorentabelle: delete from Professoren values (2137, Kant, C4, 7); Lösche alle Tupel die eine Bedingung erfüllen: Löschen des Herrn Kant aus der Professorentabelle: delete from Professoren where PersNr =2137; delete from Professoren where PersNr < 2137; Sebastian Skritek Seite 11

12 Relationale Abfragesprachen 3 Datenmanipulationssprache Datenmanipulationssprache Tupel Löschen Lösche alle Studenten, die die Vorlesung Logik besuchen hören ( MatrNr, VorlNr ) Studenten ( MatrNr, Name, Sem ) Vorlesungen ( VorlNr, Titel, SWS, PersNr ) delete from Studenten where MatrNr in ( select MatrNr from hören, Vorlesungen where hören VorlNr = Vorlesungen VorlNr and Titel = Logik ); Sebastian Skritek Seite 12

13 Relationale Abfragesprachen 3 Datenmanipulationssprache Datenmanipulationssprache Tupel Verändern Verändern von Tupeln Erhöhen der Semesteranzahl aller Studierender um 1: update Studenten set Semester = Semester + 1; Alle C3 Professoren mit einer Personalnummer über 2500 erhalten den Rang C2 update Professoren set Rang = C2 where Rang = C3 and PersNr > 2500; Sebastian Skritek Seite 13

14 Relationale Abfragesprachen 3 Datenmanipulationssprache Datenmanipulationssprache Tupel Verändern Verändern von Tupeln Professoren ( PersNr : integer, Name : varchar (30), Rang : character (2), Raum : integer, Lehrbelastung: integer ) Vorlesungen ( VorlNr, Titel, SWS, PersNr ) Trage für jeden Professor seine Lehrbelastung (=Summe SWS) ein update Professoren set Lehrbelastung = ( select sum ( SWS ) from Vorlesungen v where v PersNr = Professoren PersNr ) (Anmerkung: Lehrbelastung sollte so nicht gespeichert werden) Sebastian Skritek Seite 14

15 Relationale Abfragesprachen 4 Datenabfragesprache Datenabfragesprache 1 Einfache SQL-Anfragen 2 Anfragen über mehrere Relationen 3 Mengenoperationen 4 Aggregatfunktionen 5 Aggregate und Gruppierung 6 Geschachtelte Anfragen 7 Existenziell quantifizierte Anfragen 8 Allquantifizierte Anfragen 9 Nullwerte 10 Spezielle Sprachkonstrukte 11 Sichten (Views) Sebastian Skritek Seite 15

16 Relationale Abfragesprachen 4 Datenabfragesprache 41 Einfache SQL Anfragen Einfache SQL Anfragen Example select * from Professoren ; Professoren PersNr Name Rang Raum 2125 Sokrates C Russel C Kopernikus C Popper C Augustinus C Curie C Kant C4 7 Sebastian Skritek Seite 16

17 Relationale Abfragesprachen 4 Datenabfragesprache 41 Einfache SQL Anfragen Einfache SQL Anfragen Example select Name, Raum from Professoren ; π Name,Rang (Professoren) Professoren Name Raum Sokrates 226 Russel 232 Kopernikus 310 Popper 52 Augustinus 309 Curie 36 Kant 7 Sebastian Skritek Seite 17

18 Relationale Abfragesprachen 4 Datenabfragesprache 41 Einfache SQL Anfragen Einfache SQL Anfragen Example Finde die Raumnummer von Professor Popper select Name, Raum from Professoren where Name = Popper ; π Name,Rang ( σname= Popper (Professoren) ) Professoren Name Raum Popper 52 Sebastian Skritek Seite 18

19 Relationale Abfragesprachen 4 Datenabfragesprache 41 Einfache SQL Anfragen Einfache SQL Anfragen Struktur einer einfachen Anfrage: select Attribute from Tabelle where Bedingung ; Attribute: Liste jener Attribute, die ausgegeben werden Tabelle: Name der Tabelle, die durchsucht wird Bedingung: Kriterium, das jedes ausgegebene Tupel erfüllen muss Sebastian Skritek Seite 19

20 Relationale Abfragesprachen 4 Datenabfragesprache 41 Einfache SQL Anfragen Einfache SQL Anfragen Geben Sie Personalnummer und Name aller C4 Professoren an: Professoren PersNr Name Rang Raum 2125 Sokrates C Russel C Kopernikus C Popper C Augustinus C Curie C Kant C4 7 Ergebnis PersNr Name 2125 Sokrates 2126 Russel 2136 Curie 2137 Kant select PersNr, Name from Professoren where Rang = C4 ; Sebastian Skritek Seite 20

21 Relationale Abfragesprachen 4 Datenabfragesprache 41 Einfache SQL Anfragen Einfache SQL Anfragen Sortierung (Sortierung) Geben Sie die Personalnummer, Name und Rang aller Professoren an Sortieren Sie das Ergebnis absteigend nach dem Rang und aufsteigend nach dem Namen select PersNr, Name, Rang from Professoren order by Rang desc, Name asc ; Ergebnis PersNr Name Rang 2136 Curie C Kant C Russel C Sokrates C Augustinus C Kopernikus C Popper C3 Sebastian Skritek Seite 21

22 Relationale Abfragesprachen 4 Datenabfragesprache 41 Einfache SQL Anfragen Einfache SQL Anfragen Sortierung (Sortierung) Geben Sie die Personalnummer und den Namen aller Professoren an Sortieren Sie das Ergebnis absteigend nach dem Rang und aufsteigend nach dem Namen select PersNr, Name from Professoren order by Rang desc, Name asc ; Ergebnis PersNr Name 2136 Curie 2137 Kant 2126 Russel 2125 Sokrates 2134 Augustinus 2127 Kopernikus 2133 Popper Sebastian Skritek Seite 22

23 Relationale Abfragesprachen 4 Datenabfragesprache 41 Einfache SQL Anfragen Einfache SQL Anfragen Duplikate (Duplikatelimination) Geben Sie alle Rangbezeichnungen für Professoren aus (rel Algebra) π Rang (Professoren) Ergebnis Rang C3 Geben Sie alle Rangbezeichnungen für Professoren aus (SQL) select Rang from Professoren ; C4 Ergebnis Rang C4 C4 C4 C4 Sebastian Skritek Seite 23 C3

24 Relationale Abfragesprachen 4 Datenabfragesprache 41 Einfache SQL Anfragen Einfache SQL Anfragen Duplikate (Duplikatelimination) Geben Sie alle Rangbezeichnungen für Professoren ohne Duplikate aus select distinct Rang from Professoren ; Ergebnis Rang C4 C3 distinct eliminiert Duplikate aus dem Ergebnis Sebastian Skritek Seite 24

25 Relationale Abfragesprachen 4 Datenabfragesprache 41 Einfache SQL Anfragen Einfache SQL Anfragen Welche Professoren lesen die LVA Mäeutik? Information aus Tabelle: Professoren, Vorlesungen Professoren (PersNr, Name, Rang, Raum ) Vorlesungen ( VorlNr, Titel, SWS, gelesenvon) select Name, Titel from Professoren, Vorlesungen where PersNr = gelesenvon and Titel = Mäeutik ; Sebastian Skritek Seite 25

26 Relationale Abfragesprachen 4 Datenabfragesprache 42 Anfragen über mehrere Relationen Anfragen über mehrere Relationen Struktur einer Abfrage über mehrere Tabellen: select Attribute from Tabelle1, Tabelle2,, TabelleN where Bedingungen ; Bedingungen: greifen auf die Attribute der verschiedenen Tabellen zu Auswertung: 1 Bilde Kreuzprodukt der from Tabellen 2 Überprüfe für jede Zeile die where Bedingungen 3 Projiziere auf select Attribute Sebastian Skritek Seite 26

27 Relationale Abfragesprachen 4 Datenabfragesprache 42 Anfragen über mehrere Relationen Anfragen über mehrere Relationen Welche Professoren lesen die LVA Mäeutik? Information aus Tabelle: Professoren, Vorlesungen Professoren (PersNr, Name, Rang, Raum ) Vorlesungen ( VorlNr, Titel, SWS, gelesenvon) π Name,Titel ( σpersnr=gelesenvon Titel= Mäeutik (Professoren Vorlesungen) ) select Name, Titel from Professoren, Vorlesungen where PersNr = gelesenvon and Titel = Mäeutik ; Sebastian Skritek Seite 27

28 Relationale Abfragesprachen 4 Datenabfragesprache 42 Anfragen über mehrere Relationen Anfragen über mehrere Relationen Abarbeitung 1 Bilde Kreuzprodukt der from Tabellen Professoren PersNr Name Rang Raum 2125 Sokrates C Russel C Kopernikus C Popper C Augustinus C Curie C Kant C4 7 Vorlesungen VorlNr Titel SWS PersNr 5001 Grundzüge Ethik Erkenntnistheorie Mäeutik Logik Wissenschaftstheorie Bioethik Der Wiener Kreis Glaube und Wissen Die drei Kritiken Sebastian Skritek Seite 28

29 Relationale Abfragesprachen 4 Datenabfragesprache 42 Anfragen über mehrere Relationen Anfragen über mehrere Relationen Abarbeitung Professoren Vorlesungen PersNr Name Rang Raum VorlNr Titel SWS VPersNr 2125 Sokrates C Grundzüge Sokrates C Ethik Sokrates C Mäeutik Kant C Die drei Kritiken Überprüfe für jede Zeile die where Bedingungen σ PersNr=VPersNr Titel= Mäeutik (Professoren Vorlesungen) PersNr Name Rang Raum VorlNr Titel SWS VPersNr 2125 Sokrates C Mäeutik Sebastian Skritek Seite 29

30 Relationale Abfragesprachen 4 Datenabfragesprache 42 Anfragen über mehrere Relationen Anfragen über mehrere Relationen Abarbeitung σ PersNr=VPersNr Titel= Mäeutik (Professoren Vorlesungen) PersNr Name Rang Raum VorlNr Titel SWS VPersNr 2125 Sokrates C Mäeutik Projiziere auf select Attribute π Name,Titel ( ) Name Titel Sokrates Mäeutik Sebastian Skritek Seite 30

31 Relationale Abfragesprachen 4 Datenabfragesprache 42 Anfragen über mehrere Relationen Anfragen über mehrere Relationen Geben Sie Name und Matrikelnummer der Studierenden und den Titel der von ihnen gehörten Vorlesungen aus Studenten (MatrNr, Name, Sem ) hören (MatrNr, VorlNr) Vorlesungen (VorlNr, Titel, SWS, gelesenvon ) select Studenten MatrNr, Name, Titel from Studenten, hören, Vorlesungen where Studenten MatrNr = hören MatrNr and hören VorlNr = Vorlesungen VorlNr ; Sebastian Skritek Seite 31

32 Relationale Abfragesprachen 4 Datenabfragesprache 42 Anfragen über mehrere Relationen Platzhalter für Tabellen und Umbenennung von Attributen Selbe Anfrage bei der Vergabe von Platzhaltern für Tabellennamen: select s MatrNr, sname, v Titel from Studenten s, hören h, Vorlesungen v where s MatrNr = h MatrNr and h VorlNr = v VorlNr ; Finde die Vorlesungsnummern der Vorlesungen, die indirekte Vorgänger 2 Stufe der VO 5216 sind (= Vorgänger der Vorgänger von 5216) voraussetzen ( VorgNr, NachfNr ) select v1 VorgNr as Vorg_Stufe_2 from voraussetzen v1, voraussetzen v2 where v1 NachfNr =v2 VorgNr and v2 NachfNr =5216; Sebastian Skritek Seite 32

33 Relationale Abfragesprachen 4 Datenabfragesprache 42 Anfragen über mehrere Relationen Anfragen über mehrere Relationen Struktur einer Abfrage über mehrere Tabellen: select Atrribut1 as a1, Attribut2 as a2,, AttributM as am from Tabelle1 t1, Tabelle2 t2,, TabelleN tn where Bedingungen ; Sebastian Skritek Seite 33

34 Relationale Abfragesprachen 4 Datenabfragesprache 42 Anfragen über mehrere Relationen Übersetzung in relationale Algebra Allgemeine Form einer (ungeschachteteln) SQL-Anfrage: π A1,,A n σ P select A 1,, A n from R 1,, R k where P ; wird zu: π A1,,A n σ P (R 1 R k ) R k R 3 R 1 R 2 Sebastian Skritek Seite 34

35 Relationale Abfragesprachen 4 Datenabfragesprache 43 Mengenoperationen Mengenoperationen Anfragen mit typkompatiblen Ausgabeattributen können mittels Mengenoperationen verknüpft werden Ohne Duplikate: union, intersect, except (minus) Mit Duplikaten: union all, intersect all, except all Suchen Sie den Namen aller Assistenten oder Professoren ( select Name from Assistenten ) union ( select Name from Professoren ); Sebastian Skritek Seite 35

36 Relationale Abfragesprachen 4 Datenabfragesprache 44 Aggregatfunktionen Aggregatfunktionen Aggregatfunktionen sind Operationen, die nicht auf einzelnen Tupeln, sondern auf einer Menge von Tupeln arbeiten: avg(), max(), min(), sum() berechnen den Wert einer Menge von Tupeln, count() zählt die Anzahl der Tupel in der Menge Sebastian Skritek Seite 36

37 Relationale Abfragesprachen 4 Datenabfragesprache 44 Aggregatfunktionen Aggregatfunktionen Geben Sie die durchschnittliche/maximale/minimale Inskriptionsdauer der Studenten an; geben Sie an, wieviele Studierende es gibt select avg ( Semester ) from Studenten ; select max ( Semester ) from Studenten ; select min ( Semester ) from Studenten ; select count ( MatrNr ) from Studenten ; Studenten MatrNr Name Sem Xenokrates Jonas Fichte Aristoxenos Schopenhauer Carnap Theophrastos Feuerbach 2 Sebastian Skritek Seite 37

38 Relationale Abfragesprachen 4 Datenabfragesprache 44 Aggregatfunktionen Aggregatfunktionen Geben Sie die Summe der von C4 Professoren gehaltenen Vorlesungsstunden an select sum ( SWS ) from Vorlesungen, Professoren where gelesenvon = PersNr and Rang = C4 ; Vorlesungen VorlNr Titel SWS gelesenvon 5001 Grundzüge Ethik Erkenntnistheorie Mäeutik Logik Der Wiener Kreis Bioethik Professoren PersNr Name Rang 2125 Sokrates C Russel C Popper C3 Sebastian Skritek Seite 38

39 Relationale Abfragesprachen 4 Datenabfragesprache 45 Aggregate und Gruppierung Aggregate und Gruppierung Problem: Wollen nicht die Summe aller Vorlesungsstunden absolut berechnen, sondern zu jedem Vortragenden die Summe der von ihm gehaltenen Stunden Lösung: Bilde zu jedem Vortragenden eine Gruppe (mittels der group by Klause) und summiere nur innerhalb dieser Gruppe Allgemein: Alle Zeilen einer Tabelle, die auf den Attributen der group by Klause den selben Wert annehmen, werden zu einer Gruppe zusammengefasst und die Aggregatfunktionen werden bezüglich der Gruppe ausgewertet Bedingungen an die aggregierten Werte werden in der having Klause angeführt Sebastian Skritek Seite 39

40 Relationale Abfragesprachen 4 Datenabfragesprache 45 Aggregate und Gruppierung Bsp: Aggregate und Gruppierung e Geben Sie zu jedem C4 Professor die Summe der von ihm gehaltenen Vorlesungsstunden an select gelesenvon, sum ( SWS ) from Vorlesungen, Professoren where gelesenvon = PersNr and Rang = C4 group by gelesenvon ; Geben Sie zu jedem C4 Professor, der vor allem lange Vorlesungen (Durchschnitt größer gleich 3) hält, die Summe der von ihm gehaltenen Vorlesungsstunden an select gelesenvon, Name, sum ( SWS ) from Vorlesungen, Professoren where gelesenvon = PersNr and Rang = C4 group by gelesenvon, Name having avg ( SWS ) >= 3; Sebastian Skritek Seite 40

41 Relationale Abfragesprachen 4 Datenabfragesprache 45 Aggregate und Gruppierung Aggregate und Gruppierung Abarbeitung Professoren Vorlesungen PersNr Name Rang Raum VorlNr Titel SWS gelesenvon 2125 Sokrates C Grundzüge Sokrates C Ethik Sokrates C Mäeutik Popper C Grundzüge Kant C Die drei Kritiken where-bedingung Sebastian Skritek Seite 41

42 Relationale Abfragesprachen 4 Datenabfragesprache 45 Aggregate und Gruppierung Aggregate und Gruppierung where-bedingung PersNr Name Rang Raum VorlNr Titel SWS gelesenvon 2137 Kant C Grundzüge Sokrates C Ethik Russel C Erkenntnistheorie Sokrates C Mäeutik Sokrates C Logik Russel C Wissenschaftstheorie Russel C Bioethik Kant C Die drei Kritiken Gruppierung Sebastian Skritek Seite 42

43 Relationale Abfragesprachen 4 Datenabfragesprache 45 Aggregate und Gruppierung Aggregate und Gruppierung Gruppierung PersNr Name Rang Raum VorlNr Titel SWS gelesenvon 2125 Sokrates C Ethik Sokrates C Mäeutik Sokrates C Logik Russel C Erkenntnistheorie Russel C Wissenschaftstheorie Russel C Bioethik Kant C Grundzüge Kant C Die drei Kritiken having-bedingung Sebastian Skritek Seite 43

44 Relationale Abfragesprachen 4 Datenabfragesprache 45 Aggregate und Gruppierung Aggregate und Gruppierung having-bedingung PersNr Name Rang Raum VorlNr Titel SWS gelesenvon 2125 Sokrates C Ethik Sokrates C Mäeutik Sokrates C Logik Kant C Grundzüge Kant C Die drei Kritiken Aggregation (sum) und Projektion gelesenvon Name sum(sws) 2125 Sokrates Kant 8 Sebastian Skritek Seite 44

45 Relationale Abfragesprachen 4 Datenabfragesprache 45 Aggregate und Gruppierung Aggregate und Gruppierung Achtung: SQL erzeugt pro Gruppe ein Ergebnistupel Alle in der select Klausel aufgeführten Attribute- außer den aggregierten - müssen auch in der group by Klausel aufgeführt werden So wird sichergestellt, dass die ausgegebenen Attribute sich nicht innerhalb der Gruppe ändern select gelesenvon, Name, sum ( SWS ) group by gelesenvon, Name; Sebastian Skritek Seite 45

46 Relationale Abfragesprachen 4 Datenabfragesprache 45 Aggregate und Gruppierung Bsp: Aggregate und Gruppierung Geben Sie die Namen der Studenten aus, die am längsten studieren select Name, max ( Semester ) from Studenten ; ORA-00937: not a single-group group function (2 Versuch) select Name, max ( Semester ) from Studenten group by Name ; Alle Tupel?!? Lösung: Geschachtelte Anfrage Sebastian Skritek Seite 46

47 Relationale Abfragesprachen 4 Datenabfragesprache 46 Geschachtelte Anfragen Geschachtelte Anfragen Es gibt vielfältige Möglichkeiten select Anweisungen zu verknüpfen Folgende Einteilung ist abhängig vom Ergebnis der Unteranfrage (ein Wert oder eine Relation) Ergebnis der Unteranfrage besteht aus einem Tupel mit einem Attribut (= ein Wert): Unteranfrage anstelle eines skalaren Wertes in select bzw where Klausel Ergebnis der Unterabfrage eine Relation Unteranfrage in from Klausel Mengenvergleiche: in, not in, any, all Verknüpfung über Quantoren: exists Bei geschachtelten Abfragen ist für die Laufzeit ausschlaggebend, ob es sich um korrelierte oder unkorrelierte Abfragen handelt Sebastian Skritek Seite 47

48 Relationale Abfragesprachen 4 Datenabfragesprache 46 Geschachtelte Anfragen Geschachtelte Anfragen Unteranfrage in der where Klausel Geben Sie die Namen der Studenten aus, die am längsten studieren Studenten ( MatrNr, Name, Sem ) select Name from Studenten where Semester = ( select max ( Semester ) from Studenten ); Sebastian Skritek Seite 48

49 Relationale Abfragesprachen 4 Datenabfragesprache 46 Geschachtelte Anfragen Geschachtelte Anfragen Unteranfrage in der select Klausel Geben Sie zu jedem Vortragenden seine Lehrbelastung aus select pname, ( select sum ( SWS ) from Vorlesungen where gelesenvon =p PersNr ) from Professoren p; Achtung: Die Unteranfrage ist korreliert (= sie greift auf Attribute der umschläeßenden Anfrage zu) Für jedes Ergebnistupel wird die Unteranfrage einmal ausgeführt Sebastian Skritek Seite 49

50 Relationale Abfragesprachen 4 Datenabfragesprache 46 Geschachtelte Anfragen Geschachtelte Anfragen Unteranfrage in der from Klausel Gesucht sind jene Studenten, die mehr als 2 Vorlesungen hören select tmp MatrNr, tmp Name, tmp VorlAnzahl from ( select s MatrNr, sname, count (*) as VorlAnzahl from Studenten s, hören h where s MatrNr =h MatrNr group by s MatrNr, s Name ) tmp where tmp VorlAnzahl > 2; Sebastian Skritek Seite 50

51 Relationale Abfragesprachen 4 Datenabfragesprache 46 Geschachtelte Anfragen Geschachtelte Anfragen (Entschachtelung mittels having) Gesucht sind jene Studenten, die mehr als 2 Vorlesungen hören select s MatrNr, s Name, count (*) as VorlAnzahl from Studenten s, hören h where s MatrNr = h MatrNr group by s MatrNr, s Name having count (*) > 2; Sebastian Skritek Seite 51

52 Relationale Abfragesprachen 4 Datenabfragesprache 46 Geschachtelte Anfragen Geschachtelte Anfragen Mengenvergleiche Mengenvergleich mit in/not in Suchen Sie alle jene Professoren, die keine Lehrveranstaltungen halten select Name from Professoren where PersNr not in ( select gelesenvon from Vorlesungen ); Sebastian Skritek Seite 52

53 Relationale Abfragesprachen 4 Datenabfragesprache 46 Geschachtelte Anfragen Geschachtelte Anfragen Mengenvergleiche Mengenvergleich mit any/all (Achtung: kein Allquantor, nur der Vergleich eines Wertes mit einer Menge von Werten) Suchen Sie jene Studenten, die am längsten studieren select Name from Studenten where Semester >= all ( select Semester from Studenten ); gleichbedeutend mit: select Name from Studenten where Semester = ( select max ( Semester ) from Studenten ); Sebastian Skritek Seite 53

54 Relationale Abfragesprachen 4 Datenabfragesprache 46 Geschachtelte Anfragen Geschachtelte Anfragen Aggregatfunktionen Geschachtelte Aggregatfunktionen sind im Allgemeinen nicht erlaubt Unteranfrage verwenden Suchen Sie C4 Professoren, die die meisten Vorlesungsstunden halten select gelesenvon, max(sum(sws)) from Vorlesungen, Professoren where gelesenvon = PersNr and Rang = C4 group by gelesenvon ; Sebastian Skritek Seite 54

55 Relationale Abfragesprachen 4 Datenabfragesprache 46 Geschachtelte Anfragen Geschachtelte Anfragen Aggregatfunktionen Geschachtelte Aggregatfunktionen sind im Allgemeinen nicht erlaubt Unteranfrage verwenden Suchen Sie C4 Professoren, die die meisten Vorlesungsstunden halten select gelesenvon, sum ( SWS ) from Vorlesungen, Professoren where gelesenvon = PersNr and Rang = C4 group by gelesenvon having sum ( SWS ) >= all ( select sum ( SWS ) from Vorlesungen, Professoren where gelesenvon = PersNr and Rang = C4 group by gelesenvon ); Sebastian Skritek Seite 55

56 Relationale Abfragesprachen 4 Datenabfragesprache 47 Existentiell quantifizierte Anfragen Existentiell quantifizierte Anfragen Verknüpfung mit einer Unteranfrage durch Existenzquantor exists exists überprüft, ob die Unterabfrage Tupel enthält oder nicht Gesucht sind all jene Studenten, die älter als der jüngste Professor sind select s* from Studenten s where exists ( select p* from Professoren p where p GebDatum > s GebDatum ); Korrelierte Unteranfrage (sgebdatum und Studenten s)! Sebastian Skritek Seite 56

57 Relationale Abfragesprachen 4 Datenabfragesprache 47 Existentiell quantifizierte Anfragen Existentiell quantifizierte Anfragen Eine nicht korrelierte Lösung ist: (Nicht korreliert) Gesucht sind all jene Studenten, die älter als der jüngste Professor sind select s* from Studenten s where s GebDatum < ( select max (p GebDatum ) from Professoren p); oder select s* from Studenten s where s GebDatum < any ( select p GebDatum from Professoren p); oder Sebastian Skritek Seite 57

58 Relationale Abfragesprachen 4 Datenabfragesprache 47 Existentiell quantifizierte Anfragen Existentiell quantifizierte Anfragen Suchen Sie all jene Professoren, die keine Lehrveranstaltungen halten select Name from Professoren where not exists ( select * from Vorlesungen where gelesenvon = PersNr ); Korrelierte Unteranfrage (PersNr und Professoren)! Eine nicht korrelierte Lösung ist: select Name from Professoren where PersNr not in ( select gelesenvon from Vorlesung ); Sebastian Skritek Seite 58

59 Relationale Abfragesprachen 4 Datenabfragesprache 47 Existentiell quantifizierte Anfragen Existentiell quantifizierte Anfragen Suchen Sie jene Assistenten, die für einen Professor arbeiten, der jünger ist, als sie selbst select a* from Assistenten a where exists ( select p* from Professoren p where a Boss = p PersNr and p GebDatum > a GebDatum ); Korrelierte Unteranfrage (agebdatum und Assistenten a)! Eine nicht korrelierte Lösung mit Join ist: select a* from Assistenten a, Professoren p where a Boss = p PersNr and p GebDatum > a GebDatum ; Sebastian Skritek Seite 59

60 Relationale Abfragesprachen 4 Datenabfragesprache 48 Allquantifizierte Anfragen Allquantifizierte Anfragen Nicht direkt in SQL Welche Studenten haben alle 4 stündigen Lehrveranstaltungen gehört? SQL stellt keinen Allquantor zur Verfügung Realisierung durch 1 Logische Äquivalenz (mittels 2 not exists) 2 Teilmengen (mittels exists und except) 3 Abzählen (mittels count) 4 Division (mittels except) Sebastian Skritek Seite 60

61 Relationale Abfragesprachen 4 Datenabfragesprache 48 Allquantifizierte Anfragen Allquantifizierte Anfragen 1 Logische Umformung Umformulierung in äqivalente Anfrage mit Negation und Existenzquantor (Prädikatenlogik) xf (x) x( F (x)) Welche Studenten haben alle 4 stündigen Lehrveranstaltungen gehört? Suchen Sie jene Studenten für die gilt: haben alle 4 stündigen Lehrveranstaltungen gehört Suchen Sie jene Studenten für die nicht gilt: haben eine 4 stündige Lehrveranstaltung nicht gehört Suchen Sie jene Studenten für die nicht gilt: es gibt eine 4 stündige Lehrveranstaltung, die der Student nicht gehört hat Sebastian Skritek Seite 61

62 Relationale Abfragesprachen 4 Datenabfragesprache 48 Allquantifizierte Anfragen Allquantifizierte Anfragen 1 Logische Umformung Umformung im relationalen Tupelkalkül: Studenten (MatrNr, Name, Sem ) hören (MatrNr, VorlNr) Vorlesungen (VorlNr, Titel, SWS, gelesenvon ) {t t Studenten v Vorlesungen(vSWS = 4 h hören(hmatrnr = tmatrnr hvorlnr = vvorlnr))} Sebastian Skritek Seite 62

63 Relationale Abfragesprachen 4 Datenabfragesprache 48 Allquantifizierte Anfragen Allquantifizierte Anfragen 1 Logische Umformung {t t Studenten v Vorlesungen(vSWS = 4 h hören(hmatrnr = tmatrnr hvorlnr = vvorlnr))} {t t Studenten v Vorlesungen (vsws = 4 h hören(hmatrnr = tmatrnr hvorlnr = vvorlnr))} {t t Studenten v Vorlesungen ( (vsws = 4) ( h hören(hmatrnr = tmatrnr hvorlnr = vvorlnr)))} {t t Studenten v Vorlesungen((vSWS = 4) ( h hören(hmatrnr = tmatrnr hvorlnr = vvorlnr)))} Sebastian Skritek Seite 63

64 Relationale Abfragesprachen 4 Datenabfragesprache 48 Allquantifizierte Anfragen Allquantifizierte Anfragen 1 Logische Umformung SQL Umsetzung folgt nun direkt aus: Suchen Sie jene Studenten für die nicht gilt: es gibt eine 4 stündige Lehrveranstaltung, für die nicht gilt: der Student hat diese Lehrveranstaltung gehört select s* from Studenten s where not exists (select * from Vorlesungen v where vsws = 4 and not exists ( select * from hören h where h VorlNr = v VorlNr and s MatrNr = h MatrNr )); Sebastian Skritek Seite 64

65 Relationale Abfragesprachen 4 Datenabfragesprache 48 Allquantifizierte Anfragen Allquantifizierte Anfragen 1 Logische Umformung SQL Umsetzung folgt nun direkt aus: Suchen Sie jene Studenten für die nicht gilt: es gibt eine 4 stündige Lehrveranstaltung, für die nicht gilt: der Student hat diese Lehrveranstaltung gehört select s* from Studenten s where not exists (select * from Vorlesungen v where vsws = 4 and smatrnr not in ( select h MatrNr from hören h where h VorlNr = v VorlNr )); Sebastian Skritek Seite 65

66 Relationale Abfragesprachen 4 Datenabfragesprache 48 Allquantifizierte Anfragen Allquantifizierte Anfragen 2 Teilmengen Suchen Sie jene Studenten für die gilt: 4 stündige LVAs von Studenten gehörte LVAs Suchen Sie jene Studenten für die nicht gilt: 1 Es gibt eine 4 stündige LVA / von Studenten gehörte LVAs oder 2 Es gibt eine LVA in der Differenz 4 stündige LVAs von Studenten gehörte LVAs Sebastian Skritek Seite 66

67 Relationale Abfragesprachen 4 Datenabfragesprache 48 Allquantifizierte Anfragen Allquantifizierte Anfragen 2 Teilmengen Suchen Sie jene Studenten für die nicht gilt: Es gibt eine 4 stündige LVA / von Studenten gehörte LVAs select s* from Studenten s where not exists (select * from Vorlesungen v where vsws = 4 and vvorlnr not in ( select h VorlNr from hören h where h VorlNr = s MatrNr )); Sebastian Skritek Seite 67

68 Relationale Abfragesprachen 4 Datenabfragesprache 48 Allquantifizierte Anfragen Allquantifizierte Anfragen 2 Teilmengen Suchen Sie jene Studenten für die nicht gilt: Es gibt eine LVA in der Differenz 4 stündige LVAs von Studenten gehörte LVAs select s* from Studenten s where not exists ((select VorlNr from Vorlesungen v where vsws = 4) except (select VorlNr from hören h where hmatrnr = smatrnr)) Sebastian Skritek Seite 68

69 Relationale Abfragesprachen 4 Datenabfragesprache 48 Allquantifizierte Anfragen Allquantifizierte Anfragen 3 Abzählen Allquantifizierung kann immer auch durch eine count-aggregation ausgedrückt werden Welche Studenten haben alle 4 stündigen Lehrveranstaltungen gehört? 1 Zähle zu jedem Studenten, wieviele 4 stündigen LVAs er besucht hat 2 zähle wieviele 4 stündige LVAs es gibt select s MatrNr, s Name from Studenten s, hören h, Vorlesungen v where s MatrNr = h Matrnr and h VorlNr = v VorlNr and v SWS = 4 group by s MatrNr, s Name having count (*) = (select count (*) from Vorlesungen where SWS = 4); Sebastian Skritek Seite 69

70 Relationale Abfragesprachen 4 Datenabfragesprache 48 Allquantifizierte Anfragen Allquantifizierte Anfragen 4 Relationale Algebra? Welche Studierenden haben alle 4-stündigen Vorlesungen gehört? hören MatrNr VorlNr hören π VorlNr σ SWS=4 (Vorlesungen) π VorlNr σ SWS=4 (Vorlesungen) VorlNr = R S MatrNr Sebastian Skritek Seite 70

71 Relationale Abfragesprachen 4 Datenabfragesprache 48 Allquantifizierte Anfragen Allquantifizierte Anfragen 4 Relationale Algebra? Die Division kann durch die primitiven Operatoren ausgedrückt werden 1 Bilde alle Paare von Studenten und 4 stündigen LVAs Inhalt der DB wenn alle Studenten alle 4 stündigen LVAs absolviert hätten suche Abweichungen 2 Entferne davon alle Paare (Student, LVA) an LVAs die ein Student besucht hat (dh der Inhalt von hören) Diese Paare aus Studenten und 4 stündigen LVAs fehlen in der DB 3 Aus den übrig gebliebenen Paaren, sammle die Studenten Studenten die mindestens eine 4 stündige LVA nicht besucht haben 4 Ziehe diese Studenten von der Menge aller Studenten ab Studenten alle 4 stündigen LVAs besucht haben R S = Π R S (R) Π R S ((Π R S (R) S) R) Sebastian Skritek Seite 71

72 Relationale Abfragesprachen 4 Datenabfragesprache 48 Allquantifizierte Anfragen Allquantifizierte Anfragen 4 Relationale Algebra? 1 Bilde alle Paare von Studenten und 4 stündigen LVAs 2 Entferne davon alle Paare (Student, LVA) an LVAs die ein Student besucht hat (dh der Inhalt von hören) 3 Aus den übrig gebliebenen Paaren, sammle die Studenten 4 Ziehe diese Studenten von der Menge aller Studenten ab (select sjamatrnr from Studenten sja) except (select sneinmatrnr from ((select smatrnr, vvorlnr from Studenten s, Vorlesungen v where vsws = 4) except (select * from hören)) snein); Sebastian Skritek Seite 72

73 Relationale Abfragesprachen 4 Datenabfragesprache 49 Nullwerte Nullwerte Studenten MatrNr Name Semester Xenokrates Jonas Fichte Aristoxenos Schopenhauer Carnap 3 Finde die Anzahl der Studenten Sebastian Skritek Seite 73

74 Relationale Abfragesprachen 4 Datenabfragesprache 49 Nullwerte Nullwerte Finde die Anzahl der Studenten: select count (*) from Studenten ; (6) select count ( MatrNr ) from Studenten ; (6) 6 select count ( Semester ) from Studenten ; (6) select count (*) from Studenten where Semester < 13 or Semester >= 13; (6) Sebastian Skritek Seite 74

75 Relationale Abfragesprachen 4 Datenabfragesprache 49 Nullwerte Nullwerte Nullwerte entstehen wenn kein Wert in der Datenbank vorhanden ist, im Zuge der Anfrageauswertung (Bsp äußere Joins) Studenten MatrNr Name Semester Xenokrates Jonas Fichte NULL Aristoxenos Schopenhauer Carnap 3 Finde die Anzahl der Studenten Sebastian Skritek Seite 75

76 Relationale Abfragesprachen 4 Datenabfragesprache 49 Nullwerte Nullwerte Finde die Anzahl der Studenten: select count (*) from Studenten ; (6) select count ( MatrNr ) from Studenten ; (6) select count ( Semester ) from Studenten ; (5) select count (*) from Studenten where Semester < 13 or Semester >= 13; (5) Sebastian Skritek Seite 76

77 Relationale Abfragesprachen 4 Datenabfragesprache 49 Nullwerte Einschub: count revisited Verhalten von count(): count(*): Zählt alle Tupel (inkl Duplikate) count(attribute): Zählt die Anzahl der von NULL verschiedenen Werte in der angegebenen Spalte (inkl Duplikate) count(distinct attribute): Zählt die Anzahl der verschiedenen von NULL verschiedenen Werte in der angegebenen Spalte (dh: ohne Duplikate) Sebastian Skritek Seite 77

78 Relationale Abfragesprachen 4 Datenabfragesprache 49 Nullwerte Nullwerte Gibt es Tupel, bei denen der Wert für Semester unbekannt ist, so gilt: select count (*) from Student where Semester < 13 or Semester >= 13; select count (*) from Studenten ; Sebastian Skritek Seite 78

79 Relationale Abfragesprachen 4 Datenabfragesprache 49 Nullwerte Nullwerte: Behandlung in Ausdrücken Arithmetische Ausdrücke: Nullwerten werden propagiert: ist ein Operand null so ist das Ergebnis null null + 1 = null; null * 0 = null; Vergleichsoperatoren: SQL hat dreiwertige Logik: true, false, unknown Das Resultat ist unknown, wenn mindestens eines der Argumente null ist (Semester > 13) liefert unknown, wenn das Semester unbekannt ist, dh den Wert null annimmt Achtung! zb auch (Semester = null) Sebastian Skritek Seite 79

80 Relationale Abfragesprachen 4 Datenabfragesprache 49 Nullwerte Nullwerte Auswertung logischer Ausdrücke Logische Ausdrücke: werden nach den folgenden Tabellen berechnet: not true unknown false false unknown true and true unknown false true true unknown false unknown unknown unknown false false false false false or true unknown false true true true true unknown true unknown unknown false true unknown false Sebastian Skritek Seite 80

81 Relationale Abfragesprachen 4 Datenabfragesprache 49 Nullwerte Nullwerte Auswertung where-bedingung: es werden nur Tupel eitergereicht, für die die Bedingung zu true auswertet Tupel, für die die Bedingung zu unknown auswertet, werden nicht ins Ergebnis aufgenommen Gruppierung: wird null als ein eigenständiger Wert aufgefasst und in eine eigene Gruppe eingeordnet Nullwerte werden abgefragt mittels: is null bzw is not null select * from Student where Semester is null ; Sebastian Skritek Seite 81

82 Relationale Abfragesprachen 4 Datenabfragesprache 410 Spezielle Sprachkonstrukte Spezielle Sprachkonstrukte between like case Joins cross join natural join join left, right, full outer join Sebastian Skritek Seite 82

83 Relationale Abfragesprachen 4 Datenabfragesprache 410 Spezielle Sprachkonstrukte between e Suchen Sie jene Studenten, die zwischen dem ersten und dem vierten Semester inskribiert sind: 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); Sebastian Skritek Seite 83

84 Relationale Abfragesprachen 4 Datenabfragesprache 410 Spezielle Sprachkonstrukte like Vergleich von Zeichenketten: Platzhalter % und e %: beliebig viele (auch gar kein) Zeichen : genau ein Zeichen Suchen Sie die Matrikelnummer von Theophrastos, wobei Sie nicht wissen, ob er sich mit h schreibt: select * from Studenten where Name like T% eophrastos ; Suchen Sie die Matrikelnummern jener Studenten, die mindestens eine LVA über Ethik gehört haben: select distinct MatrNr from Vorlesungen v, hören h where h VorlNr = v VorlNr and v Titel like % thik % ; Sebastian Skritek Seite 84

85 Relationale Abfragesprachen 4 Datenabfragesprache 410 Spezielle Sprachkonstrukte case Wandeln Sie die Prüfungsnoten in Werte der Studienabteilung um: select MatrNr, ( case when Note < 15 then S1 when Note < 25 then U2 when Note < 35 then B3 when Note < 40 then G4 else N5 end ) from prüfen ; Die erste qualifizierende when-klausel wird ausgeführt Sebastian Skritek Seite 85

86 Relationale Abfragesprachen 4 Datenabfragesprache 410 Spezielle Sprachkonstrukte Joins SQL unterstützt folgende Join-Schlüsselworte: cross join Kreuzprodukt natural join natürlicher Join [inner] join Theta-Join (oder inner join) (left right full) outer join äußerer Join cross join: R 1 R 2 select * from Professoren, Vorlesungen ; select * from Professoren cross join Vorlesungen ; Sebastian Skritek Seite 86

87 Relationale Abfragesprachen 4 Datenabfragesprache 410 Spezielle Sprachkonstrukte natural join: R 1 R 2 Die Werte jener Spalten, deren Attributnamen dieselben sind, werden gleichgesetzt Geben Sie Name und Matrikelnummer der Studierenden und den Titel der von ihnen gehörten Vorlesungen aus Studenten (MatrNr, Name, Sem ) hören (MatrNr, VorlNr) Vorlesungen (VorlNr, Titel, SWS, gelesenvon ) Sebastian Skritek Seite 87

88 Relationale Abfragesprachen 4 Datenabfragesprache 410 Spezielle Sprachkonstrukte natural join: Geben Sie Name und Matrikelnummer der Studierenden und den Titel der von ihnen gehörten Vorlesungen aus Studenten (MatrNr, Name, Sem ) hören (MatrNr, VorlNr) Vorlesungen (VorlNr, Titel, SWS, gelesenvon ) select Studenten MatrNr, Name, Titel from Studenten, hören, Vorlesungen where Studenten MatrNr = hören MatrNr and hören VorlNr = Vorlesungen VorlNr ; select MatrNr, Name, Titel from Studenten natural join hören natural join Vorlesungen ; Sebastian Skritek Seite 88

89 Relationale Abfragesprachen 4 Datenabfragesprache 410 Spezielle Sprachkonstrukte [inner] join: R 1 θ R 2 Welche Professoren lesen die LVA Mäeutik? Professoren (PersNr, Name, Rang, Raum ) Vorlesungen ( VorlNr, Titel, SWS, gelesenvon) select Name, Titel from Professoren, Vorlesungen where PersNr = gelesenvon and Titel = Mäeutik ; select Name, Titel from Professoren join Vorlesungen on PersNr = gelesenvon where Titel = Mäeutik ; Sebastian Skritek Seite 89

90 Relationale Abfragesprachen 4 Datenabfragesprache 410 Spezielle Sprachkonstrukte (left right full) outer join: R 1 ( )R 2 Geben Sie eine Liste aller Studierenden aus und ihre Noten zu den abgeprüften Vorlesungen select s MatrNr, sname, p VorlNr, p Note from Studenten s left outer join prüfen p on s MatrNr =p MatrNr ; select s MatrNr, sname, p VorlNr, p Note from prüfen p right outer join Studenten s on s MatrNr =p MatrNr ; Sebastian Skritek Seite 90

91 Relationale Abfragesprachen 4 Datenabfragesprache 410 Spezielle Sprachkonstrukte Studenten pr üfen MatrNr Name VorlNr Note Xenokrates Jonas Fichte Aristoxenos Schopenhauer Carnap Theophrastos Feuerbach Ergebnis ohne Verwendung des outer Joins: Studenten pr üfen MatrNr Name VorlNr Note Jonas Schopenhauer Carnap Sebastian Skritek Seite 91

92 Relationale Abfragesprachen 4 Datenabfragesprache 410 Spezielle Sprachkonstrukte coalesce() Geben Sie eine Liste aller Studierenden aus und ihre Noten zu den abgeprüften Vorlesungen Für Studierende die keine Vorlesung besucht haben sollen VorlNr und Note den Wert 0 annehmen select s MatrNr, sname, coalesce (p VorlNr,0), coalesce (pnote,0) from Studenten s left outer join prüfen p on s MatrNr =p MatrNr ; Achtung: Typen müssen kompatibel sein Sebastian Skritek Seite 92

93 Relationale Abfragesprachen 4 Datenabfragesprache 410 Spezielle Sprachkonstrukte concat() Studenten ( MatrNr, Vorname, Nachname, Semester ); Geben Sie den Namen aller Studierenden aus select Vorname Nachname from Studenten ; oder select concat ( Vorname, Nachname ) from Studenten ; (oft auch + stat ) Sebastian Skritek Seite 93

94 Relationale Abfragesprachen 4 Datenabfragesprache 411 Sichten (Views) Sichten (Views) sind gespeicherte Anfragen, die als virtuelle Tabelle zur Verfügung stehen waren ursprünglich nur für den Lesezugriff gedacht, sind aber unter bestimmten Einschränkungen auch update-fähig werden bei jedem Zugriff dynamisch neu erstellt sind nicht Teil des physischen Schemas Verwendung: Konzept zur Anpassung an verschiedene Benutzer Vereinfachung von Anfragen Realisierung der Generalisierung DBMS proprietär: materialized views (ORACLE): präkompilierte nicht mehr virtuelle Anfrage indexed views (SQL Server): zusätzlich gespeicherter Index verwendet zur Beschleunigung von sehr häufig durchgeführten Anfragen Sebastian Skritek Seite 94

95 Relationale Abfragesprachen 4 Datenabfragesprache 411 Sichten (Views) Anpassung an unterschiedliche Benutzergruppen Aus Datenschutzgründen soll im Allgemeinen nur die Prüfungsliste, nicht aber die Note lesbar sein: create view prüfensicht as select MatrNr, VorlNr, PersNr from prüfen ; Sebastian Skritek Seite 95

96 Relationale Abfragesprachen 4 Datenabfragesprache 411 Sichten (Views) Vereinfachung von Anfragen Vermeidung der ständigen Verwendung des Joins Studenten hören Vorlesungen Professoren create view StudProf ( Sname, Semester, Titel, Pname ) as select sname, s Semester, v Titel, p Name from Studenten s, hören h, Vorlesungen v, Professoren p where s MatrNr =h MatrNr and h VorlNr =v VorlNr and v gelesenvon = p PersNr ; Suchen Sie Name, Semester aller Studenten von Sokrates select distinct Name, Semester from StudProf where Pname = Sokrates ; Sebastian Skritek Seite 96

97 Relationale Abfragesprachen 4 Datenabfragesprache 411 Sichten (Views) Realisierung der Generalisierung Sichten realisieren Inklusion und Vererbung: Tupel des Untertyps sollen auch automatisch zum Obertyp gehören Attribute des Obertyps: sollen automatisch vererbt werden entweder Untertypen oder Obertypen als Sicht definieren Entscheidung aufgrund der Häufigkeit der Zugriffe Sebastian Skritek Seite 97

98 Relationale Abfragesprachen 4 Datenabfragesprache 411 Sichten (Views) Realisierung der Generalisierung (Untertypen als Sicht) create table Angestellte ( PersNr integer not null, Name varchar (30) not null ); create table ProfDaten ( PersNr integer not null, Rang character (2), Raum integer ); create table AssiDaten ( PersNr integer not null, Fachgebiet varchar (30), Boss integer ); create view Professoren as select * from Angestellte natural join ProfDaten ; create view Assistenten as select * from Angestellte natural join AssiDaten ; Sebastian Skritek Seite 98

99 Relationale Abfragesprachen 4 Datenabfragesprache 411 Sichten (Views) Realisierung der Generalisierung (Obertypen als Sicht) create table Professoren ( PersNr integer not null, Name varchar (30) not null, Rang character (2), Raum integer ); create table Assistenten ( PersNr integer not null, Name varchar (30) not null, Fachgebiet varchar (30), Boss integer ); create table AndereAnges ( PersNr integer not null, Name varchar (30) not null ); create view Angestellte as ( select PersNr, Name from Professoren ) union ( select PersNr, Name from Assistenten ) union ( select * from AndereAnges ); Sebastian Skritek Seite 99

100 Relationale Abfragesprachen 4 Datenabfragesprache 411 Sichten (Views) Updates auf Sichten Problematisch: insert, update, delete auf eine Sicht e (nicht updatefähige Sichten) create view WieHartAlsPrüfer ( PersNr, Durchschnitt ) as select PersNr, avg ( Note ) from prüfen group by PersNr ; create view VorlesungenSicht as select Titel, SWS, Name from Vorlesungen, Professoren where gelesenvon = PersNr ; Sebastian Skritek Seite 100

101 Relationale Abfragesprachen 4 Datenabfragesprache 411 Sichten (Views) Updates auf Sichten Einschränkungen der update-fähigen Sichten in SQL auf: nur eine Basisrelation Schlüssel muss vorhanden sein keine Aggregatfunktionen, Gruppierung und Duplikateliminierung alle Sichten theoretisch änderbare Sichten in SQL änderbare Sichten Sebastian Skritek Seite 101

Relationale Abfragesprachen

Relationale Abfragesprachen Relationale Abfragesprachen Relationale Abfragesprachen VO Datenmodellierung Katrin Seyr Institut für Informationssysteme Technische Universität Wien Katrin Seyr Seite 1 Relationale Abfragesprachen 1 Überblick

Mehr

Datenmodellierung. VU , SS 2016 Relationale Abfragesprachen SQL. Nysret Musliu, Sebastian Skritek

Datenmodellierung. VU , SS 2016 Relationale Abfragesprachen SQL. Nysret Musliu, Sebastian Skritek Relationale Abfragesprachen Datenmodellierung VU 184685, SS 2016 Relationale Abfragesprachen SQL Nysret Musliu, Sebastian Skritek Institut für Informationssysteme Technische Universität Wien Nysret Musliu,

Mehr

WS 2010/11 Datenbanksysteme Fr 15:15 16:45 R Vorlesung #3. SQL (Teil 1)

WS 2010/11 Datenbanksysteme Fr 15:15 16:45 R Vorlesung #3. SQL (Teil 1) Vorlesung #3 SQL (Teil 1) Fahrplan Wiederholung/Zusammenfassung Relationales Modell Relationale Algebra Relationenkalkül Geschichte der Sprache SQL SQL DDL (CREATE TABLE...) SQL DML (INSERT, UPDATE, DELETE)

Mehr

Relationale Anfragesprachen

Relationale Anfragesprachen Relationale Anfragesprachen Structured Query Language: SQL Query by Example: QBE Kapitel 1 Übungen Fr 8.0 Uhr Michael Kühn Raum E 11 SQL standardisierte - Datendefinitions (DDL)- - Datenmanipulations (DML)-

Mehr

Informatik II Vorlesung am D-BAUG der ETH Zürich. Vorlesung 12, Datenbanksysteme: Datendefinition in SQL, Kompliziertere Datenbankabfragen

Informatik II Vorlesung am D-BAUG der ETH Zürich. Vorlesung 12, Datenbanksysteme: Datendefinition in SQL, Kompliziertere Datenbankabfragen Informatik II Vorlesung am D-BAUG der ETH Zürich Vorlesung 12, 30.5.2016 Datenbanksysteme: Datendefinition in SQL, Kompliziertere Datenbankabfragen Datendefinition (DDL) in SQL Datentypen character (n),

Mehr

Fortsetzung: Projektion Selektion. NULL Werte

Fortsetzung: Projektion Selektion. NULL Werte Fortsetzung: Anfragen mit SQL Bisher: Projektion Selektion Duplikatbehandlung NULL Werte Professoren PersNr Name Rang Raum 2125 Sokrates 226 2126 Russel 232 2127 Kopernikus C3 310 2133 Popper C3 52 2134

Mehr

DATENBANKSYSTEME: SQL

DATENBANKSYSTEME: SQL Datendefinitions-, Manipulations- und Anfrage-Sprache SQL, Datendefinition, Veränderung am Datenbestand, Einfache SQL Abfrage, Anfragen über mehrere Relationen, Mengenfunktionen, Aggregatfunktion und Gruppierung,

Mehr

WS 2010/11 Datenbanksysteme Fr 15:15 16:45 R Vorlesung #4. SQL (Teil 2)

WS 2010/11 Datenbanksysteme Fr 15:15 16:45 R Vorlesung #4. SQL (Teil 2) Vorlesung #4 SQL (Teil 2) Fahrplan Eine weitere Aggregation: median Geschachtelte Anfragen in SQL Korrelierte vs. Unkorrelierte Anfragen Entschachtelung der Anfragen Operationen der Mengenlehre Spezielle

Mehr

Informatik II Vorlesung am D-BAUG der ETH Zürich. Vorlesung 12, 2017 Datenbanksysteme: Datendefinition in SQL, Kompliziertere Datenbankabfragen

Informatik II Vorlesung am D-BAUG der ETH Zürich. Vorlesung 12, 2017 Datenbanksysteme: Datendefinition in SQL, Kompliziertere Datenbankabfragen Informatik II Vorlesung am D-BAUG der ETH Zürich Vorlesung 12, 2017 Datenbanksysteme: Datendefinition in SQL, Kompliziertere Datenbankabfragen Datendefinition (DDL) in SQL Anlegen einer Tabelle create

Mehr

Wiederholung VU Datenmodellierung

Wiederholung VU Datenmodellierung Wiederholung VU Datenmodellierung VU Datenbanksysteme Reinhard Pichler Arbeitsbereich Datenbanken und Artificial Intelligence Institut für Informationssysteme Technische Universität Wien Wintersemester

Mehr

Wiederholung VU Datenmodellierung

Wiederholung VU Datenmodellierung Wiederholung VU Datenmodellierung VL Datenbanksysteme Reinhard Pichler Arbeitsbereich Datenbanken und Artificial Intelligence Institut für Informationssysteme Technische Universität Wien Wintersemester

Mehr

Kapitel 5 Dr. Jérôme Kunegis. SQL: Grundlagen. WeST Institut für Web Science & Technologien

Kapitel 5 Dr. Jérôme Kunegis. SQL: Grundlagen. WeST Institut für Web Science & Technologien Kapitel 5 Dr. Jérôme Kunegis SQL: Grundlagen WeST Institut für Web Science & Technologien Lernziele Kenntnis der Grundkonzepte von SQL Fähigkeit zur praktischen Anwendung von einfachen SQL-Anweisungen

Mehr

Fortsetzung: Kreuzprodukt, Inner Join. Sortierung. Existenzquantor, Mengenvergleich Gruppierung, Aggregate Cast-Operator

Fortsetzung: Kreuzprodukt, Inner Join. Sortierung. Existenzquantor, Mengenvergleich Gruppierung, Aggregate Cast-Operator Fortsetzung: Anfragen mit SQL Bisher: Projektion, Selektion, Duplikatbehandlung, NULL Werte Kreuzprodukt, Inner Join Mengenoperationen Sortierung Geschachtelte Anfragen Existenzquantor, Mengenvergleich

Mehr

Datenbanksysteme SS 2007

Datenbanksysteme SS 2007 Datenbanksysteme SS 2007 Frank Köster (Oliver Vornberger) Institut für Informatik Universität Osnabrück Kapitel 7a: Structured Query Language (SQL) MySQL 5.0 (enthalten in: http://www.apachefriends.org/de/xampp.html)

Mehr

Entity Relationship Modell

Entity Relationship Modell Entity Relationship Modell 2 Entity/Relationship (ER) Modell Legi Name Semester Entity = Gegenstandstyp Relationship = Beziehungstyp Schlüssel (Identifikation) Studenten hören Hörer Kurs Vorlesungen Attribut

Mehr

Datenintegrität. Kapitel 5 1

Datenintegrität. Kapitel 5 1 Datenintegrität Integitätsbedingungen Schlüssel Beziehungskardinalitäten Attributdomänen Inklusion bei Generalisierung statische Integritätsbedingungen Bedingungen an den Zustand der Datenbasis dynamische

Mehr

Datenbanksysteme noch Kapitel 7: SQL. Vorlesung vom Oliver Vornberger. Institut für Informatik Universität Osnabrück

Datenbanksysteme noch Kapitel 7: SQL. Vorlesung vom Oliver Vornberger. Institut für Informatik Universität Osnabrück Datenbanksysteme 2015 noch Kapitel 7: SQL Vorlesung vom 12.05.2015 Oliver Vornberger Institut für Informatik Universität Osnabrück SQL: Schlüsselworte select from where order by asc desc as like upper

Mehr

Diskussion: Personal (1)

Diskussion: Personal (1) Diskussion: Personal (1) ER-Diagramm: Abteilung ist beschäftigt in [0, n] [0, 1] Person Umsetzung ins Relationenmodell? Diskussion: Personal (2) Zusätzliche Regel: In jeder Abteilung (Person) muss mindestens

Mehr

Universität Augsburg, Institut für Informatik WS 2008/2009 Prof. Dr. W. Kießling 23. Nov Dr. A. Huhn, M. Endres, T. Preisinger Lösungsblatt 5

Universität Augsburg, Institut für Informatik WS 2008/2009 Prof. Dr. W. Kießling 23. Nov Dr. A. Huhn, M. Endres, T. Preisinger Lösungsblatt 5 Universität Augsburg, Institut für Informatik WS 2008/2009 Prof. Dr. W. Kießling 23. Nov. 2007 Dr. A. Huhn, M. Endres, T. Preisinger Lösungsblatt 5 Aufgabe 1: SQL-Queries Datenbanksysteme I a) Geben Sie

Mehr

Datenbanken. Datenintegrität + Datenschutz. Tobias Galliat. Sommersemester 2012

Datenbanken. Datenintegrität + Datenschutz. Tobias Galliat. Sommersemester 2012 Datenbanken Datenintegrität + Datenschutz Tobias Galliat Sommersemester 2012 Professoren PersNr Name Rang Raum 2125 Sokrates C4 226 Russel C4 232 2127 Kopernikus C3 310 2133 Popper C3 52 2134 Augustinus

Mehr

Datenintegrität. Arten von Integritätsbedingungen. Statische Integritätsbedingungen. Referentielle Integrität. Integritätsbedingungen in SQL.

Datenintegrität. Arten von Integritätsbedingungen. Statische Integritätsbedingungen. Referentielle Integrität. Integritätsbedingungen in SQL. Datenintegrität Arten von Integritätsbedingungen Statische Integritätsbedingungen Referentielle Integrität Integritätsbedingungen in SQL Trigger 1 Datenintegrität Einschränkung der möglichen Datenbankzustände

Mehr

Vorlesung Datenbanksysteme vom

Vorlesung Datenbanksysteme vom Vorlesung Datenbanksysteme vom 27.10.2008 Wiederholung: Relationale Algebra Relationale Algebra Join-Operatoren Eigenschaften der relationalen Operatoren Grundlagen des relationalen Modells Seien D 1,

Mehr

Wiederholung: Relationale Algebra

Wiederholung: Relationale Algebra Vorlesung Datenbanksysteme vom 7.10.01 Wiederholung: Relationale Algebra Relationale Algebra Join-Operatoren Eigenschaften der relationalen Operatoren Grundlagen des relationalen Modells Seien D 1, D,,

Mehr

Web Science & Technologies University of Koblenz Landau, Germany. Grundlagen der Datenbanken. SQL Teil 2. Dr. Jérôme Kunegis Wintersemester 2013/14

Web Science & Technologies University of Koblenz Landau, Germany. Grundlagen der Datenbanken. SQL Teil 2. Dr. Jérôme Kunegis Wintersemester 2013/14 Web Science & Technologies University of Koblenz Landau, Germany Grundlagen der Datenbanken SQL Teil 2 Dr. Jérôme Kunegis Wintersemester 2013/14 Bereichsanfragen und Mitgliedschaft in der Menge Anfrage:

Mehr

Kapitel 8 Dr. Jérôme Kunegis. SQL Continued. WeST Institute for Web Science & Technologies

Kapitel 8 Dr. Jérôme Kunegis. SQL Continued. WeST Institute for Web Science & Technologies Kapitel 8 Dr. Jérôme Kunegis SQL Continued WeST Institute for Web Science & Technologies Lernziele Syntax von SQL Anfragen Erweiterte Konstrukte in SQL Abfragen: Aggregation, Gruppierung, rekursive Anfragen..

Mehr

Datenbanksysteme 2009

Datenbanksysteme 2009 Datenbanksysteme 2009 Vorlesung vom 11.05.2009: Anfang von Kapitel 6: Das Relationale Modell Oliver Vornberger Institut für Informatik Universität Osnabrück Das Relationale Modell Wertebereiche (Domänen):

Mehr

Übung 3. Tutorübung zu Grundlagen: Datenbanken (Gruppen Do-T24 / Do-T31 WS 2016/2017)

Übung 3. Tutorübung zu Grundlagen: Datenbanken (Gruppen Do-T24 / Do-T31 WS 2016/2017) Übung 3 Tutorübung zu Grundlagen: Datenbanken (Gruppen Do-T24 / Do-T31 WS 2016/2017) Dennis Fischer dennis.fischer@tum.de http://home.in.tum.de/~fischerd/ Technische Universität München Fakultät für Informatik

Mehr

Datenbanksysteme SS 2007

Datenbanksysteme SS 2007 Datenbanksysteme SS 2007 Frank Köster (Oliver Vornberger) Institut für Informatik Universität Osnabrück Kapitel 6b: Das relationale Modell Das Relationale Modell (vgl. Lerneinheit 6a) Wertebereiche (Domänen):

Mehr

Datenbanksysteme 2013

Datenbanksysteme 2013 Datenbanksysteme 2013 Kapitel 8: Datenintegrität Vorlesung vom 14.05.2013 Oliver Vornberger Institut für Informatik Universität Osnabrück Datenintegrität Statische Bedingung (jeder Zustand) Dynamische

Mehr

WS 2010/11 Datenbanksysteme Fr 15:15 16:45 R 1.008. Vorlesung #5. SQL (Teil 3)

WS 2010/11 Datenbanksysteme Fr 15:15 16:45 R 1.008. Vorlesung #5. SQL (Teil 3) Vorlesung #5 SQL (Teil 3) Fahrplan Besprechung der Übungsaufgaben Rekursion Rekursion in SQL-92 Rekursion in DBMS- Dialekten (Oracle und DB2) Views (Sichten) - gespeicherte Abfragen Gewährleistung der

Mehr

Datenintegrität. Kapitel 5 1

Datenintegrität. Kapitel 5 1 Datenintegrität Integitätsbedingungen Schlüssel Beziehungskardinalitäten Attributdomänen Inklusion bei Generalisierung statische Integritätsbedingungen Bedingungen an den Zustand der Datenbasis dynamische

Mehr

Web Science & Technologies University of Koblenz Landau, Germany. Grundlagen der Datenbanken SQL. Dr. Gerd Gröner Wintersemester 2013/14

Web Science & Technologies University of Koblenz Landau, Germany. Grundlagen der Datenbanken SQL. Dr. Gerd Gröner Wintersemester 2013/14 Web Science & Technologies University of Koblenz Landau, Germany Grundlagen der Datenbanken Dr. Gerd Gröner Wintersemester 2013/14 Lernziele Kenntnisse der Grundkonzepte von Fähigkeit zur praktischen Anwendung

Mehr

Datenbankanwendung. Prof. Dr.-Ing. Sebastian Michel TU Kaiserslautern. Wintersemester 2014/15.

Datenbankanwendung. Prof. Dr.-Ing. Sebastian Michel TU Kaiserslautern. Wintersemester 2014/15. Datenbankanwendung Wintersemester 2014/15 Prof. Dr.-Ing. Sebastian Michel TU Kaiserslautern smichel@cs.uni-kl.de SQL Ausblick auf kommende Vorlesungen Weiterführende SQL Konzepte Views JDBC: Java Database

Mehr

Datenbanksysteme SS 2007

Datenbanksysteme SS 2007 Datenbanksysteme SS 2007 Frank Köster (Oliver Vornberger) Institut für Informatik Universität Osnabrück 1 Kapitel 6a: Das relationale Modell 2 Das Relationale Modell Wertebereiche (Domänen): D 1, D 2,,...,

Mehr

Datenbanksysteme noch Kapitel 7: SQL Vorlesung vom Oliver Vornberger. Institut für Informatik Universität Osnabrück

Datenbanksysteme noch Kapitel 7: SQL Vorlesung vom Oliver Vornberger. Institut für Informatik Universität Osnabrück Datenbanksysteme 2013 noch Kapitel 7: SQL Vorlesung vom 13.05.2013 Oliver Vornberger Institut für Informatik Universität Osnabrück Sprung Transititve Hülle Transitive Hülle 35.) Liste alle Voraussetzungen

Mehr

Wiederholung: Relationale Algebra

Wiederholung: Relationale Algebra Vorlesung Datenbanksysteme vom 1.11.016 Wiederholung: Relationale Algebra Relationale Algebra Join-Operatoren Eigenschaften der relationalen Operatoren Grundlagen des relationalen Modells Seien D1, D,,

Mehr

Datenintegrität. Integitätsbedingungen Schlüssel Beziehungskardinalitäten Attributdomänen Inklusion bei Generalisierung

Datenintegrität. Integitätsbedingungen Schlüssel Beziehungskardinalitäten Attributdomänen Inklusion bei Generalisierung Datenintegrität Integitätsbedingungen Schlüssel Beziehungskardinalitäten Attributdomänen Inklusion bei Generalisierung Statische vs. dynamische Integritätsbedingungen Statische Integritätsbedingungen Bedingungen

Mehr

Datenbanksysteme Vorlesung vom noch Kapitel 7: SQL. Oliver Vornberger. Institut für Informatik Universität Osnabrück

Datenbanksysteme Vorlesung vom noch Kapitel 7: SQL. Oliver Vornberger. Institut für Informatik Universität Osnabrück Datenbanksysteme 2009 Vorlesung vom 19.05.2009 noch Kapitel 7: SQL Oliver Vornberger Institut für Informatik Universität Osnabrück SQL: Self Join 15.) Liste die Namen der Assistenten, die für denselben

Mehr

Grundlagen des relationalen Modells

Grundlagen des relationalen Modells Historische Entwicklung relationaler DBMS Grundlagen des relationalen Modells Seien D 1, D 2,..., D n Domänen (~Wertebereiche) Relation: R D 1 x... x D n Bsp.: Telefonbuch string x string x integer Tupel:

Mehr

Kapitel 8: Datenintegrität

Kapitel 8: Datenintegrität Kapitel 8: Datenintegrität Datenintegrität Statische Bedingung (jeder Zustand) Dynamische Bedingung (bei Zustandsänderung) Bisher: Definition eines Schlüssels 1:N - Beziehung Angabe einer Domäne Jetzt:

Mehr

Übersicht der wichtigsten MySQL-Befehle

Übersicht der wichtigsten MySQL-Befehle Übersicht der wichtigsten MySQL-Befehle 1. Arbeiten mit Datenbanken 1.1 Datenbank anlegen Eine Datenbank kann man wie folgt erstellen. CREATE DATABASE db_namen; 1.2 Existierende Datenbanken anzeigen Mit

Mehr

Datenintegrität. Arten von Integritätsbedingungen. Statische Integritätsbedingungen. Referentielle Integrität. Integritätsbedingungen in SQL.

Datenintegrität. Arten von Integritätsbedingungen. Statische Integritätsbedingungen. Referentielle Integrität. Integritätsbedingungen in SQL. Datenintegrität Arten von Integritätsbedingungen Statische Integritätsbedingungen Referentielle Integrität Integritätsbedingungen in SQL Trigger 1 Datenintegrität Einschränkung der möglichen Datenbankzustände

Mehr

ISU 1. Ue_08/02_Datenbanken/SQL. 08 Datenbanken. Übung. SQL Einführung. Eckbert Jankowski. www.iit.tu-cottbus.de

ISU 1. Ue_08/02_Datenbanken/SQL. 08 Datenbanken. Übung. SQL Einführung. Eckbert Jankowski. www.iit.tu-cottbus.de 08 Datenbanken Übung SQL Einführung Eckbert Jankowski www.iit.tu-cottbus.de Datenmodell (Wiederholung, Zusammenfassung) Objekte und deren Eigenschaften definieren Beziehungen zwischen den Objekten erkennen/definieren

Mehr

Datenintegrität. Einschränkung der möglichen Datenbankzustände und -übergänge auf die in der Realität möglichen

Datenintegrität. Einschränkung der möglichen Datenbankzustände und -übergänge auf die in der Realität möglichen Datenintegrität Einschränkung der möglichen Datenbankzustände und -übergänge auf die in der Realität möglichen Formulierung von Integritätsbedingungen ist die wichtigste Aufgabe des DB-Administrators!

Mehr

Datenintegrität. Einschränkung der möglichen Datenbankzustände und -übergänge auf die in der Realität möglichen

Datenintegrität. Einschränkung der möglichen Datenbankzustände und -übergänge auf die in der Realität möglichen Datenintegrität Einschränkung der möglichen Datenbankzustände und -übergänge auf die in der Realität möglichen Formulierung von Integritätsbedingungen ist die wichtigste Aufgabe des DB-Administrators!

Mehr

Datenintegrität. Referentielle Integrität. Referentielle Integrität in SQL. Bisherige Integritätsbedingungen

Datenintegrität. Referentielle Integrität. Referentielle Integrität in SQL. Bisherige Integritätsbedingungen Datenintegrität eferentielle Integrität Integitätsbedingungen chlüssel Fremdschlüssel verweisen auf Tupel einer elation z.b. gelesenvon in Vorlesungen verweist auf Tupel in Professoren Beziehungskardinalitäten

Mehr

Datenbanksysteme noch Kapitel 7: SQL Vorlesung vom Oliver Vornberger. Institut für Informatik Universität Osnabrück

Datenbanksysteme noch Kapitel 7: SQL Vorlesung vom Oliver Vornberger. Institut für Informatik Universität Osnabrück Datenbanksysteme 2013 noch Kapitel 7: SQL Vorlesung vom 7.5.2013 Oliver Vornberger Institut für Informatik Universität Osnabrück Sprung Transititve Hülle SQL: avg, group by 16.) Liste die durchschnittliche

Mehr

Acknowledgments. Datenmodellierung VU , WS Das Relationale Modell: Begriffsklärung. Übersicht. Das relationale Modell

Acknowledgments. Datenmodellierung VU , WS Das Relationale Modell: Begriffsklärung. Übersicht. Das relationale Modell Das relationale Modell Das relationale Modell Acknowledgments Datenmodellierung VU 184.685, WS 2015 Das relationale Modell Sebastian Skritek Die Folien sind eine kleine Erweiterung der Folien von Katrin

Mehr

Diskussion: Personal (1)

Diskussion: Personal (1) Diskussion: Personal (1) ER-Diagramm: Abteilung ist beschäftigt in [0, n] [0, 1] Person Umsetzung ins Relationenmodell? Diskussion: Personal (2) Zusätzliche Regel: In jeder Abteilung (Person) muss mindestens

Mehr

Informatik für Ökonomen II: Datenintegrität. Prof. Dr. Carl-Christian Kanne

Informatik für Ökonomen II: Datenintegrität. Prof. Dr. Carl-Christian Kanne Informatik für Ökonomen II: Datenintegrität Prof. Dr. Carl-Christian Kanne 1 Konsistenzbedingungen DBMS soll logische Datenintegrität gewährleisten Beispiele für Integritätsbedingungen Schlüssel Beziehungskardinalitäten

Mehr

Vorlesungen. Studenten. hören. Grundzüge. Fichte Glaube und Wissen Jonas

Vorlesungen. Studenten. hören. Grundzüge. Fichte Glaube und Wissen Jonas Das relationale eato aedatenmodell Studenten hören Vorlesungen MatrNr Name MatrNr VorlNr VorlNr Titel 26120 Fichte 25403 5022 5001 Grundzüge 25403... Jonas... 26120... 5001... 5022... Glaube und Wissen...

Mehr

SQL. Ziele. Grundlagen von SQL. Beziehung zur relationalen Algebra SELECT, FROM, WHERE. Joins ORDER BY. Aggregatfunktionen. dbis.

SQL. Ziele. Grundlagen von SQL. Beziehung zur relationalen Algebra SELECT, FROM, WHERE. Joins ORDER BY. Aggregatfunktionen. dbis. SQL Lehr- und Forschungseinheit Datenbanken und Informationssysteme Ziele Grundlagen von SQL Beziehung zur relationalen Algebra SELECT, FROM, WHERE Joins ORDER BY Aggregatfunktionen Lehr- und Forschungseinheit

Mehr

Seminar 2. SQL - DML(Data Manipulation Language) und. DDL(Data Definition Language) Befehle.

Seminar 2. SQL - DML(Data Manipulation Language) und. DDL(Data Definition Language) Befehle. Seminar 2 SQL - DML(Data Manipulation Language) und DDL(Data Definition Language) Befehle. DML Befehle Aggregatfunktionen - werden auf eine Menge von Tupeln angewendet - Verdichtung einzelner Tupeln yu

Mehr

Referentielle Integrität

Referentielle Integrität Datenintegrität Integitätsbedingungen Schlüssel Beziehungskardinalitäten Attributdomänen Inklusion bei Generalisierung statische Integritätsbedingungen Bedingungen an den Zustand der Datenbasis dynamische

Mehr

ACCESS SQL ACCESS SQL

ACCESS SQL ACCESS SQL ACCESS SQL Datenbankabfragen mit der Query-Language ACCESS SQL Datenbankpraxis mit Access 34 Was ist SQL Structured Query Language Bestehend aus Datendefinitionssprache (DDL) Datenmanipulationssprache

Mehr

TU München, Fakultät für Informatik Lehrstuhl III: Datenbanksysteme Prof. Alfons Kemper, Ph.D.

TU München, Fakultät für Informatik Lehrstuhl III: Datenbanksysteme Prof. Alfons Kemper, Ph.D. TU München, Fakultät für Informatik Lehrstuhl III: Datenbanksysteme Prof. Alfons Kemper, Ph.D. Blatt Nr. 05 Übung zur Vorlesung Grundlagen: Datenbanken im WS16/17 Harald Lang, Linnea Passing (gdb@in.tum.de

Mehr

Rückblick. SQL bietet viele Möglichkeiten zur Anfrageformulierung

Rückblick. SQL bietet viele Möglichkeiten zur Anfrageformulierung Rückblick SQL bietet viele Möglichkeiten zur Anfrageformulierung mathematische Funktionen (z.b. ABS(A) und SIGN(A)) Aggregatfunktionen (z.b. MIN(A) und SUM(A)) Boole sche Operatoren (AND, OR, EXCEPT) Verknüpfungen

Mehr

Termin 12: Datenbanksysteme (2) - Einführung in SQL

Termin 12: Datenbanksysteme (2) - Einführung in SQL Termin 12: Datenbanksysteme (2) - Einführung in SQL Grundlagen der Informatik Wintersemester 2006/07 Prof. Bernhard Jung Übersicht 1. Einführung SQL 2. Datenbankanfragen mit SQL (select from where) 3.

Mehr

Historische Entwicklung relationaler DBMS. Ted Codd: A Relational Model of Data for Large Shared Data Banks, Comm. ACM, Juni 1970, S.

Historische Entwicklung relationaler DBMS. Ted Codd: A Relational Model of Data for Large Shared Data Banks, Comm. ACM, Juni 1970, S. Historische Entwicklung relationaler DBMS Ted Codd: A Relational Model of Data for Large Shared Data Banks, Comm. ACM, Juni 1970, S. 377 387 Grundlagen des relationalen Modells Seien D 1, D 2,..., D

Mehr

Abfragen (Queries, Subqueries)

Abfragen (Queries, Subqueries) Abfragen (Queries, Subqueries) Grundstruktur einer SQL-Abfrage (reine Projektion) SELECT [DISTINCT] {* Spaltenname [[AS] Aliasname ] Ausdruck} * ; Beispiele 1. Auswahl aller Spalten SELECT * ; 2. Auswahl

Mehr

MySQL-Befehle. In diesem Tutorial möchte ich eine kurze Übersicht der wichtigsten Befehle von MySQL geben.

MySQL-Befehle. In diesem Tutorial möchte ich eine kurze Übersicht der wichtigsten Befehle von MySQL geben. MySQL-Befehle 1. Einleitung In diesem Tutorial möchte ich eine kurze Übersicht der wichtigsten Befehle von MySQL geben. 2. Arbeiten mit Datenbanken 2.1 Datenbank anlegen Eine Datenbank kann man wie folgt

Mehr

Grundlagen des relationalen Modells

Grundlagen des relationalen Modells Grundlagen des relationalen Modells Seien D 1, D,, D n Domänen (Wertebereiche) Relation: R D 1 x x D n Bsp.: Telefonbuch string x string x integer Tupel: t R Bsp.: t = ( Mickey Mouse, Main Street, 4711)

Mehr

Übung 4. Tutorübung zu Grundlagen: Datenbanken (Gruppen Do-T24 / Do-T31 WS 2016/2017)

Übung 4. Tutorübung zu Grundlagen: Datenbanken (Gruppen Do-T24 / Do-T31 WS 2016/2017) Übung 4 Tutorübung zu Grundlagen: Datenbanken (Gruppen Do-T24 / Do-T31 WS 2016/2017) Dennis Fischer dennis.fischer@tum.de http://home.in.tum.de/~fischerd/ Technische Universität München Fakultät für Informatik

Mehr

Grundlagen des relationalen Modells

Grundlagen des relationalen Modells Grundlagen des relationalen Modells Seien D 1, D 2,..., D n Relation: R D 1 Domänen (Wertebereiche) x... x D n Bsp.: Telefonbuch string x string x integer Tupel: t R Bsp.: t = ( Mickey Mouse, Main Street,

Mehr

Grundlagen des relationalen Modells

Grundlagen des relationalen Modells Grundlagen des relationalen Modells Seien D 1, D,, D n Domänen (Wertebereiche) Relation: R D 1 x x D n Bsp.: Telefonbuch string x string x integer Tupel: t R Bsp.: t = ( Mickey Mouse, Main Street, 711)

Mehr

Teil 1: Deduktive Datenbanken Gerd Stumme Christoph Schmitz

Teil 1: Deduktive Datenbanken Gerd Stumme Christoph Schmitz Teil 1: Deduktive Datenbanken Gerd Stumme Christoph Schmitz Wintersemester 004/05 Deduktive Datenbanken Grundkonzepte einer deduktiven Datenbank IDB intensionale Datenbasis (hergeleitete Relationen) Regeln

Mehr

Referentielle Integrität

Referentielle Integrität Datenintegrität Integitätsbedingungen Schlüssel Beziehungskardinalitäten Attributdomänen Inklusion bei Generalisierung statische Integritätsbedingungen Bedingungen an den Zustand der Datenbasis dynamische

Mehr

SQL als Zugriffssprache

SQL als Zugriffssprache SQL als Zugriffssprache Der Select Befehl: Aufbau Select- und From-Klausel Where-Klausel Group-By- und Having-Klausel Union Join-Verbindung Order-By-Klausel Der Update-Befehl Der Delete-Befehl Der Insert-Befehl

Mehr

Datenmodellierung. VU , SS 2015 Das relationale Modell. Sebastian Skritek. Institut für Informationssysteme Technische Universität Wien

Datenmodellierung. VU , SS 2015 Das relationale Modell. Sebastian Skritek. Institut für Informationssysteme Technische Universität Wien Das relationale Modell Datenmodellierung VU 184.685, SS 2015 Das relationale Modell Sebastian Skritek Institut für Informationssysteme Technische Universität Wien Sebastian Skritek Seite 1 Das relationale

Mehr

Aufgabensammlung SQL SW4 1. Einfache Anfragen

Aufgabensammlung SQL SW4 1. Einfache Anfragen Aufgabensammlung SQL SW4 1. Einfache Anfragen Buch: Kapitel 4.6 und 4.7. Datenbank: Die folgenden Anfragen beziehen sich auf die Universitätsdatenbank des Buches. Alle Umlaute werden umschrieben (hören

Mehr

Es wird empfohlen folgendes Material anzusehen:

Es wird empfohlen folgendes Material anzusehen: Übung zur Vorlesung "Einführung in die Informatik für Hörer anderer Fachrichtungen (WZW)" IN8003, SS 2011 Prof. Dr. J. Schlichter Dr. Georg Groh, Dipl.Inform. Dipl.Geogr. Jan Herrmann, Florian Schulze

Mehr

Grundlagen des relationalen Modells

Grundlagen des relationalen Modells Grundlagen des relationalen Modells Seien D 1, D,, D n Domänen (Wertebereiche, Mengen) Eine Relation ist eine Teilmenge R D 1 x x D n Bsp.: Telefonbuch string x string x integer Ein Tupel ist jedes Element

Mehr

TU München, Fakultät für Informatik Lehrstuhl III: Datenbanksysteme Prof. Alfons Kemper, Ph.D.

TU München, Fakultät für Informatik Lehrstuhl III: Datenbanksysteme Prof. Alfons Kemper, Ph.D. TU München, Fakultät für Informatik Lehrstuhl III: Datenbanksysteme Prof. Alfons Kemper, Ph.D. Übung zur Vorlesung Einführung in die Informatik 2 für Ingenieure (MSE) Alexander van Renen (renen@in.tum.de)

Mehr

Anwendungsentwicklung Datenbanken SQL. Stefan Goebel

Anwendungsentwicklung Datenbanken SQL. Stefan Goebel Anwendungsentwicklung Datenbanken SQL Stefan Goebel SQL Structured Query Language strukturierte Abfragesprache von ANSI und ISO standardisiert deklarativ bedeutet was statt wie SQL beschreibt, welche Daten

Mehr

Grundlagen des relationalen Modells

Grundlagen des relationalen Modells Grundlagen des relationalen Modells Das relationale Modell Verfeinerung des relationalen Schemas Relationale Algebra Relationenkalkül Kapitel 3 1 Grundlagen des relationalen Modells Seien D 1, D,, D n

Mehr

Kapitel 6. Datenmalipulation (DML) d. h. insert, update, delete, select im Relationenmodell (in Oracle)

Kapitel 6. Datenmalipulation (DML) d. h. insert, update, delete, select im Relationenmodell (in Oracle) Kapitel 6 Datenmalipulation (DML) d. h. insert, update, delete, select im Relationenmodell (in Oracle) 1 Datenmanipulationssprache (DML) SQL Einfügen: Insert-Statement Ändern: Update-Statement Löschen:

Mehr

SQL. DDL (Data Definition Language) Befehle und DML(Data Manipulation Language)

SQL. DDL (Data Definition Language) Befehle und DML(Data Manipulation Language) SQL DDL (Data Definition Language) Befehle und DML(Data Manipulation Language) DML(Data Manipulation Language) SQL Abfragen Studenten MatrNr Name Vorname Email Age Gruppe 1234 Schmidt Hans schmidt@cs.ro

Mehr

Grundlagen des relationalen l Modells

Grundlagen des relationalen l Modells Grundlagen des relationalen l Modells Seien D 1, D 2,..., D n Domänen (~Wertebereiche) Relation: R D 1 x... x D n Bsp.: Telefonbuch string x string x integer Tupel: t R Bsp.: t = ( Mickey Mouse, Main Street,

Mehr

SQL. DDL (Data Definition Language) Befehle und DML(Data Manipulation Language)

SQL. DDL (Data Definition Language) Befehle und DML(Data Manipulation Language) SQL DDL (Data Definition Language) Befehle und DML(Data Manipulation Language) DML(Data Manipulation Language) SQL Abfragen Studenten MatrNr Name Vorname Email Age Gruppe 1234 Schmidt Hans schmidt@cs.ro

Mehr

insert, update, delete Definition des Datenbankschemas select, from, where Rechteverwaltung, Transaktionskontrolle

insert, update, delete Definition des Datenbankschemas select, from, where Rechteverwaltung, Transaktionskontrolle Einführung in SQL insert, update, delete Definition des Datenbankschemas select, from, where Rechteverwaltung, Transaktionskontrolle Quelle Wikipedia, 3.9.2015 SQL zur Kommunikation mit dem DBMS SQL ist

Mehr

Das relationale Modell

Das relationale Modell Das relationale Modell Grundlagen Übersetzung von ER-Schemata in relationale Schemata Relationale Algebra Relationenkalkül Domänenkalkül Grundlagen des relationalen Modells Seien D 1, D 2,..., D n Domänen

Mehr

Anfragebearbeitung 1. Vorlesung Datenbanksysteme vom

Anfragebearbeitung 1. Vorlesung Datenbanksysteme vom Vorlesung Datenbanksysteme vom 16.11.016 Anfragebearbeitung 1 Architektur eines DBMS Logische Optimierung Physische Optimierung Kostenmodelle + Tuning Architektur eines DBMS SW-Komponenten der Anfragebearbeitung

Mehr

2.5 Structured Query Language (SQL)

2.5 Structured Query Language (SQL) 2.5 Structured Query Language (SQL) Structured Query Language (SQL) geht zurück auf den in IBM Almaden (San Jose) entwickelten Prototypen System R ursprünglich: Structured English Query Language (SEQUEL)

Mehr

SQL. SQL: Structured Query Language. Früherer Name: SEQUEL. Standardisierte Anfragesprache für relationale DBMS: SQL-89, SQL-92, SQL-99

SQL. SQL: Structured Query Language. Früherer Name: SEQUEL. Standardisierte Anfragesprache für relationale DBMS: SQL-89, SQL-92, SQL-99 SQL Früherer Name: SEQUEL SQL: Structured Query Language Standardisierte Anfragesprache für relationale DBMS: SQL-89, SQL-92, SQL-99 SQL ist eine deklarative Anfragesprache Teile von SQL Vier große Teile:

Mehr

Datenbanksysteme Kapitel 7: SQL Vorlesung vom Oliver Vornberger. Institut für Informatik Universität Osnabrück

Datenbanksysteme Kapitel 7: SQL Vorlesung vom Oliver Vornberger. Institut für Informatik Universität Osnabrück Datenbanksysteme 2013 Kapitel 7: SQL Vorlesung vom 6.05.2013 Oliver Vornberger Institut für Informatik Universität Osnabrück Sprung Transititve Hülle SQL 1970 Edgar Codd: A relational model for large shared

Mehr

Datenmodellierung VU Einführung SS 2015

Datenmodellierung VU Einführung SS 2015 184.685 Datenmodellierung VU, Einführung SS 2015 184.685 Datenmodellierung VU Einführung SS 2015 Dr. Sebastian Skritek Institut für Informationssysteme Technische Universität Wien Dr. Sebastian Skritek

Mehr

SQL. DDL (Data Definition Language) Befehle und DML(Data Manipulation Language)

SQL. DDL (Data Definition Language) Befehle und DML(Data Manipulation Language) SQL DDL (Data Definition Language) Befehle und DML(Data Manipulation Language) DML(Data Manipulation Language) SQL Abfragen Studenten MatrNr Name Vorname Email Age Gruppe 1234 Schmidt Hans schmidt@cs.ro

Mehr

Daten-Definitionssprache (DDL) Bisher: Realwelt -> ERM -> Relationen-Modell -> normalisiertes Relationen-Modell. Jetzt: -> Formulierung in DDL

Daten-Definitionssprache (DDL) Bisher: Realwelt -> ERM -> Relationen-Modell -> normalisiertes Relationen-Modell. Jetzt: -> Formulierung in DDL Daten-Definitionssprache (DDL) Bisher: Realwelt -> ERM -> Relationen-Modell -> normalisiertes Relationen-Modell Jetzt: -> Formulierung in DDL Daten-Definitionssprache (DDL) DDL ist Teil von SQL (Structured

Mehr

PRG2 Folien Zicari Teil 5. Einführung in Datenbanken SS 2007

PRG2 Folien Zicari Teil 5. Einführung in Datenbanken SS 2007 PRG2 Folien Zicari Teil 5 Einführung in Datenbanken SS 2007 Prof. Dott. Ing. Roberto Zicari Johann Wolfgang Goethe-Universität Frankfurt am Main PRG2 V-1 Fachbereich Informatik und Mathematik SQL SQL =

Mehr

Dieser Foliensatz darf frei verwendet werden unter der Bedingung, dass diese Titelfolie nicht entfernt wird.

Dieser Foliensatz darf frei verwendet werden unter der Bedingung, dass diese Titelfolie nicht entfernt wird. Thomas Studer Relationale Datenbanken: Von den theoretischen Grundlagen zu Anwendungen mit PostgreSQL Springer, 2016 ISBN 978-3-662-46570-7 Dieser Foliensatz darf frei verwendet werden unter der Bedingung,

Mehr