Bauinformatik II Softwareanwendungen 1

Slides:



Advertisements
Ähnliche Präsentationen
Rückblick Abbildung E/R-Modell auf Relationales Modell (Tabellenmodell) ENTITY-TYPES RELATIONSHIP-TYPES (1:N / N:M / 1:1) Generalisierungshierarchie.
Advertisements

ER-Datenmodell und Abfragen in SQL
Relationaler Datenbankentwurf (II)
Bauinformatik II Softwareanwendungen 1
Bauinformatik II Softwareanwendungen 1
Systemüberblick Beispiele: Microsoft Access Oracle Ingres Informix
Kapitel 3: Das Relationenmodell
Recap - Kapitel 3 « Das Relationenmodell »
Anfragesprachen – Dipl. Ing. Ulrich Borchert / FH Merseburg 1/7
Inner Joins.
Alternativen und Muster. Alternativen Gegeben ist eine Tabelle in der ein Attribut der Tabelle Buecher Gruppe genannt wurde. So gibt es unter anderem.
SQL als Abfragesprache
Auswertung im GTDS fixe Abläufe für Standard-Aufgaben Mamma-Auswertung
Das Relationenmodell 1.
Prof. Dr. T. Kudraß1 Relationen-Algebra. Prof. Dr. T. Kudraß2 Relationale Anfragesprachen Query Language (QL): Manipulation und Retrieval von Daten einer.
Übung Datenbanksysteme SQL-Anfragen (2)
SQL 2 Order by null Aggregatfunktionen group by Join subselect.
Einführung Dateisystem <-> Datenbanksystem
Erhard Künzel für Info 9. Klasse: digitale-schule-bayern.de © Erhard Künzel.
Abfragen – Tipps und Tricks Buch S102ff (Informatik I, Oldenbourg-Verlag) Nach einer Vorlage von Dieter Bergmann.
1 Polymorphe Operatoren Zunächst: Beschränkung auf Operatoren zum Abfragen der in Relationen enthaltenen Information. Forderung nach mathematischer Exaktheit.
Übung 1: SQL Übungen finden bei Bedarf anstelle der Vorlesungen statt
Relationale Datenbankmodelle
Datenbanken Mehr als Tabellen.
Datenbankentwicklung IV-LK
Datenbanken Mehr als Tabellen. Datenbank Abfragen mit SQL: Eine Tabelle filtern Tabellen realer Datenbanken können sehr viele Informationen speichern:
Die Grundterminologie
... Unternehmens- leitung
SQL Überblick Abfragen aus einer Tabelle
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)
SS 2004 Datenbanken 4W Mi 13:30 – 15:00 G 2.30 Vorlesung #7 SQL (Teil 2)
Vorlesung #4 SQL (Teil 1).
SS 2004 Datenbanken 4W Mi 13:30 – 15:00 G 2.30 Vorlesung #5 Relationale Anfragesprachen.
SS 2004 Datenbanken 4W Mi 13:30 – 15:00 G 2.30 Vorlesung #6 SQL (Teil 1)
WS 2013/14 Datenbanksysteme Do 17:00 – 18:30 R Vorlesung #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 #5 SQL (Teil 2)
WS 2012/13 Datenbanksysteme Fr 15:15 – 16:45 R Vorlesung #3 Das relationale Modell (Teil 2)
WS 2011/12 Datenbanksysteme Fr 15:15 – 16:45 R Vorlesung #4 SQL (Teil 1)
Datenbanksysteme für hörer anderer Fachrichtungen
Freiwillige Feuerwehr der Stadt Perg
Relationale Algebra Vortrag am © 2007 Daniel Birkholz.
WS 2011/12 Datenbanksysteme Fr 15:15 – 16:45 R Vorlesung #5 SQL (Teil 2)
1 Gruppierung, Aggregierung und Sortierung (2) Abarbeitungsmodell bei Gruppierung: Werte from- und where-Klauseln aus wie bisher (Bildung von Kreuzprodukt.
Das relationale Modell
verstehen planen bearbeiten
SQL - Structured Query Language AIFB SS (1/9) Join-Operationen in SQL-92(1/9) Syntax einer Join-Operation: join-op := CROSS JOIN | [NATURAL]
Structured Query Language
Structured Query Language
Grundlagen des Relationenmodells
Bauinformatik II Softwareanwendungen 1
1 Polymorphe Operatoren Zunächst: Beschränkung auf Operatoren zum Abfragen der in Relationen enthaltenen Information. Forderung nach mathematischer Exaktheit.
Vorlesung #5 SQL (Teil 2).
Wiederholung Der wichtigste Befehl zur Datenmanipulation lautet:
Bauinformatik II Softwareanwendungen 1
RelationentheorieObjektorientierte Datenbanken  AIFB SS Anfragen auf Sammlungen(1/29) OQL besteht aus einer Menge von Anfrageausdrücken, die.
WS 2014/15 Datenbanksysteme D0 15:15 – 16:45 R Vorlesung #6 SQL (Teil 3)
Bauinformatik II Softwareanwendungen 1
1 Syntaktische Grundform selectA 1, A 2, …, A n fromR 1, R 2, …, R m wherebedingung w ;
Datenbanken abfragen mit SQL
BHAK/BHAS 1 Salzburg KIDM 2ASBS Schuljahr 2004/05
IS: Datenbanken, © Till Hänisch 2000 Relationenalgebra Die mathematische Grundlage von relationalen Datenbanken.
Vorlesung #4 Relationales Kalkül und SQL (Teil 1)
Vorlesung #5 SQL (Teil 2).
Vorlesung #6 SQL (Teil 3).
(Structured Query Language)
 Präsentation transkript:

Bauinformatik II Softwareanwendungen 1 Relationale Datenbanken für Bauingenieurprobleme 5. Semester 3. Vorlesung: Abfragen Verbunde in SQL Prof. Dr.-Ing. R. J. Scherer Nürnberger Str. 31a 2. OG, Raum 204 TU Dresden - Institut für Baumechanik und Bauinformatik - Computeranwendung im Bauwesen

Bauinformatik II, Softwareanwendunge 1; 1. Vorlesung Mengenoperationen Produkt .a .b .c .x .y . Kartesisches Vereinigung Differenz Restriktion Projektion .a1 .a2 .a3 .b1 .b2 .b3 .c1 .c2 .c3 (natürliche) Verbindung Schnitt .a .b .c .x .y .z . Division Bauinformatik II, Softwareanwendunge 1; 1. Vorlesung

Bauinformatik II, Softwareanwendunge 1; 1. Vorlesung Mengenoperationen Vereinigung: R1 UNION R2 Aus den zwei Relationen R1 und R2 wird eine neue Relation erzeugt, die alle Tupel (Datensätze) enthält, die in wenigstens einer der beiden Relationen vorkommen. Differenz: R1 MINUS R2 Aus den beiden Relationen R1 und R2 wird eine neue Relation erzeugt, die nur dieTupel enthält, die in R1, aber nicht in R2 vorkommen. Restriktion: R WHERE Bedingung Aus der Relation R wird durch diesen unären Operator eine neue Relation erzeugt, die alle Tupel aus R enthält, die der angegebenen Bedingung genügen. Projektion: R [ Attributauswahl ] Aus der Relation R wird durch diesen unären Operator eine neue Relation erzeugt, die aus allen Tupeln von R besteht, eingeschränkt auf die angegebene Auswahl von Attributen. Bauinformatik II, Softwareanwendunge 1; 1. Vorlesung

Bauinformatik II, Softwareanwendunge 1; 1. Vorlesung Mengenoperationen Kartesisches Produkt: R1 TIMES R2 Aus den beiden Relationen R1 und R2 wird eine neue Relation erzeugt, die aus allen möglichen Kombinationen der Tupel der beiden Relationen bestehen. Schnitt: R1 INTERSECT R2 Aus den beiden Relationen R1 und R2 wird eine neue Relation erzeugt, die nur dieTupel enthält, die in beiden Relationen vorkommen. Natürliche Verbindung: R1 JOIN R2 Aus den beiden Relationen R1 und R2 wird eine neue Relation erzeugt, die aus Allen möglichen Kombinationen zwischen den Tupeln der beiden Relationen Besteht, wobei gemeinsame Attribute beider Relationen als Verknüpfung dienen. Division: R1 DIVIDEBY R2 Vorausgesetzt, dass die Relation R1 mindestens alle Attribute Att von R2 enthält, wird aus den beiden Relationen R1 und R2 eine neue Relation erzeugt, die alle Attribute von R1 außer den Attributen Att enthält, und die aus allen Tupeln aus R1 besteht, deren Werte in den Attributen Att mit den Werten aus R2 übereinstimmen. Bauinformatik II, Softwareanwendunge 1; 1. Vorlesung

Bauinformatik II, Softwareanwendunge 1; 1. Vorlesung SQL – SELECT Ein kompletter SELECT-Befehl kann aus beliebig vielen Hauptteilen, die über UNION, EXCEPT oder INTERSECT miteinander verknüpft sind, bestehen. SELECT-Hauptteil: [ { UNION | EXCEPT| INTERSECT } [ ALL ] [ { UNION | EXCEPT | INTERESECT } [ ALL ] . . . ] ] [ ORDER BY Ordnungsliste ] Die Punkte deuten an, dass die Aufzählung beliebig fortgesetzt werden kann. Bei mehr als zwei Verknüpfungen sollten jedoch Klammern gesetzt werden, um die Eindeutigkeit der Reihenfolge zu garantieren. Bauinformatik II, Softwareanwendunge 1; 1. Vorlesung

SQL: SELECT - Projektion Auflisten (nur) bestimmter Spalten einer Tabelle: SELECT Name , Vorname FROM Mitarbeiter ; Es werden nur die Spalten Name und Vorname von der Tabelle Mitarbeiter in der Reihenfolge: Name, Vorname aufgelistet. Auflisten (nur) bestimmter Spalten in abweichender Reihenfolge: SELECT Vorname , Name, PersNr FROM Mitarbeiter ; Es werden nur die Spalten Vorname, Name und PersNr in dieser von den gespeicherten Daten abweichenden Reihenfolge aufgelistet. Bauinformatik II, Softwareanwendunge 1; 1. Vorlesung

SQL: SELECT - Restriktion Auflisten (nur) bestimmter Datensätze in Abhängigkeit von einer Bedingung: SELECT * FROM Mitarbeiter WHERE LOHN <= 2500 ; Es werden alle Datensätze aufgelistet, bei denen die Spalte Lohn <= 2500 ist. Bauinformatik II, Softwareanwendunge 1; 1. Vorlesung

SQL: SELECT - BEISPIEL Restriktion UND Projektion Auflisten bestimmter Attriubte aus bestimmten Datensätzen in Abhängigkeit von einer Bedingung: SELECT Name, Vorname, PrsNr FROM Mitarbeiter WHERE LOHN <= 2500 ; Es werden alle Datensätze mit den Spalten Vorname , Name und PrsNr in dieser von den gespeicherten Daten abweichenden Reihenfolge aufgelistet, bei denen die Spalte Lohn <= 2500 ist. Bauinformatik II, Softwareanwendunge 1; 1. Vorlesung

SQL: SELECT - Relationen für WHERE-Klausel Operatoren: Intervalloperator Enthaltenoperator Auswahloperatoren Ähnlichkeitsoperator Existenzoperator Eindeutigkeitsoperator Nulloperator [ NOT ] BETWEEN . . . AND [ NOT ] IN ALL, ANY, SOME [ NOT ] LIKE EXISTS UNIQUE IS [ NOT ] NULL Bauinformatik II, Softwareanwendunge 1; 1. Vorlesung

SQL: SELECT - Relationen für WHERE-Klausel Auswahloperatoren ALL, ANY, SOME ALL testet, ob der Vergleichsoperator für alle Zeilen der Tabelle zutrifft Ermittle alle Mitarbeiter, die mehr verdienen als alle Mitarbeiter der Abteilung 5 SELECT Name, Vorname FROM Mitarbeiter WHERE Lohn > ALL (SELECT Lohn FROM Mitarbeiter WHERE Abteilung=5) ; ANY (oder SOME) testet, ob der Vergleichsoperator für (mindestens) eine Zeile der Tabelle zutrifft. Ermittle alle Mitarbeiter, die mehr verdienen als irgend ein Mitarbeiter der Abteilung 5 SELECT Name, Vorname FROM Mitarbeiter WHERE Lohn > ANY (SELECT Lohn FROM Mitarbeiter WHERE Abteilung=5) ; Bauinformatik II, Softwareanwendunge 1; 1. Vorlesung

SQL: SELECT - Relationen für WHERE-Klausel Existenzoperator EXISTS EXISTS testet, ob eine Tabelle nicht leer ist. NOT EXISTS testet, ob eine Tabelle leer ist. Ermittle die Namen der Bauleiter, die (zur Zeit) keine Baustelle haben. SELECT Name, Vorname FROM Bauleiter WHERE NOT EXISTS (SELECT Name,Vorname FROM Baustelle,Bauleiter WHERE Bauleiter.PersNr=Baustelle.BaulNr) Bauinformatik II, Softwareanwendunge 1; 1. Vorlesung

SQL: SELECT - Relationen für WHERE-Klausel Nulloperator IS [NOT] NULL Ermittle die Baustellen, denen kein Bauleiter zugewiesen ist SELECT * FROM Baustellen WHERE BaulNr IS NULL) Bauinformatik II, Softwareanwendunge 1; 1. Vorlesung

