Die Präsentation wird geladen. Bitte warten

Die Präsentation wird geladen. Bitte warten

Bauinformatik II Softwareanwendungen 1 5. Semester 3. Vorlesung: Abfragen Verbunde in SQL Prof. Dr.-Ing. R. J. Scherer Nürnberger Str. 31a 2. OG, Raum.

Ähnliche Präsentationen


Präsentation zum Thema: "Bauinformatik II Softwareanwendungen 1 5. Semester 3. Vorlesung: Abfragen Verbunde in SQL Prof. Dr.-Ing. R. J. Scherer Nürnberger Str. 31a 2. OG, Raum."—  Präsentation transkript:

1 Bauinformatik II Softwareanwendungen 1 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 Relationale Datenbanken für Bauingenieurprobleme

2 TU Dresden - Institut für Baumechanik und Bauinformatik - Computeranwendung im Bauwesen Folie-Nr.: 2Bauinformatik II, Softwareanwendunge 1; 1. Vorlesung Mengenoperationen Vereinigung Produkt.a.b.c.a.b.c.x.y..x.y..a.a.b.b.c.c.a.a.b.b.c.c.x.y.x.y.x.y.x.y.x.y.x.y Kartesisches Differenz Restriktion Projektion. a1. a2. a3. b1. b2. b1. b2. b3. c1. c2. c3. a1. a2. a3. b1. b2. c1. c2 (natürliche) Verbindung.a.a.a.b.c.a.a.a.b.c.x.y.z.x.y.x.y.z.x.y.a.a.x.y...x.y.. DivisionSchnitt

3 TU Dresden - Institut für Baumechanik und Bauinformatik - Computeranwendung im Bauwesen Folie-Nr.: 3Bauinformatik 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. 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. 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.

4 TU Dresden - Institut für Baumechanik und Bauinformatik - Computeranwendung im Bauwesen Folie-Nr.: 4Bauinformatik 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.

5 TU Dresden - Institut für Baumechanik und Bauinformatik - Computeranwendung im Bauwesen Folie-Nr.: 5Bauinformatik II, Softwareanwendunge 1; 1. Vorlesung SQL – SELECT SELECT-Hauptteil: [ { UNION | EXCEPT| INTERSECT } [ ALL ] SELECT-Hauptteil: [ { UNION | EXCEPT | INTERESECT } [ ALL ]... ] ] [ ORDER BY Ordnungsliste ] Ein kompletter SELECT-Befehl kann aus beliebig vielen Hauptteilen, die über UNION, EXCEPT oder INTERSECT miteinander verknüpft sind, bestehen. 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.

6 TU Dresden - Institut für Baumechanik und Bauinformatik - Computeranwendung im Bauwesen Folie-Nr.: 6Bauinformatik II, Softwareanwendunge 1; 1. Vorlesung SQL: SELECT - Projektion SELECT Vorname, Name, PersNr FROM Mitarbeiter ; Es werden nur die Spalten Vorname, Name und PersNr in dieser von den gespeicherten Daten abweichenden Reihenfolge aufgelistet. Auflisten (nur) bestimmter Spalten in abweichender Reihenfolge: 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 einer Tabelle: Projektion

7 TU Dresden - Institut für Baumechanik und Bauinformatik - Computeranwendung im Bauwesen Folie-Nr.: 7Bauinformatik II, Softwareanwendunge 1; 1. Vorlesung SQL: SELECT - Restriktion SELECT * FROM Mitarbeiter WHERE LOHN <= 2500 ; Auflisten (nur) bestimmter Datensätze in Abhängigkeit von einer Bedingung: Es werden alle Datensätze aufgelistet, bei denen die Spalte Lohn <= 2500 ist. Restriktion

8 TU Dresden - Institut für Baumechanik und Bauinformatik - Computeranwendung im Bauwesen Folie-Nr.: 8Bauinformatik II, Softwareanwendunge 1; 1. Vorlesung SQL: SELECT - BEISPIEL Restriktion UND Projektion 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. Auflisten bestimmter Attriubte aus bestimmten Datensätzen in Abhängigkeit von einer Bedingung: SELECT Name, Vorname, PrsNr FROM Mitarbeiter WHERE LOHN <= 2500 ;

9 TU Dresden - Institut für Baumechanik und Bauinformatik - Computeranwendung im Bauwesen Folie-Nr.: 9Bauinformatik 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

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

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

