Komplexe SQL-Anfragen Prof. Dr. Andreas Schmietendorf 1
Aufgabenbeschreibung Prof. Dr. Andreas Schmietendorf 2
Zielstellung setzt auf den Ergebnissen der Übung 2 auf. Dem entsprechend wird wiederum die EMPLOYEE.FDB-Datenbank verwendet. Allerdings stehen bei dieser Übung fortgeschrittene Abfragetechniken sowie Einfügeund Veränderungs-Operationen im Mittelpunkt der Aufgabenstellungen. Darüber hinaus soll der Umgang mit verschiedenen Verbundoperationen (so genannte Join-Operationen) erprobt werden. Berücksichtigen Sie zur Durchführung der Aufgabenstellungen auch die im Rahmen der Vorlesung verwendeten Unterlagen bzw. die Verwendung des Internets! Prof. Dr. Andreas Schmietendorf 3
Aufgabe 1 Formulieren Sie eine Anfrage für die Tabelle PROJ_DEPT_BUGET die alle Tupel für den Fall ausgibt, das die Belegung des Attributs PROJECTED_BUDGET zwischen 50000 und 60000 liegt. Formulieren Sie eine Anfrage für die Tabelle CUSTOMER, welche die Anzahl der Kunden ausgibt, die den folgenden POSTAL_CODE besitzen 92121, 75205, 75008 Verändern Sie die letzte SQL-Anfrage so, dass anstelle der Anzahl die folgenden Attribute ausgegeben werden: - CUST_NO, CUSTOMER, PHONE_NO, ADDRESS_LINE1, CITY Prof. Dr. Andreas Schmietendorf 4
Aufgabe 2 Verwenden Sie die Ungewissheitsselektion mit LIKE im Rahmen von 3 selbst entwickelten SQL-Anfragen für die EMPLOYEE- Datenbank. Testen Sie mit Hilfe einer entsprechenden SQL-Anweisung das Attribut MNGR_NO innerhalb der Tabelle DEPARTMENT auf NULL-Werte. Bei wie vielen Tupeln ist dieses Attribut nicht belegt? Warum können wir mittels der vorher entwickelten SQL-Anweisung nicht auf ggf. enthaltene 0-Werte testen? Prof. Dr. Andreas Schmietendorf 5
Aufgabe 3 Geben Sie jeweils 10 neue Mitarbeiter in die Tabelle EMPLOYEE ein, verwenden Sie die Vorlage innerhalb dieser Versuchsanleitung. Prüfen Sie jeweils nach Eingabe eines weiteren Mitarbeiters den Inhalt der Tabelle EMPLOYEE mittels einer select-anweisung. - Mindestens Belegung aller not null Attribute - Datumsangabe entsprechend des folgenden Formats 11.12.2005 - Geforderte Variation der folgenden Attributsbelegungen: EMP_NO DEPT_NO JOB_COUNTRY SALARY Erläutern Sie die Gründe für ggf. auftretende Probleme Prof. Dr. Andreas Schmietendorf 6
Aufgabe 4 Schreiben Sie eine Update-Anweisung für die Tabelle COUNTRY und verändern Sie dort die Währungen auf Euro, sofern dieses zutrifft (d.h. erfolgte Umstellung der Landeswährungen). Analysieren Sie die Inhalte der Tabelle COUNTRY nach der ausgeführten Update-Anweisungen. Setzen Sie die ausgeführte Transaktion durch ein Rollback zurück, prüfen Sie die Inhalte der Tabelle erneut. Transaktionsannahme Rollback Prof. Dr. Andreas Schmietendorf 7
Aufgabe 5 Erhöhen Sie das Gehalt SALARY aller Ingenieure in den USA (JOB_CODE Eng) um jeweils 20000. Verwenden Sie dafür die Update-Anweisung. Erläutern Sie den dabei aufgetretenen Fehler. Welche Möglichkeiten bestehen um diese Fehlermeldung zu beseitigen? Warum sollte die Datenbank nicht ohne weiteres umkonfiguriert werden, denken Sie ggf. auch an nicht technische Aspekte? Prof. Dr. Andreas Schmietendorf 8
Aufgabe 6 Ermitteln Sie das Kreuzprodukt für die Relationen DEPARTMENT und EMPLOYEE. Wie viele Tupel (Zeilen) und Attribute (Spalten) enthält ihre Ergebnisrelation? Ermitteln Sie einen natürlichen Verbund der Relationen DEPARTMENT und EMPLOYEE unter Verwendung des Attributs DEPT_NO. Wie viele Tupel (Zeilen) und Attribute (Spalten) enthält ihre Ergebnisrelation jetzt? Prof. Dr. Andreas Schmietendorf 9
Aufgabe 7 Welche Tabellen der Datenbank EMPLOYEE.FDB können mittels Join-Operation miteinander verbunden werden? Experimentieren Sie mit den folgenden Join-Operationen - Linker äußerer Join (left outer join) - Rechter äußerer Join (right outer join) - Äußerer Join (full outer join) Erläutern Sie die Unterschiede dieser Verbundoperationen anhand selbst ausgewählter Beispiele. Prof. Dr. Andreas Schmietendorf 10
Aufgabe 8 Geben Sie die Kunden (Attribute CUSTOMER und TOTAL_VALUE) im Zusammenhang mit dem Umsatzvolumen aus. Sortieren Sie die Reihenfolge der ausgegebenen Tupel einmal aufsteigend und einmal absteigend. Erläutern Sie den im Rahmen der Tabelle EMPLOYEE verwendeten Trigger SAVE_SALARY_CHANGE hinsichtlich seiner prinzipielle Funktionsweise. Identifizieren Sie weitere Einsatzszenarien für die Verwendung von Triggern. Prof. Dr. Andreas Schmietendorf 11
Hinweise und SQL-Beispiele Prof. Dr. Andreas Schmietendorf 12
Beispiel: DELETE-Anweisung Prof. Dr. Andreas Schmietendorf 13
Beispiel: INSERT-Anweisung Prof. Dr. Andreas Schmietendorf 14
Beispiel: UPDATE-Anweisung -vorher - Prof. Dr. Andreas Schmietendorf 15
Beispiel: UPDATE-Anweisung -nachher - Prof. Dr. Andreas Schmietendorf 16
Beispiel: Natürlicher Verbund Prof. Dr. Andreas Schmietendorf 17
Beispiel: Linker äußerer Verbund Prof. Dr. Andreas Schmietendorf 18
Organisation Prof. Dr. Andreas Schmietendorf 19
Organisation der Übung Bitte berücksichtigen Sie die folgende Vorgehensweise: Kombination von Einzel- und Gruppenarbeit! Vorgeschlagene Methode zur Aufgabenlösung - Analyse der kompletten Aufgabenstellung (alle Folien!) - Ausführen der Übungen 1 bis 8 (jeder Student für sich 90 min) - Diskussion der erreichten Ergebnisse und ggf. Korrektur (45 min) - Erstellung eines zusammenfassenden Protokolls (45 min) Zeit für die Durchführung: ca. 180 min Bereitstellung eines entsprechenden Protokolls je Gruppe Prof. Dr. Andreas Schmietendorf 20