SQL: SELECT - Vereinigung Vereinigung aller Tupel der Relation R mit allen Tupeln der Relation S zu einer Relation SELECT attr1 , attr2 FROM Relm UNION SELECT attr1, attr2 FROM Relt ; Voraussetzung: Beide Relationen haben das gleiche Relationenschema (gleiche Attribute und gleiche Attributtypen) Doppelte Zeilen werden automatisch unterdrückt. Mit UNION ALL werden sie angezeigt. Bauinformatik II, Softwareanwendunge 1; 1. Vorlesung

Bauinformatik II, Softwareanwendunge 1; 1. Vorlesung Mitarbeiter Kunden PersNr Name Vorname Taetigkeit 12363 Ahrend Gerd Maurer 13332 Bayer Andreas Kranführer 26661 Berger Sven 26663 Czerny Petra Baggerfahrer 35558 Müller Felix Bauleiter 36663 Paul Gerüstbauer 36886 Bert KdNr Kd_Name Kd_Vorname Kd_Wohnort 1 Meier Kurt Radeberg 2 Müller Paul Kamenz 3 Ebert Karl Bautzen 4 Huber Hans München SELECT Name , Vorname FROM Mitarbeiter UNION SELECT Kd_Name, Kd_Vorname FROM Kunden ; Name Vorname Ahrend Gerd Bayer Andreas Berger Bert Sven Czerny Petra Ebert Karl Huber Hans Meier Kurt Müller Felix Paul Bauinformatik II, Softwareanwendunge 1; 1. Vorlesung