12 TU Dresden - Institut für Baumechanik und Bauinformatik - Computeranwendung im Bauwesen Folie-Nr.: 12Bauinformatik II, Softwareanwendunge 1; 1. Vorlesung SQL: SELECT - Relationen für WHERE-Klausel Nulloperator IS [NOT] NULL SELECT * FROM Baustellen WHERE BaulNr IS NULL) Ermittle die Baustellen, denen kein Bauleiter zugewiesen ist

13 TU Dresden - Institut für Baumechanik und Bauinformatik - Computeranwendung im Bauwesen Folie-Nr.: 13Bauinformatik II, Softwareanwendunge 1; 1. Vorlesung SQL: SELECT - Vereinigung SELECT attr1, attr2 FROM Rel m UNION SELECT attr1, attr2 FROM Rel t ; Voraussetzung: Beide Relationen haben das gleiche Relationenschema (gleiche Attribute und gleiche Attributtypen) Doppelte Zeilen werden automatisch unterdrückt. Mit UNION ALL werden sie angezeigt. Vereinigung aller Tupel der Relation R mit allen Tupeln der Relation S zu einer Relation Vereinigung

14 TU Dresden - Institut für Baumechanik und Bauinformatik - Computeranwendung im Bauwesen Folie-Nr.: 14Bauinformatik II, Softwareanwendunge 1; 1. Vorlesung Mitarbeiter PersNrNameVornameTaetigkeit 12363AhrendGerdMaurer 13332BayerAndreasKranführer 26661BergerSvenKranführer 26663CzernyPetraBaggerfahrer 35558MüllerFelixBauleiter 36663MüllerPaulGerüstbauer 36886BergerBertBaggerfahrer Kunden KdNrKd_NameKd_VornameKd_Wohnort 1MeierKurtRadeberg 2MüllerPaulKamenz 3EbertKarlBautzen 4HuberHansMünchen SELECT Name, Vorname FROM Mitarbeiter UNION SELECT Kd_Name, Kd_Vorname FROM Kunden ; NameVorname AhrendGerd BayerAndreas BergerBert BergerSven CzernyPetra EbertKarl HuberHans MeierKurt MüllerFelix MüllerPaul

15 TU Dresden - Institut für Baumechanik und Bauinformatik - Computeranwendung im Bauwesen Folie-Nr.: 15Bauinformatik II, Softwareanwendunge 1; 1. Vorlesung SQL: SELECT - SCHNITT SELECT * FROM Rel m INTERSECT SELECT * FROM Rel t ; Ermittlung aller Tupel, die sowohl in Relation R als auch in Relation S enthalten sind. Schnitt

16 TU Dresden - Institut für Baumechanik und Bauinformatik - Computeranwendung im Bauwesen Folie-Nr.: 16Bauinformatik II, Softwareanwendunge 1; 1. Vorlesung Mitarbeiter PersNrNameVornameTaetigkeit 12363AhrendGerdMaurer 13332BayerAndreasKranführer 26661BergerSvenKranführer 26663CzernyPetraBaggerfahrer 35558MüllerFelixBauleiter 36663MüllerPaulGerüstbauer 36886BergerBertBaggerfahrer Kunden KdNrKd_NameKd_VornameKd_Wohnort 1MeierKurtRadeberg 2MüllerPaulKamenz 3EbertKarlBautzen 4HuberHansMünchen SELECT Name, Vorname FROM Mitarbeiter INTERSECT SELECT Kd_Name, Kd_Vorname FROM Kunden ; NameVorname MüllerPaul

17 TU Dresden - Institut für Baumechanik und Bauinformatik - Computeranwendung im Bauwesen Folie-Nr.: 17Bauinformatik II, Softwareanwendunge 1; 1. Vorlesung SQL: SELECT - DIFFERENZ SELECT * FROM Rel m MINUS SELECT * FROM Rel t Entfernen aller Tupel aus Relation R, die auch in Relation S enthalten sind. Differenz

18 TU Dresden - Institut für Baumechanik und Bauinformatik - Computeranwendung im Bauwesen Folie-Nr.: 18Bauinformatik II, Softwareanwendunge 1; 1. Vorlesung Mitarbeiter PersNrNameVornameTaetigkeit 12363AhrendGerdMaurer 13332BayerAndreasKranführer 26661BergerSvenKranführer 26663CzernyPetraBaggerfahrer 35558MüllerFelixBauleiter 36663MüllerPaulGerüstbauer 36886BergerBertBaggerfahrer Kunden KdNrKd_NameKd_VornameKd_Wohnort 1MeierKurtRadeberg 2MüllerPaulKamenz 3EbertKarlBautzen 4HuberHansMünchen NameVorname AhrendGerd BayerAndreas BergerBert BergerSven CzernyPetra MüllerFelix MüllerPaul SELECT Name,Vorname FROM Mitarbeiter MINUS SELECT Kd_Name, Kd_Vorname FROM Kunden

