Datenmanagement SQL III: Komplexe Abfragen Datenmanagement WS 09/10 SQL III – Łukasz Lis Beispieldatenbank – ERM Datenmanagement WS 09/10 1 SQL III – Łukasz Lis Beispieldatenbank – Schema Datenmanagement WS 09/10 2 SQL III – Łukasz Lis Unterabfragen Unterabfragen sind Datenbankabfragen, die in eine andere SQL-Abfrage eingebettet werden (auch: nested query, subquery) Unterabfragen werden z. B. benötigt wenn gleichzeitig über unterschiedliche Attributkombinationen aggregiert werden muss, ein numerischer Wert für eine Abfrage (z.B. einen Vergleich) aus einer Tabelle ermittelt werden muss, Datensätze einer Tabelle ausgegeben werden sollen, die nicht in einer anderen Tabelle vorkommen (ohne IS NULL-Operator). Nachteil: Unterabfragen werden von DBMS meist weniger gut optimiert und sind dadurch häufig langsamer Datenmanagement WS 09/10 3 SQL III – Łukasz Lis Skalarunterabfragen Eine Skalarunterabfrage wird verwendet, wenn ein spezifischer Zahlenwert aus einer Tabelle ermittelt werden soll Für jede Änderung deren Zeitpunkt und die Abweichung von der durchschnittlichen Anzahl geänderter Zeichen ausgeben. Datenmanagement WS 09/10 4 SQL III – Łukasz Lis Spaltenunterabfrage Spaltenunterabfragen geben genau eine Ergebnisspalte mit n Ergebniszeilen (Datensätzen) zurück. Sie können für Listenvergleiche mittels IN-Operator eingesetzt werden. Alle Änderungen des Nutzers „Bravo“ ausgeben. Datenmanagement WS 09/10 5 SQL III – Łukasz Lis Zeilenunterabfrage Zeilenunterabfragen ermitteln genau einen Datensatz, jedoch mehrere Attribute dieses Datensatzes. Wurden in der letzten Änderung die meisten Zeichen geändert? Alle Änderungen des Nutzers mit der letzten Rollenzuweisung ausgeben. Datenmanagement WS 09/10 6 SQL III – Łukasz Lis Tabellenunterabfrage Tabellenunterabfragen ermitteln n Ergebniszeilen (Datensätze) mit mehreren Attributen. Sie lassen sich für z. B. Listenvergleiche über Wertekombinationen einsetzen. Alle Änderungen ausgeben, die während einer lokalen Sitzung vorgenommen wurden. Die durchschnittliche Anzahl der Änderungen eines Dokuments im System ermitteln (Systemdurchschnitt). Datenmanagement WS 09/10 7 SQL III – Łukasz Lis Korellierte Unterabfragen Korreliert sind solche Unterabfragen, bei denen die Variablen der äußeren Abfrage in der Unterabfrage verwendet werden. Für jedes Dokument die maximale Anzahl an geänderten Zeichen in einer einzelnen Änderung (die größte Änderung) finden. Zusätzlich jeweils den Nutzer ermitteln, der die Änderung vorgenommen hat. Datenmanagement WS 09/10 8 SQL III – Łukasz Lis Views Views sind Konstrukte, die einmal formulierte SELECTAnweisungen auf Datenbankebene persistieren CREATE VIEW view_name AS select_expr; Einmal definiert, können Views in Abfragen wie originäre Tabellen verwendet werden CREATE VIEW hallowelt AS SELECT * FROM …; SELECT * FROM hallowelt; Mit DROP VIEW können Views wieder gelöscht werden Das Erstellen von Views erfordert spezielle Zugriffsrechte Datenmanagement WS 09/10 9 SQL III – Łukasz Lis Trigger Trigger sind DML-Anweisungen, die abhängig von bestimmten Ereignissen durch das DBMS automatisch ausgeführt werden CREATE TRIGGER trigger_name trigger_time -- BEFORE oder AFTER trigger_event –- INSERT, UPDATE oder DELETE ON table_name FOR EACH ROW trigger_statement; Das Erstellen von Triggern erfordert spezielle Zugriffsrechte Datenmanagement WS 09/10 10 SQL III – Łukasz Lis