Bauinformatik II, Softwareanwendunge 1; 1. Vorlesung SQL: SELECT - SCHNITT Schnitt Ermittlung aller Tupel, die sowohl in Relation R als auch in Relation S enthalten sind. SELECT * FROM Relm INTERSECT SELECT * FROM Relt ; Bauinformatik II, Softwareanwendunge 1; 1. Vorlesung

Bauinformatik II, Softwareanwendunge 1; 1. Vorlesung Mitarbeiter Kunden PersNr Name Vorname Taetigkeit 12363 Ahrend Gerd Maurer 13332 Bayer Andreas Kranführer 26661 Berger Sven 26663 Czerny Petra Baggerfahrer 35558 Müller Felix Bauleiter 36663 Paul Gerüstbauer 36886 Bert KdNr Kd_Name Kd_Vorname Kd_Wohnort 1 Meier Kurt Radeberg 2 Müller Paul Kamenz 3 Ebert Karl Bautzen 4 Huber Hans München SELECT Name , Vorname FROM Mitarbeiter INTERSECT SELECT Kd_Name, Kd_Vorname FROM Kunden ; Name Vorname Müller Paul Bauinformatik II, Softwareanwendunge 1; 1. Vorlesung

SQL: SELECT - DIFFERENZ Entfernen aller Tupel aus Relation R, die auch in Relation S enthalten sind. SELECT * FROM Relm MINUS SELECT * FROM Relt Bauinformatik II, Softwareanwendunge 1; 1. Vorlesung

