SQL Pattern & Spezialitäten. © Prof. T. Kudraß, HTWK Leipzig Rekursive Anfragen Syntax (SQL:1999) WITH RECURSIVE Rekursionstabelle (Spaltenliste) AS (

Slides:



Advertisements
Ähnliche Präsentationen
Finding the Pattern You Need: The Design Pattern Intent Ontology
Advertisements

E-Solutions mySchoeller.com for Felix Schoeller Imaging
ER-Datenmodell und Abfragen in SQL
PL/SQL - Einführung. © Prof. T. Kudraß, HTWK Leipzig Vorteile Application Other DBMSs Application Oracle with PL/SQL SQL SQL SQL SQL SQLIF...THENSQLELSESQL.
PL/SQL - Programmierung von Programmeinheiten. © Prof. T. Kudraß, HTWK Leipzig Gespeicherte Prozeduren – Eine Prozedur ist ein benannter PL/SQL Block,
XSQL - Beispiel. © Prof. T. Kudraß, HTWK Leipzig Nested Cursor erzeugen in SQL-Anfragen die XML-typische Baumstruktur (anstelle von Tabellen) Beispiel:
PL/SQL - Kurze Einführung -.
G21Billing Document Outbound via EDI Overview
G20 Sales Order Processing via EDI Overview
Systemüberblick Beispiele: Microsoft Access Oracle Ingres Informix
IS: Datenbanken, © Till Hänisch 2000 Übungen SQL.
Oracle – XSQL in der Anwendung SIG Development (Tools) Oracle & XML Kassel, Thomas Matzke, HTWK Leipzig.
Oracle PL/SQL Server Pages (PSP). © Prof. T. Kudraß, HTWK Leipzig Grundidee: PSP – Internet-Seiten mit dynamischer Präsentation von Inhalten durch Einsatz.
Datenbank-Zugriffsschnittstellen am Beispiel von Oracle und PL/SQL.
SQL/XML. © Prof. T. Kudraß, HTWK Leipzig 2 2 Motivation Speicherung von XML in allen großen kommerziellen DBMS vorhanden proprietäre Lösungen für die.
Publikation von XML-Daten mit XSQL Pages. © Prof. T. Kudraß, HTWK Leipzig Vorteile von XSQL Pages einfache Generierung von XML-Dokumenten auf der Basis.
PL/SQL - Einführung. © Prof. T. Kudraß, HTWK Leipzig Vorteile Application Other DBMSs Application Oracle with PL/SQL SQL SQL SQL SQL SQLIF...THENSQLELSESQL.
PL/SQL - Programmierung von Programmeinheiten. © Prof. T. Kudraß, HTWK Leipzig Gespeicherte Prozeduren – Eine Prozedur ist ein benannter PL/SQL Block,
Speichern von XML in Oracle. © Prof. T. Kudraß, HTWK Leipzig Ansätze zum Speichern von XML komplettes XML-Dokument in einer Tabellenspalte vom Typ CLOB.
PL/SQL - Programmierung von Programmeinheiten. © Prof. T. Kudraß, HTWK Leipzig Gespeicherte Prozeduren – Eine Prozedur ist ein benannter PL/SQL Block,
Übung Datenbanksysteme SQL-Anfragen (2)
Datenbankabfragen Bücher des Autors “Aare, Karl-August” Tabelle buch.
Der letzte Schliff für Abfragen Übersicht über die Aggregatfunktionen.
Oracle interMedia Audio Vortrag für das Seminar Oracle Zusatzoptionen Chris Haußmann.
JDBC -Java Database Connectivity-. 15./22. April 2004JDBC2 JDBC.... verbindet Java-Programme mit SQL-basierten Datenbanken.. liefert eine generische SQL-API.
1 Datenintegrität Statische Bedingung (jeder Zustand) Dynamische Bedingung (bei Zustandsänderung) Bisher: Definition eines Schlüssels 1:N - Beziehung Angabe.
1 Kapitel 8: Datenintegrität. 2 Datenintegrität Statische Bedingung (jeder Zustand) Dynamische Bedingung (bei Zustandsänderung) Bisher: Definition eines.
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 Sichten (1) Oftmals ist es für Anwendungen einfacher, nicht mit dem Original- Datenbestand, sondern einem speziell zugeschnittenen Ausschnitt zu arbeiten.
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.
SQL-Datentypen INTEGER
Datenbanken Mehr als Tabellen.
Datenbanken Mehr als Tabellen. Datenbank Abfragen mit SQL: Eine Tabelle filtern Tabellen realer Datenbanken können sehr viele Informationen speichern:
FH-Hof Standard Query Language Richard Göbel. FH-Hof Geschichte der Sprache SQL System/R-Projekts von IBM zu Beginn der 70er Jahre: Entwicklung der Sprache.
Betrieb von Datenbanken Marco Skulschus & Marcus Wiederstein
Datenintegrität Integitätsbedingungen Schlüssel
WS 2009/10 Datenbanksysteme Fr 15:15 – 16:45 R Vorlesung #6 SQL (Teil 3)
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)
SS 2004 Datenbanken 4W Mi 13:30 – 15:00 G 2.30 Vorlesung #8 SQL (Teil 3)
WS 2013/14 Datenbanksysteme D0 15:15 – 16:45 R Vorlesung #5 SQL (Teil 2)
WS 2007/08 Datenbanksysteme Mi 17:00 – 18:30 R Vorlesung #5 SQL (Teil 2)
Erläuterung der wichtigsten Befehle
Datenbanksysteme für hörer anderer Fachrichtungen
Copyright Oracle Corporation, All rights reserved. 6 Unteranfragen (Subqueries)
Softwaresponsoren Mediasponsoren. Vorstellung KnowledgeCenter Neue Sprachfeautres in VB 9.0 LINQ to SQL in der Praxis.
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.
Aggregatsfunktion mit Group by und having SQL = Structured Query Language.
RZPD Deutsches Ressourcenzentrum für Genomforschung GmbH DESPRAD-Meeting 02/09/2003 Steffen Schulze-Kremer (until 7/2003) Bernd Drescher (since 8/2003)
Title G81 - Integrated WM with PO Return. G81 - Integrated WM with PO Return / 2 Overview Scenario – Integrated WM In this scenario you are shown a complete.
Structured Query Language
Vorlesung #5 SQL (Teil 2).
1 Sichten-Änderungen (1) Änderungen von Sichten sind i.d.R. problematisch, da sie in entsprechende Änderungen der Basisrelationen überführt werden müssen.
WS 2014/15 Datenbanksysteme D0 15:15 – 16:45 R Vorlesung #6 SQL (Teil 3)
Datenbanken abfragen mit SQL
Exotisches SQL Author: Sven Weller.
Modellierungsspezialisten DRITTE NORMALFORM! „Bei der Abfrage, können wir dann alles wieder zusammenfügen!“
Übung Datenbanksysteme I SQL
Abfragen Wiederholung Manuel Friedrich Schiller-Gymnasium Hof.
Aggregatfunktionen bei mehreren Tabellen
Vorlesung #6 SQL (Teil 3).
Wirtschaftsinformatik
Vorlesung #7 SQL (Teil 4).
SQL Join.
Excel-Berichte erstellen und verteilen
 Präsentation transkript:

SQL Pattern & Spezialitäten

© Prof. T. Kudraß, HTWK Leipzig Rekursive Anfragen Syntax (SQL:1999) WITH RECURSIVE Rekursionstabelle (Spaltenliste) AS ( -- Rekursionsinitialisierung SELECT... FROM Tabelle [WHERE Initialisierungsprädikat] -- Rekursionsschritt UNION ALL SELECT... FROM Tabelle, Rekursionstabelle WHERE Rekursionsbedingung ) [Traversierungsklausel] [Zyklusklausel] SELECT... FROM Rekursionstabelle WITH RECURSIVE Rekursionstabelle (Spaltenliste) AS ( -- Rekursionsinitialisierung SELECT... FROM Tabelle [WHERE Initialisierungsprädikat] -- Rekursionsschritt UNION ALL SELECT... FROM Tabelle, Rekursionstabelle WHERE Rekursionsbedingung ) [Traversierungsklausel] [Zyklusklausel] SELECT... FROM Rekursionstabelle

© Prof. T. Kudraß, HTWK Leipzig Rekursive Anfragen Beispiel Anfrage WITH RECURSIVE Erreichbar (Abflug, Ziel) AS ( SELECT Abflug, Ziel FROM Flug WHERE Abflug = Frankfurt UNION ALL SELECT e.Abflug, f.Ziel FROM Erreichbar e, Flug f WHERE e.Ziel = f.Abflug ) SELECT DISTINCT * FROM Erreichbar WITH RECURSIVE Erreichbar (Abflug, Ziel) AS ( SELECT Abflug, Ziel FROM Flug WHERE Abflug = Frankfurt UNION ALL SELECT e.Abflug, f.Ziel FROM Erreichbar e, Flug f WHERE e.Ziel = f.Abflug ) SELECT DISTINCT * FROM Erreichbar