19 TU Dresden - Institut für Baumechanik und Bauinformatik - Computeranwendung im Bauwesen Folie-Nr.: 19Bauinformatik II, Softwareanwendunge 1; 1. Vorlesung SQL: SELECT - Kartesisches Produkt SELECT * FROM Rel m CROSS JOIN Rel t Erzeugen aller Kombinationen der Tupel aus Rel m und Rel t 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. SELECT * FROM Rel m, Rel t ;

20 TU Dresden - Institut für Baumechanik und Bauinformatik - Computeranwendung im Bauwesen Folie-Nr.: 20Bauinformatik II, Softwareanwendunge 1; 1. Vorlesung R ABCD S R x S EFG ABCDEFG SELECT * FROM R CROSS JOIN S

21 TU Dresden - Institut für Baumechanik und Bauinformatik - Computeranwendung im Bauwesen Folie-Nr.: 21Bauinformatik II, Softwareanwendunge 1; 1. Vorlesung SQL: SELECT - Innerer Verbund / Gleichverbund SELECT * FROM Rel m INNER JOIN Rel t ON Gleichverbundbedingung Verbindet Tupel aus zwei Relationen, wenn der Wert zweier Attribute identisch ist. 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 Rel m gleich dem Wert eines gewählten Attributes der Relation Rel t ist.

22 TU Dresden - Institut für Baumechanik und Bauinformatik - Computeranwendung im Bauwesen Folie-Nr.: 22Bauinformatik II, Softwareanwendunge 1; 1. Vorlesung ABCDEFG R ABCD S SELECT * FROM R INNER JOIN S ON R.A = S.E EFG

23 TU Dresden - Institut für Baumechanik und Bauinformatik - Computeranwendung im Bauwesen Folie-Nr.: 23Bauinformatik II, Softwareanwendunge 1; 1. Vorlesung SQL: SELECT - NATÜRLICHER VERBUND SELECT Rel m.*, Rel t.* FROM Rel m NATURAL JOIN Rel t Verknüpft Tabellen über die Gleichheit aller gleichlautenden Spalten. 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.

24 TU Dresden - Institut für Baumechanik und Bauinformatik - Computeranwendung im Bauwesen Folie-Nr.: 24Bauinformatik II, Softwareanwendunge 1; 1. Vorlesung R ABCD S CDG ABCDG SELECT R.*, S.* FROM R NATURAL JOIN S

25 TU Dresden - Institut für Baumechanik und Bauinformatik - Computeranwendung im Bauwesen Folie-Nr.: 25Bauinformatik II, Softwareanwendunge 1; 1. Vorlesung SQL: SELECT - LEFT JOIN SELECT * FROM Rel m LEFT JOIN Rel t ON Rel m.attr x = Rel t.attr y Mit einem Left Outer Join wird eine sogenannte linke Inklusionsverknüpfung erstellt 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. NULL

26 TU Dresden - Institut für Baumechanik und Bauinformatik - Computeranwendung im Bauwesen Folie-Nr.: 26Bauinformatik II, Softwareanwendunge 1; 1. Vorlesung ABCDEFG R ABCD S EFG SELECT * FROM R LEFT JOIN S ON R.A = S.E

27 TU Dresden - Institut für Baumechanik und Bauinformatik - Computeranwendung im Bauwesen Folie-Nr.: 27Bauinformatik II, Softwareanwendunge 1; 1. Vorlesung SQL: SELECT - RIGHT JOIN SELECT * FROM Rel m RIGHT JOIN Rel t ON Rel m.attr x = Rel t.attr y Mit einem Right Outer Join wird eine sogenannte rechte Inklusionsverknüpfung erstellt 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. NULL

28 TU Dresden - Institut für Baumechanik und Bauinformatik - Computeranwendung im Bauwesen Folie-Nr.: 28Bauinformatik II, Softwareanwendunge 1; 1. Vorlesung ABCDEFG R ABCD S EFG SELECT * FROM R RIGHT JOIN S ON R.A = S.E

29 TU Dresden - Institut für Baumechanik und Bauinformatik - Computeranwendung im Bauwesen Folie-Nr.: 29Bauinformatik II, Softwareanwendunge 1; 1. Vorlesung SQL: SELECT - FULL JOIN Kombination von Left Outer Join und Right Outer Join. 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. SELECT * FROM Rel m FULL JOIN Rel t ON Rel m.attr x = Rel t.attr y