Bauinformatik II, Softwareanwendunge 1; 1. Vorlesung Mitarbeiter Kunden PersNr Name Vorname Taetigkeit 12363 Ahrend Gerd Maurer 13332 Bayer Andreas Kranführer 26661 Berger Sven 26663 Czerny Petra Baggerfahrer 35558 Müller Felix Bauleiter 36663 Paul Gerüstbauer 36886 Bert KdNr Kd_Name Kd_Vorname Kd_Wohnort 1 Meier Kurt Radeberg 2 Müller Paul Kamenz 3 Ebert Karl Bautzen 4 Huber Hans München SELECT Name,Vorname FROM Mitarbeiter MINUS SELECT Kd_Name, Kd_Vorname FROM Kunden Name Vorname Ahrend Gerd Bayer Andreas Berger Bert Sven Czerny Petra Müller Felix Paul Bauinformatik II, Softwareanwendunge 1; 1. Vorlesung

SQL: SELECT - Kartesisches Produkt Erzeugen aller Kombinationen der Tupel aus Relm und Relt SELECT * FROM Relm CROSS JOIN Relt SELECT * FROM Relm, Relt ; Es wird das Kreuzprodukt aller Spalten der beiden Tabellen ausgegeben, d. h. alle möglichen Kombinationen aller Spalten der 1. Tabelle mit allen Spalten der 2. Tabelle. Bauinformatik II, Softwareanwendunge 1; 1. Vorlesung

