Übung Datenbanksysteme SQL-Anfragen (2)

Slides:



Advertisements
Ähnliche Präsentationen
Imperative Programmierung
Advertisements

ER-Datenmodell und Abfragen in SQL
Übung Datenbanksysteme WS 2003/ Übung Datenbanksysteme Entwurf eines Bibliothekssystems
[01] - ERM Modellierung I Basiselemente von E-R-Diagrammen kennen
System J – Compiler – Praktikum: Datenbanksystementwicklung Knut Stolze
Bauinformatik II Softwareanwendungen 1
der Universität Oldenburg
Systemüberblick Beispiele: Microsoft Access Oracle Ingres Informix
Kapitel 3: Das Relationenmodell
FH-Hof Effizienz - Grundlagen Richard Göbel. FH-Hof Inhalt Einführung Aufwand für Anfragen ohne Indexierung Indexstrukturen für Anfragen an eine Tabelle.
Auswertung im GTDS fixe Abläufe für Standard-Aufgaben Mamma-Auswertung
Das Relationenmodell 1.
Prof. Dr. T. Kudraß1 Relationenkalkül. Prof. Dr. T. Kudraß2 Relationenkalkül Zwei Ausprägungen: Tupelrelationenkalkül (TRK) und Domänenrelationenkalkül.
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 UML
Einführung Dateisystem <-> Datenbanksystem
Prof. K. Gremminger Folie 1 Vorlesung Datenbanksysteme SS 2002 Cursor-Konzept u Zugriff auf Mengen von Ergebnistupeln u In SQLJ Iteratoren u Vergleichbar.
SQL - Structured Query Language AIFB SS (1/7) Verknüpfung von Relationen mit Subqueries (1/7) 32. Namen aller Angestellten, die mit 100 %
SQL in Visual FoxPro. © 1999 TMN-Systemberatung GmbH SQL Historie n SQL - Structured Query Language n In den 70er Jahren von IBM entwickelt n 1986 zum.
Übung 1: SQL Übungen finden bei Bedarf anstelle der Vorlesungen statt
Prof. Dr. Gerhard Schmidt pres. by H.-J. Steffens Software Engineering SS 2009Folie 1 Objektmodellierung Objekte und Klassen Ein Objekt ist ein Exemplar.
Quilt: Eine XML Anfragesprache für heterogene Datenquellen
Datenbankentwicklung IV-LK
Die Grundterminologie
SQL Überblick Abfragen aus einer Tabelle
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)
SS 2004 Datenbanken 4W Mi 13:30 – 15:00 G 2.30 Vorlesung #7 SQL (Teil 2)
WS 2011/12 Datenbanksysteme Fr 15:15 – 16:45 R Vorlesung #8 Anfragebearbeitung.
SS 2004 Datenbanken 4W Mi 13:30 – 15:00 G 2.30 Vorlesung #5 Relationale Anfragesprachen.
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 2012/13 Datenbanksysteme Fr 15:15 – 16:45 R Vorlesung #9 Anfragebearbeitung.
WS 2007/08 Datenbanksysteme Mi 17:00 – 18:30 R Vorlesung #9 Anfragebearbeitung (Teil 1)
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)
Datenbanksysteme für hörer anderer Fachrichtungen
Copyright Oracle Corporation, All rights reserved. 6 Unteranfragen (Subqueries)
WS 2011/12 Datenbanksysteme Fr 15:15 – 16:45 R Vorlesung #5 SQL (Teil 2)
Von Isabelle Spörl und Simon Schausberger
1 Gruppierung, Aggregierung und Sortierung (2) Abarbeitungsmodell bei Gruppierung: Werte from- und where-Klauseln aus wie bisher (Bildung von Kreuzprodukt.
Das relationale Modell
WS 2013/14 Datenbanksysteme Do 17:00 – 18:30 R Vorlesung #9 Anfragebearbeitung.
SQL - Structured Query Language AIFB SS (1/9) Join-Operationen in SQL-92(1/9) Syntax einer Join-Operation: join-op := CROSS JOIN | [NATURAL]
PHP: Operatoren und Kontrollstrukturen
Datenbanksysteme II Vorlesung WS 2006 / 2007 Paul Manthey
WS 2004/2005 Datenbanken II - 5W Mi 17:00 – 18:30 G 3.18 Vorlesung #3 Anfragebearbeitung (Teil 1)
Vorlesung #5 SQL (Teil 2).
1 Differenzierte Verbindungsoperationen (1) Beobachtung: Einfach zu formulierende Verbindungen wie ein Natural Join sind nicht als solche dokumentiert.
Algebraische Optimierung (1)
RelationentheorieObjektorientierte Datenbanken  AIFB SS Anfragen auf Sammlungen(1/29) OQL besteht aus einer Menge von Anfrageausdrücken, die.
Modellierungsspezialisten DRITTE NORMALFORM! „Bei der Abfrage, können wir dann alles wieder zusammenfügen!“
WS 2014/15 Datenbanksysteme D0 15:15 – 16:45 R Vorlesung #6 SQL (Teil 3)
1 Gruppierung, Aggregierung und Sortierung (1) Finde für jeden Flugzeugtyp die Zahl aller von Frankfurt abgehenden Flüge und sortiere Ergebnis nach Flugzeugtyp:
1 Syntaktische Grundform selectA 1, A 2, …, A n fromR 1, R 2, …, R m wherebedingung w ;
Prolog: Datenbanken Inhalt - Überblick - Erstellen einer Datenbank
Datenbank System (DBS) - Warum?
Vorlesung Datenbanksysteme vom Anfragebearbeitung  Logische Optimierung.
WS 2014/15 Datenbanksysteme Do 17:00 – 18:30 R Vorlesung #9 SQL Zusammenfassung.
Modellierungsspezialisten DRITTE NORMALFORM! „Bei der Abfrage, können wir dann alles wieder zusammenfügen!“
WS 2015/16 Datenbanksysteme Fr 17:00 – 18:30 R Vorlesung #3 Das relationale Modell (Teil 2)
Technische Universität München Übung zur Einführung in die Informatik für Hörer anderer Fachrichtungen im Sommersemester 2010 Sitzung 8: Die relationale.
Vorlesung #5 SQL (Teil 2).
Vorlesung #6 SQL (Teil 3).
SQL Join.
Left Join, Right Join, Outer Join
SQL Join.
Indexierung Oracle: indexes Indexierung.
 Präsentation transkript:

Übung Datenbanksysteme SQL-Anfragen (2) 18.12.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“

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)

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)

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)

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

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

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 !

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 ? ...

Subqueries bei FROM „Zwischentabellen“ in einer Query Syntax: ... FROM (Select * from a) <Name> ... 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)

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

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 ()

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 ???

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 ...

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 !