Die Präsentation wird geladen. Bitte warten

Die Präsentation wird geladen. Bitte warten

Bauinformatik II Softwareanwendungen 1

Ähnliche Präsentationen


Präsentation zum Thema: "Bauinformatik II Softwareanwendungen 1"—  Präsentation transkript:

1 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

2 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

3 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

4 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

5 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

6 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

7 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

8 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

9 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

10 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

11 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

12 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

13 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

14 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

15 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

16 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

17 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

18 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

19 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

20 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

21 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

22 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

23 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

24 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

25 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

26 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

27 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

28 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

29 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

30 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

31 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

32 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

33 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

34 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

35 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

36 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

37 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

38 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

39 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

40 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

41 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


Herunterladen ppt "Bauinformatik II Softwareanwendungen 1"

Ähnliche Präsentationen


Google-Anzeigen