Bauinformatik II, Softwareanwendunge 1; 1. Vorlesung C D 1 2 3 4 5 6 7 8 9 E F G 1 2 3 7 8 9 SELECT * FROM R CROSS JOIN S R x S A B C D E F G 1 2 3 4 5 6 7 8 9 Bauinformatik II, Softwareanwendunge 1; 1. Vorlesung

SQL: SELECT - Innerer Verbund / Gleichverbund Verbindet Tupel aus zwei Relationen, wenn der Wert zweier Attribute identisch ist.  SELECT * FROM Relm INNER JOIN Relt ON Gleichverbundbedingung Der INNER JOIN entspricht der Bildung des kartesischen Produkts und anschließender Selektion mit der Bedingung, dass der Wert eines gewählten Attributes der Relation Relm gleich dem Wert eines gewählten Attributes der Relation Relt ist. Bauinformatik II, Softwareanwendunge 1; 1. Vorlesung

Bauinformatik II, Softwareanwendunge 1; 1. Vorlesung C D 1 2 3 4 5 6 7 8 9 E F G 1 2 3 7 8 9 SELECT * FROM R INNER JOIN S ON R.A = S.E  A B C D E F G 1 2 3 4 7 8 9 Bauinformatik II, Softwareanwendunge 1; 1. Vorlesung

SQL: SELECT - NATÜRLICHER VERBUND Verknüpft Tabellen über die Gleichheit aller gleichlautenden Spalten.  SELECT Relm.*, Relt.*  FROM Relm NATURAL JOIN Relt Attribute mit gleichen Attributnamen sind im Ergebnis nur einmal enthalten. Haben die Relationen keine gleichlautenden Attributnamen, wird der Natural Join zum Cross Join. Gibt es nur ein gleichlautendes Attribut, so ist der Natural Join ein Inner Join mit anschließender Projektion, bei der das gleichnamige Attribut ein mal ausgeblendet wird. Bauinformatik II, Softwareanwendunge 1; 1. Vorlesung

Bauinformatik II, Softwareanwendunge 1; 1. Vorlesung C D 1 2 3 4 5 6 7 8 9 C D G 1 2 3 7 8 9 SELECT R.*, S.*  FROM R NATURAL JOIN S  A B C D G 2 7 8 9 3 4 1 Bauinformatik II, Softwareanwendunge 1; 1. Vorlesung

Bauinformatik II, Softwareanwendunge 1; 1. Vorlesung SQL: SELECT - LEFT JOIN Mit einem Left Outer Join wird eine sogenannte linke Inklusionsverknüpfung erstellt    NULL SELECT * FROM Relm LEFT JOIN Relt ON Relm.attrx = Relt.attry Linke Inklusionsverknüpfungen schließen alle Datensätze aus der ersten (linken) Tabelle ein, auch wenn keine entsprechenden Werte in der zweiten (rechten) Tabelle existieren. Bauinformatik II, Softwareanwendunge 1; 1. Vorlesung

Bauinformatik II, Softwareanwendunge 1; 1. Vorlesung C D 1 2 3 4 5 6 7 8 9 E F G 1 2 3 7 8 9 SELECT * FROM R LEFT JOIN S ON R.A = S.E A B C D E F G 1 2 3 4 5 6 7 8 9 Bauinformatik II, Softwareanwendunge 1; 1. Vorlesung