30 TU Dresden - Institut für Baumechanik und Bauinformatik - Computeranwendung im Bauwesen Folie-Nr.: 30Bauinformatik II, Softwareanwendunge 1; 1. Vorlesung ABCDEFG R ABCD S EFG SELECT * FROM R FULL JOIN S ON (R.A = S.E)

31 TU Dresden - Institut für Baumechanik und Bauinformatik - Computeranwendung im Bauwesen Folie-Nr.: 31Bauinformatik II, Softwareanwendunge 1; 1. Vorlesung SQL: SELECT - UNION JOIN SELECT * FROM Rel m UNION JOIN Rel t Es werden die Tupel beider Relationen aufgenommen. Sie werden aber nicht über eine Bedingung verknüpft.

32 TU Dresden - Institut für Baumechanik und Bauinformatik - Computeranwendung im Bauwesen Folie-Nr.: 32Bauinformatik II, Softwareanwendunge 1; 1. Vorlesung ABCDEFG R ABCD S EFG SELECT * FROM R UNION JOIN S

33 TU Dresden - Institut für Baumechanik und Bauinformatik - Computeranwendung im Bauwesen Folie-Nr.: 33Bauinformatik II, Softwareanwendunge 1; 1. Vorlesung SQL: SELECT - THETA JOIN Der Theta Join ist die Verallgemeinerung des Inner Join 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 SELECT * FROM Rel m INNER JOIN Rel t ON (Theta-)Verbundbedingung

34 TU Dresden - Institut für Baumechanik und Bauinformatik - Computeranwendung im Bauwesen Folie-Nr.: 34Bauinformatik II, Softwareanwendunge 1; 1. Vorlesung ABCDEFG R ABCD S EFG SELECT * FROM R INNER JOIN S ON R.A <= S.E

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

36 TU Dresden - Institut für Baumechanik und Bauinformatik - Computeranwendung im Bauwesen Folie-Nr.: 36Bauinformatik II, Softwareanwendunge 1; 1. Vorlesung R1.AR1.BR1.CR1.DR2.AR2.BR2.CR2.D R ABCD SELECT R1.*, R2.* FROM R AS R1 INNER JOIN R AS R2 ON R1.A = R2.D ABCD ABCD R1 R2

37 TU Dresden - Institut für Baumechanik und Bauinformatik - Computeranwendung im Bauwesen Folie-Nr.: 37Bauinformatik II, Softwareanwendunge 1; 1. Vorlesung SQL: SELECT - (RELATIONALE) DIVISION SELECT * FROM T DIVIDEBY S Mit der Division filtert man alle Teilrelationen einer Relation aus, die zu allen Tupeln einer zweiten Relation in Beziehung stehen. 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.

38 TU Dresden - Institut für Baumechanik und Bauinformatik - Computeranwendung im Bauwesen Folie-Nr.: 38Bauinformatik II, Softwareanwendunge 1; 1. Vorlesung R ABCD S T EFG ABCDEFG SELECT * FROM T DIVIDEBY S

39 TU Dresden - Institut für Baumechanik und Bauinformatik - Computeranwendung im Bauwesen Folie-Nr.: 39Bauinformatik II, Softwareanwendunge 1; 1. Vorlesung SQL – FREMDSCHLÜSSELBESCHRÄNKUNGEN FOREIGN KEY (Spaltenname1) REFERENCES tbl_name (Spaltenname2,...) [ON DELETE {RESTRICT | CASCADE | SET NULL | NO ACTION}] [ON UPDATE {RESTRICT | CASCADE | SET NULL | NO ACTION}] Fremdschlüsselbeschränkungen regeln die Maßnahmen bei Veränderungen in der "Elterntabelle", auf die durch Fremdschlüssel aus der "Kindtabelle" verwiesen wurde 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.

40 TU Dresden - Institut für Baumechanik und Bauinformatik - Computeranwendung im Bauwesen Folie-Nr.: 40Bauinformatik 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.

41 TU Dresden - Institut für Baumechanik und Bauinformatik - Computeranwendung im Bauwesen Folie-Nr.: 41Bauinformatik 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.)


Herunterladen ppt "Bauinformatik II Softwareanwendungen 1 5. Semester 3. Vorlesung: Abfragen Verbunde in SQL Prof. Dr.-Ing. R. J. Scherer Nürnberger Str. 31a 2. OG, Raum."

Ähnliche Präsentationen


Google-Anzeigen