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