Die Präsentation wird geladen. Bitte warten

Die Präsentation wird geladen. Bitte warten

Übung Datenbanksysteme WS 2002/200318.01.2014 Übung Datenbanksysteme SQL-Anfragen (2) 18.12.2002.

Ähnliche Präsentationen


Präsentation zum Thema: "Übung Datenbanksysteme WS 2002/200318.01.2014 Übung Datenbanksysteme SQL-Anfragen (2) 18.12.2002."—  Präsentation transkript:

1 Übung Datenbanksysteme WS 2002/ Übung Datenbanksysteme SQL-Anfragen (2)

2 Übung Datenbanksysteme WS 2002/ Outer Joins Motivation: Aufgabe 1a Betrachten Sie zusätzlich den Inhalt der beiden Einzeltabellen Was passiert mit Fernzug H oder Wagen 36 ? Erklärungen: Im Join tauchen nur die Tupel auf, die einen Joinpartner haben Fernzug H hat keine Wagen Wagen 36 ist keinem Zug zugeordnet Ist das Verhalten wünschenswert ? Ja, aber: Was ist, wenn es wichtiger ist, alle Einträge zu sehen, auch wenn es keinen Partner gibt

3 Übung Datenbanksysteme WS 2002/ Left outer Join Alle Elemente der linken Seite bleiben erhalten Elemente ohne Joinpartner werden mit NULL aufgefüllt Syntax: … from Tabelle1 t1 left (outer) join Tabelle2 t2 on t1.spalte=t2.spalte Linke Tabelle ist t1 Beispiel: Aufgabe 1b)

4 Übung Datenbanksysteme WS 2002/ Right outer Join Alle Elemente der rechten Seite bleiben erhalten Elemente ohne Joinpartner werden mit NULL aufgefüllt Syntax: … from Tabelle1 t1 right (outer) join Tabelle2 t2 on t1.spalte=t2.spalte Rechte Tabelle ist t2 Beispiel: Aufgabe 1c)

5 Übung Datenbanksysteme WS 2002/ Full Outer Join Beide Seiten bleiben vollständig erhalten, Joinpartner werden kombiniert Elemente ohne Joinpartner werden mit NULL aufgefüllt Syntax: … from Tabelle1 t1 full outer join Tabelle2 t2 on t1.spalte=t2.spalte Beispiel: 1d)

6 Übung Datenbanksysteme WS 2002/ Outer Joins Wie könnte man Outer Joins mit den klassischen Statements darstellen ? Q1: Inner Join, um die kombinierten Tupel zu erzeugen Verbleibende Tupel finden und kombinieren ? Q2: Projektion von Q1 auf die Attribute von t1 (Semijoin) Q3: Mengendifferenz t1-Q2 Q4: Aufweitung von Q3 auf alle Spalten (wie ?) Union von Q1 und Q4

7 Übung Datenbanksysteme WS 2002/ Subqueries Konzept: Bestimmte Elemente einer SQL-Query sind selbst wieder Queries Welche ? Spalten im Select Tabellen im From Input von arithmetischen Operationen (Vorsicht !) Input von Mengenoperationen Input von Exists Warum ? Mehr Ausdrucksmöglichkeiten Zusammenfassung mehrerer Teilabfragen zu einer einzelnen Strukturierung

8 Übung Datenbanksysteme WS 2002/ Subqueries im Select Hinzufügen von weiteren Spalten aus weiteren Queries Syntax: Select a, b, (select x from z) From c Siehe Aufgabe 2a) Auf die Variablen der äußeren Anfrage kann von der inneren zugegriffen werden Modifizieren des Anfrage von 2a, um die Rabattdifferenz anzuzeigen !

9 Übung Datenbanksysteme WS 2002/ Suqueries in arithmethischen Operationen Ergebnis der Subquery wird in arithmetischen Ausdruck weiterverwendet Beispiel: Aufgabe 2b) Vorsicht: Ergebnis muss ein einzelner Wert sein ! Nützlich für: Arithmetische Mengenvergleiche ?...

10 Übung Datenbanksysteme WS 2002/ Subqueries bei FROM Zwischentabellen in einer Query Syntax:... FROM (Select * from a)... Name gibt der temporären Tabelle einen Namen – warum notwendig ? Vorteile: Integration mehrerer Teilqueries in eine einzelne Query Zwischenergebnisse müssen nicht explizit abgespeichert werden Optimierer kann evtl. besseren Plan finden Beispiel: Aufgabe 2c)

11 Übung Datenbanksysteme WS 2002/ Subqueries mit Mengenoperatoren Ergebnis der Subquery stellt Menge dar, auf die bestimmte Operation angewandt wird Wie muss das Ergebnis der Subquery aussehen ? => Schemata strukturell identisch ! Mengenoperatoren: –In –Union –intersect –Except Beispiel: Aufgabe 2d

12 Übung Datenbanksysteme WS 2002/ Subqueries mit Quantifikatioren Eigentlich Spezialfall der Mengenoperatoren Weniger häufig benötigt als im Tupelkalkül Wichtigster Operator: EXISTS (bzw. NOT EXISTS) Explizites FOR ALL (noch) nicht Teil von SQL mit EXISTS ausdrücken Aber ALL oder SOME im Mengenvergleich > ALL ()

13 Übung Datenbanksysteme WS 2002/ Beispiel: Aufgabe 2e Finden Sie einen Zug, der zu allen Stationen ausser Ingolstadt faehrt Lösungsvorschläge ??? Allquantor worauf anwenden, wodurch ersetzen ? Zählen ? Mengenvergleiche ???

14 Übung Datenbanksysteme WS 2002/ Aufgabe 2e: Lösungsansatz Allquantifizierung ersetzen Ein Zug muss in allen Stationen (ohne Ingolstadt) ankommen für alle Stationen (außer Ingolstadt) muss es eine Verbindung geben, die zu dieser Station fährt und bei der der Zug der gleiche ist kein für alle in Standard-SQL Transformation von für alle existiert ein zu es gibt keines, für das nicht existiert Probieren wir jetzt aus...

15 Übung Datenbanksysteme WS 2002/ Hinweise zur Verwendung von Subqueries Durch Subqueries gibt es viele semantisch äquivalente Möglichkeiten, eine Anfrage auszudrücken ! Vorsicht vor zu vielen Subqueries Warum nicht ? Viele Optimizer arbeiten schlecht mit Subqueries (Oracle) Vorsicht bei korrelierten Subqueries ! Bei jedem korreliertem Wert der äußeren Query muss die innere erneut ausgewertet werden Kann teuer werden Wenn möglich, Anfragen dekorrelieren !


Herunterladen ppt "Übung Datenbanksysteme WS 2002/200318.01.2014 Übung Datenbanksysteme SQL-Anfragen (2) 18.12.2002."

Ähnliche Präsentationen


Google-Anzeigen