SQL: SELECT - RIGHT JOIN Mit einem Right Outer Join wird eine sogenannte rechte Inklusionsverknüpfung erstellt   NULL SELECT * FROM Relm RIGHT JOIN Relt ON Relm.attrx = Relt.attry Rechte Inklusionsverknüpfungen schließen alle Datensätze aus der zweiten (rechten) Tabelle ein, auch wenn keine entsprechenden Werte in der ersten (linken) Tabelle existieren. Bauinformatik II, Softwareanwendunge 1; 1. Vorlesung

Bauinformatik II, Softwareanwendunge 1; 1. Vorlesung C D 1 2 3 4 5 6 7 8 9 E F G 1 2 3 7 8 9 SELECT * FROM R RIGHT JOIN S ON R.A = S.E A B C D E F G 1 2 3 4 7 8 9 Bauinformatik II, Softwareanwendunge 1; 1. Vorlesung

Bauinformatik II, Softwareanwendunge 1; 1. Vorlesung SQL: SELECT - FULL JOIN Kombination von Left Outer Join und Right Outer Join.    SELECT * FROM Relm FULL JOIN Relt ON Relm.attrx = Relt.attry Beidseitige Inklusionsverknüpfung enthält die Tupel aus zwei Relationen, bei denen jeweils ein Attribut dieselben Werte enthält alle Tupel aus der ersten (linken) und der zweiten (rechten) Relation, die keinen Partner in der jeweils anderen Relation haben. Bauinformatik II, Softwareanwendunge 1; 1. Vorlesung

Bauinformatik II, Softwareanwendunge 1; 1. Vorlesung C D 1 2 3 4 5 6 7 8 9 E F G 1 2 3 7 8 9  SELECT * FROM R FULL JOIN S ON  (R.A = S.E) A B C D E F G 1 2 3 4 5 6 7 8 9 Bauinformatik II, Softwareanwendunge 1; 1. Vorlesung

SQL: SELECT - UNION JOIN Es werden die Tupel beider Relationen aufgenommen. Sie werden aber nicht über eine Bedingung verknüpft.  SELECT * FROM Relm UNION JOIN Relt Bauinformatik II, Softwareanwendunge 1; 1. Vorlesung

Bauinformatik II, Softwareanwendunge 1; 1. Vorlesung C D 1 2 3 4 5 6 7 8 9 E F G 1 2 3 7 8 9 SELECT * FROM R UNION JOIN S  A B C D E F G 1 2 3 4 5 6 7 8 9 Bauinformatik II, Softwareanwendunge 1; 1. Vorlesung

SQL: SELECT - THETA JOIN Der Theta Join ist die Verallgemeinerung des Inner Join  SELECT * FROM Relm INNER JOIN Relt ON (Theta-)Verbundbedingung Während beim Inner Join die Gleichheit des Inhalts zweier Attribute verglichen wird, wird beim Theta Join der Inhalt der Attribute i und j mit einer beliebigen Formel Theta(i,j) verglichen Bauinformatik II, Softwareanwendunge 1; 1. Vorlesung

Bauinformatik II, Softwareanwendunge 1; 1. Vorlesung C D 1 2 3 4 5 6 7 8 9 E F G 1 2 3 7 8 9 SELECT * FROM R INNER JOIN S ON R.A <= S.E  A B C D E F G 1 2 3 4 7 8 9 5 6 Bauinformatik II, Softwareanwendunge 1; 1. Vorlesung

Bauinformatik II, Softwareanwendunge 1; 1. Vorlesung SQL: SELECT - SELF JOIN Der Self-Join ist ein beliebiger Join, bei dem ein Attribut mit einem Attribut derselben Relation verbunden wird (Rekursion, vgl. 5. Vorlesung) SELECT R1.*, R2.* FROM R AS R1 INNER JOIN R AS R2 ON R1.A = R2.D Um zweimal dieselbe Tabelle benutzen zu können, bekommt sie zwei verschiedene Alias-Namen Bauinformatik II, Softwareanwendunge 1; 1. Vorlesung

Bauinformatik II, Softwareanwendunge 1; 1. Vorlesung C D 1 2 3 4 5 6 7 8 9 R1 R2 A B C D 1 2 3 4 5 6 7 8 9 A B C D 1 2 3 4 5 6 7 8 9 SELECT R1.*, R2.* FROM R AS R1 INNER JOIN R AS R2 ON R1.A = R2.D R1.A R1.B R1.C R1.D R2.A R2.B R2.C R2.D 4 5 6 7 1 2 3 8 9 Bauinformatik II, Softwareanwendunge 1; 1. Vorlesung

