1. ¨Ubung - Datenbankprogrammierung
Transcrição
1. ¨Ubung - Datenbankprogrammierung
Professur für Datenbanken Fakultät Informatik Institut für Systemarchitektur 1. Übung - Datenbankprogrammierung ” Ziel der Übung. Anfragesprache. SQL Basics“ Auffrischung der Grundkenntnisse der SQL- Aufgaben 1. Aufgabe: Mitarbeiter und Abteilungen Für diese Aufgabe wird die DB2-Beispieldatenbank SAMPLE verwendet. Sie können sich mit folgendem Befehl an die Datenbank verbinden: db2 CONNECT TO SAMPLE Für alle Teilaufgaben gilt: Eliminieren Sie alle Duplikate, aber nur falls notwendig! Die Anzahl der Ergebnistupel ist in eckigen Klammern angegeben. Die Anzahl der Punkte die sie für das Lösen dieser Aufgabe erhalten ist jeweils in den runden Klammer angegeben. 1. Geben Sie Nachname, Vorname, Geschlecht und Geburtsdatum aller Angestellten (EMPLOYEE) in alphabetischer Reihenfolge aus! Das Geschlechtsattribut soll die Ausprägungen maennl und weibl enthalten. Verwenden Sie dazu einen CASE-Ausdruck! [42] 2. Jeder Mitarbeiter hat einen bestimmten Job. Ermitteln Sie alle vorhandenen Jobs und sortieren Sie diese alphabetisch! [8] 3. Welche Angestellten arbeiten in der Abteilung ’ADMINISTRATION SYSTEMS’? Sortieren Sie das Ergebnis aufsteigend nach dem Nachnamen! [7] 4. Ermitteln Sie für alle Abteilungen den Abteilungsnamen und, sofern vorhanden, den Nachnamen des Managers. Verwenden Sie die Spaltenbezeichnungen DEPARTMENT bzw. MANAGER! Sortieren Sie das Ergebnis nach der Abteilungsbezeichnung! [14] 5. Wie viele Projekte führt die Abteilung ’DEVELOPMENT CENTER’ durch? Geben Sie nur die Anzahl aus! [1] 6. Ermitteln Sie die Anzahl der Mitarbeiter, das Gesamteinkommen und das Durchschnittseinkommen der Abteilung ’OPERATIONS’! Verwenden Sie aussagekräftige Attributbezeichnungen! [1] 1 Professur für Datenbanken Fakultät Informatik Institut für Systemarchitektur 7. Ermitteln Sie Nachnamen, Vornamen und Anzahl der bearbeiteten Projekte für jeden Mitarbeiter! Geben Sie nur Mitarbeiter aus, die an mindestens drei Projekten arbeitet haben! Sortieren Sie das Ergebnis absteigend nach der Anzahl der Projekte! [7] 8. Welche Angestellten erhalten einen höheren Bonus als ihr Abteilungsleiter? [3] 2. Aufgabe: Teile, Bestellungen und Lagerbestand Diese Aufgabe verwendet die TPC-H Datenbank, welche im Gegensatz zur SAMPLE-Datenbank noch nicht erstellt worden ist (Datenbankname: TPCH). Das Schema einer Tabelle können Sie sich mittels folgendem Befehl anzeigen lassen: db2 DESCRIBE TABLE <table-name> Zum Erstellen der Datenbank, führen Sie bitte folgende Befehlsfolge aus: db2 db2 db2 db2 CREATE DB TPCH CONNECT TO TPCH -tf create.sql -tf import.sql Die letzten beiden Befehle erstellen das Datenbankschema und importieren Beispieldaten. Sie können sich die Skripte ansehen, um zu verstehen, wie der Datenbankimport umgesetzt ist. 1. Geben Sie zu jedem Teil (PART.P NAME) die Materialart (PART.P TYPE) an! Ermitteln Sie außerdem, ob das Teil aus Kupfer (COPPER) besteht (’Yes’) oder nicht (’No’)! Tipp: Verwenden Sie CASE und LIKE! [2000] 2. Ermitteln Sie die Anzahl der Bestellungen (LINEITEM.L QUANTITY) jedes Teils (PART.P NAME)! Sortieren Sie das Ergebnis absteigend nach der Anzahl der Bestellungen, bei gleicher Anzahl alphabetisch aufsteigend nach Teilbezeichnung! Verwenden Sie einen äußeren Verbund! Achten Sie darauf, das nicht bestellte Teile durch die Anzahl 0 (nicht NULL) repräsentiert werden! Was passiert, wenn kein OUTER JOIN verwendet wird? [2000] 3. Geben Sie die Namen aller Zulieferer und Kunden aus Afrika alphabetisch sortiert an! Tipp: Verwenden Sie die UNION-Operation. [949] 2 Professur für Datenbanken Fakultät Informatik Institut für Systemarchitektur 4. Ermitteln Sie die Anzahl aller verschiedenen Teile von russischen Zulieferern an Kunden aus Marokko mit einem Bestellumsatz (C ACCTBAL) ≤ 1000! [1] 5. Ermitteln Sie die Namen (PART.P NAME) und Größe (PART.P SIZE) der 6 größten Teile! [6] 3. Aufgabe: Datentypen 1. Erstellen Sie für die beiden Währungen Euro und Dollar die nutzerdefinierten Datentypen T EUR und T USD vom Quelldatentyp DECIMAL (6,2)! Erstellen Sie eine Tabelle COLLECTION, bestehend aus den Spalten ITEM vom Typ VARCHAR(20) und PRICE vom Typ T EUR. Füllen Sie die Tabelle mit den folgenden Testdaten: ITEM -------------------NIKON COOLPIX S9 ACER TravelMate 2428 SAMSUNG R40-T2300 CANON CanoScan 4200 BROTHER HL 2030 PRICE -------158.00 648.00 1020.00 78.60 113.50 Schreiben Sie eine SQL-Abfrage, welche die obigen Waren mit in Dollar ausgezeichneten Preisen (vom Typ T USD) ausgibt! Gehen Sie dabei von einem Umrechnungskurs von 1:1.30 aus! Geben Sie alle CREATE, INSERT und SELECT-Anweisungen in ihrer Lösung an! 4. Aufgabe: Datenmanipulation auf der SAMPLE-Datenbank Um eine Tabelle mit dem Schema einer bereits vorhandenen Tabelle zu erstellen, kann das Schlüsselwort LIKE verwendet werden: CREATE TABLE <new-table> LIKE <old-table> Die neue Tabelle besitzt dieselben Spaltenbezeichnungen und -definitionen wie die Quelltabelle, jedoch keine Daten. 1. Verbinden Sie sich mit der SAMPLE-Datenbank! Erstellen Sie eine leere Tabelle MYEMPLOYEE mit dem Schema von EMPLOYEE! 3 Professur für Datenbanken Fakultät Informatik Institut für Systemarchitektur 2. Füllen Sie die Tabelle MYEMPLOYEE mithilfe eines einzigen SQL-Befehls, indem Sie alle Angestellten mit dem Job ’MANAGER’ aus der Tabelle EMPLOYEE in MYEMPLOYEE einfügen! Hinweis: Informieren Sie sich gegebenenfalls in der DB2-Referenz, wie Daten aus einer Tabelle in eine andere übernehmen werden können (Stichwort: INSERT-Anweisung). 3. Sie sind Mitarbeiter der Personalabteilung und sollen für folgende Angestellte die Gehälter ändern: THEODORE SPENSER: 95000,00 JOHN GEYER: 78000,00 MICHAEL THOMPSON: 82000,00 IRVING STERN: 84000,00 Ändern Sie die betreffenden Daten in der Tabelle MYEMPLOYEE! 4. Der Betriebsrat hat sein Veto eingelegt: Mitarbeitergehälter dürfen sich nicht vermindern. Vereinigen Sie die beiden Relationen EMPLOYEE und MYEMPLOYEE in MYEMPLOYEE, so dass die fehlenden Mitarbeiter hinzugefügt werden. Bei bereits vorhandenen Mitarbeitern soll das höhere von beiden Gehältern übernommen werden. Führen Sie das Szenario einmal mit MERGE und einmal mit jeweils genau einer INSERT- und UPDATE-Anweisung durch. 4