© Prof. T. Kudraß, HTWK Leipzig Rekursive Anfragen Beispiel AbflugZiel FrankfurtParis FrankfurtLondon ParisNew York AthenNew York FrankfurtBerlin ParisIstanbul LondonBerlin AbflugZiel FrankfurtParis FrankfurtLondon FrankfurtNew York FrankfurtBerlin FrankfurtIstanbul Tabelle Flug Ergebnistabelle

© Prof. T. Kudraß, HTWK Leipzig Rekursive Anfragen in Oracle Beispiel SLAVE_ID SUPERVISOR_ID NAME Big Boss Man 2 1 VP Marketing 3 1 VP Sales 4 3 Joe Sales Guy 6 1 VP Engineering 7 6 Jane Nerd 8 6 Bob Nerd 5 4 Bill Sales Assistant SLAVE_ID SUPERVISOR_ID NAME Big Boss Man 2 1 VP Marketing 3 1 VP Sales 4 3 Joe Sales Guy 6 1 VP Engineering 7 6 Jane Nerd 8 6 Bob Nerd 5 4 Bill Sales Assistant

© Prof. T. Kudraß, HTWK Leipzig Rekursive Anfragen in Oracle (2) Anfrage SELECT name, slave_id, supervisor_id FROM corporate_slaves CONNECT BY PRIOR slave_id = supervisor_id; NAME SLAVE_ID SUPERVISOR_ID Big Boss Man 1 VP Marketing 2 1 VP Sales 3 1 Joe Sales Guy 4 3 Bill Sales Assistant 5 4 VP Engineering 6 1 Jane Nerd 7 6 Bob Nerd 8 6 VP Marketing 2 1 VP Sales 3 1 Joe Sales Guy 4 3 Bill Sales Assistant 5 4 Joe Sales Guy 4 3 Bill Sales Assistant 5 4 VP Engineering 6 1 Jane Nerd 7 6 Bob Nerd 8 6 Jane Nerd 7 6 Bob Nerd 8 6 Bill Sales Assistant rows selected. NAME SLAVE_ID SUPERVISOR_ID Big Boss Man 1 VP Marketing 2 1 VP Sales 3 1 Joe Sales Guy 4 3 Bill Sales Assistant 5 4 VP Engineering 6 1 Jane Nerd 7 6 Bob Nerd 8 6 VP Marketing 2 1 VP Sales 3 1 Joe Sales Guy 4 3 Bill Sales Assistant 5 4 Joe Sales Guy 4 3 Bill Sales Assistant 5 4 VP Engineering 6 1 Jane Nerd 7 6 Bob Nerd 8 6 Jane Nerd 7 6 Bob Nerd 8 6 Bill Sales Assistant rows selected.