SQL: SELECT - (RELATIONALE) DIVISION Mit der Division filtert man alle Teilrelationen einer Relation aus, die zu allen Tupeln einer zweiten Relation in Beziehung stehen. SELECT * FROM T DIVIDEBY S Das Konzept der Division ist eng verknüpft mit dem Kartesischen Produk T = R x S zweier Relationen R und S, so daß T/S (T geteilt durch S) die Relation R ergibt. Hat T die Anzahl t Spalten und S die Anzahl s Spalten, so hat T/S die Anzahl t - s Spalten. Bauinformatik II, Softwareanwendunge 1; 1. Vorlesung

Bauinformatik II, Softwareanwendunge 1; 1. Vorlesung C D E F G 1 2 3 4 5 6 7 8 9 S E F G 1 2 3 7 8 9 SELECT * FROM T DIVIDEBY S R A B C D 1 2 3 4 5 6 7 8 9 Bauinformatik II, Softwareanwendunge 1; 1. Vorlesung

SQL – FREMDSCHLÜSSELBESCHRÄNKUNGEN Fremdschlüsselbeschränkungen regeln die Maßnahmen bei Veränderungen in der "Elterntabelle", auf die durch Fremdschlüssel aus der "Kindtabelle" verwiesen wurde FOREIGN KEY (Spaltenname1) REFERENCES tbl_name (Spaltenname2, ...) [ON DELETE {RESTRICT | CASCADE | SET NULL | NO ACTION}] [ON UPDATE {RESTRICT | CASCADE | SET NULL | NO ACTION}] Die über einen Fremdschlüssel aufgebaute referenzielle Integrität stellt sicher, dass in der Fremdschlüsseltabelle kein Fremdschlüssel existieren kann, der nicht auch in der referenzierten Tabelle als Wert des entsprechenden Primärschlüssels vorhanden ist. Bauinformatik II, Softwareanwendunge 1; 1. Vorlesung

SQL – FREMDSCHLÜSSELBESCHRÄNKUNGEN Wenn der Benutzer versucht, in der Elterntabelle eine Zeile zu ändern oder zu löschen, zu der in der Kindtabelle eine oder mehr passende Zeilen vorhanden sind, bieten sich folgende Möglichkeiten: CASCADE: Bei Löschung/Änderung einer Zeile der Elterntabelle werden automatisch die zugehörigen Zeilen der Kindtabelle auch gelöscht oder geändert. Es gibt sowohl ON DELETE CASCADE als auch ON UPDATE CASCADE. Zwischen zwei Tabellen sollten Sie bitte nicht mehrere ON UPDATE CASCADE-Klauseln definieren, die auf derselben Spalte der Eltern- oder Kindtabelle arbeiten. SET NULL: Bei Löschung/Änderung einer Zeile der Elterntabelle werden automatisch die zugehörigen Fremdschlüsselspalten der Kindtabelle auf NULL gesetzt. Das gilt nur, wenn die Fremdschlüsselspalten nicht als NOT NULL definiert sind. Sowohl ON DELETE SET NULL als auch ON UPDATE SET NULL wird unterstützt. Bauinformatik II, Softwareanwendunge 1; 1. Vorlesung

SQL – FREMDSCHLÜSSELBESCHRÄNKUNGEN NO ACTION: Im Standard-SQL bedeutet NO ACTION tatsächlich keine Aktion in dem Sinne, dass jeder Versuch, einen Primärschlüssel zu löschen oder zu ändern, unterbunden wird, wenn es dazu einen Fremschlüsselwert in der referenzierten Tabelle gibt. Die Lösch- oder Änderungsoperation auf der Elterntabelle werden zurückgewiesen. RESTRICT weist die Lösch- oder Änderungsoperation auf der Elterntabelle zurück. NO ACTION und RESTRICT sind dasselbe wie ein Auslassen der ON DELETE- oder ON UPDATE-Klausel. (Manche Datenbanksysteme kennen verzögerte Prüfungen (deferred checks), zu denen auch NO ACTION gehört. Da in MySQL Fremdschlüssel-Constraints jedoch sofort geprüft werden, sind NO ACTION und RESTRICT hier dasselbe.) Bauinformatik II, Softwareanwendunge 1; 1. Vorlesung