© Prof. T. Kudraß, HTWK Leipzig Rekursive Anfragen in Oracle (3) NAME SLAVE_ID SUPERVISOR_ID LEVEL Big Boss Man 1 1 VP Marketing VP Sales Joe Sales Guy Bill Sales Assistant VP Engineering Jane Nerd Bob Nerd NAME SLAVE_ID SUPERVISOR_ID LEVEL Big Boss Man 1 1 VP Marketing VP Sales Joe Sales Guy Bill Sales Assistant VP Engineering Jane Nerd Bob Nerd SELECT name, slave_id, supervisor_id, level FROM corporate_slaves CONNECT BY PRIOR slave_id = supervisor_id START WITH slave_id = 1;

© Prof. T. Kudraß, HTWK Leipzig Top-N-Queries SELECT * FROM (your ordered query) alias_name WHERE rownum <= Rows_to_return ORDER BY rownum; Ermittle die n Datensätze in einer bestimmten Rangordnung (z.B. die n billigsten X) Beispiel SELECT * FROM (select * from suppliers ORDER BY supplier_name) suppliers2 WHERE rownum <= 3 ORDER BY rownum;

© Prof. T. Kudraß, HTWK Leipzig Relationendivision Beispiel: Welche Mitarbeiter haben in allen Projekten mitgearbeitet Basiert auf Relationendivision (kein Operator in SQL) EmpnoPno 7834P1 6374P1 7834P2 6374P3 7834P3 4710P2 PnoPname P1Hochschul-CMS P2WLAN Mensa P3Online Eval Mitarbeit Projekt

© Prof. T. Kudraß, HTWK Leipzig Relationendivision in SQL Typisches SQL-Pattern SELECT DISTINCT empno FROM Mitarbeit M WHERE NOT EXISTS ((SELECT P.pno FROM Projekt P) MINUS (SELECT pno FROM Mitarbeit WHERE empno = M.empno))

© Prof. T. Kudraß, HTWK Leipzig Outer Join EmpnoPno 7834P1 6374P1 7834P2 6374P3 7834P3 4710P2 EmpnoEname Cook 7834Miller 6374Stiller 4710Hiller 5819Neverman SELECT e.empno, e.ename, p.pno FROM Emp e LEFT OUTER JOIN Projekt p ON e.empno = p.empno Anzeige aller Datensätze einer Tabelle, auch wenn diese die Join-Bedingung nicht erfüllen

© Prof. T. Kudraß, HTWK Leipzig CURSOR-Ausdrücke für hierarchische Ausgaben Beispiel Verwendung bei der dynamischen Erzeugung von XML-Dokumenten aus Datenbanken SELECT dname, CURSOR ( SELECT ename FROM emp e WHERE e.deptno = d.deptno ORDER BY ename ) FROM dept d ORDER BY dname;

© Prof. T. Kudraß, HTWK Leipzig DNAME CURSOR(SELECTENAMEFR ACCOUNTING CURSOR STATEMENT : 2 CURSOR STATEMENT : 2 ENAME CLARK KING MILLER OPERATIONS CURSOR STATEMENT : 2 CURSOR STATEMENT : 2 Es wurden keine Zeilen ausgewählt DNAME CURSOR(SELECTENAMEFR RESEARCH CURSOR STATEMENT : 2 CURSOR STATEMENT : 2 ENAME ADAMS FORD JONES SCOTT SMITH SALES CURSOR STATEMENT : 2 CURSOR STATEMENT : 2 ENAME ALLEN BLAKE JAMES MARTIN TURNER WARD 6 Zeilen ausgewählt.

© Prof. T. Kudraß, HTWK Leipzig Weitere SQL-(Design)-Pattern - Auswahl - Skyline Query Outer Union Histogramme Complexe Constraints (Tree Constraints, temporale Constraints) Baumalgorithmen (Pfad-Queries) Graphalgorithmen: transitive Hülle Quelle: Vadim Tropashko: SQL Design Patterns, Rampant Tech Press, 2007.