Universität Konstanz

Werbung
Universität Konstanz
Lehrstuhl DBIS
Prof. Marc H. Scholl / A. Seifert
Übungen zur Vorlesung
Informationssysteme
Wintersemester 01/02
3. Übungsblatt
Kontrolltermin: KW 46
Hinweis: Alle aktuellen Informationen dieser Veranstaltung sowie die ps/pdf-Version des
Übungsblattes können Sie auch im Web unter
http://www.inf.uni-konstanz.de/dbis/teaching/ws0102/informationssysteme abrufen.
1. Konfiguration Ihrer Systemumgebung für die Benutzung von SQL*Plus
In den nächsten Übungen wird das Datenbanktool SQL*Plus zum Einsatz kommen.
Voraussetzung für die Nutzung dieses Tools ist das richtige Setzen von diversen
Systemumgebungsvariablen. Wie diese zusetzen sind, beschreibt die Anleitung zu
SQL*Plus unter http://www.inf.unikonstanz.de/dbis/teaching/ws0102/informationssysteme/ (Rubrik
Dokumentation).
Nehmen Sie diese Anleitung als Basis und führen Sie die Anpassung Ihrer UNIXUmgebung durch.
Hinweis: Das Starten von SQL*Plus können Sie erst durchführen, wenn Sie einen
Datenbankaccount besitzen. Dieser wurde letzte Woche automatisch für alle
Studenten erzeugt, die sich über das Accounttool für diese Veranstaltung registriert
haben. Alle anderen Benutzer können nicht mit Oracle arbeiten!
2. Einfache Ausdrücke der Sprache SQL:
Punkte 5
Geben Sie für die folgenden Relationen-Algebraausdrücke jeweils einen
äquivalenten SQL-Ausdruck an (Papierübung):
a)
b)
c)
d)
e)
π{L#, KM} (σStadt='London' (Lieferanten))
π{T#, Farbe} (σGewicht<15 ∨ Gewicht>17 (Teile))
π{T#, LagerIn} (σGewicht<15 ∨ Gewicht>17 (Teile |×| Liefert))
π{T#, Anzahl} (σStadt='Paris' (Lieferanten) |×| Liefert)
π{Farbe} (σStadt='Paris' (Lieferanten) |×| Liefert |×| Teile)
3. Einfache und geschachtelte SQL-Anfragen I:
Punkte 6
Verschaffen Sie sich mit dem Befehl describe Schema-Informationen über die
Tabellen KURS, TEILNEHMER, KURSLEITER, ANGEBOT, NIMMT_TEIL,
FUEHRT_DURCH, VORAUSS der Beispiel-Datenbank KursDB.
Formulieren Sie die folgenden Anfragen zur Beispiel-Datenbank KursDB und
geben Sie die Ergebnisse der Anfragen an (mit Hilfe von SQL*PLUS ).
1
a) Welche Teilnehmer nehmen an solchen Kursen teil, die auch in deren
Wohnort angeboten werden?
b) Welche Teilnehmer nehmen an den Kursen 'Grundlagen I' oder
'Grundlagen II' teil (Ausgabe: Teilnehmer.*)?
c) Welche Teilnehmer nehmen nur an den Kursen 'Grundlagen I' oder
'Grundlagen II' teil (Ausgabe: Teilnehmer.*)?
d) Welche Teilnehmer nehmen an allen Kursen, die nicht 'Grundlagen I'
oder 'Grundlagen II' sind, teil (Ausgabe: Teilnehmer.*)?
Hinweis: Die Ergebnisse der folgenden Aufgaben können Sie in SQL*Plus mit dem Befehlspaar
SPOOL filename, SPOOL OFF in einer Datei mitprotokollieren.
4.
Einfache und geschachtelte SQL-Anfragen II:
Punkte 10
Betrachten Sie folgende Relationen als gegeben:
Student
SNummer
SName
Hauptfach
Semester
Veranstaltung
VName
Beginnt_um
Raum
FID
Besucht
SNummer
VName
Fakultät
FID
FName
SAlter
Die SQL-Statements, die diese Tabellen generieren und mit Werten fühlen, finden
Sie in der Datei ~seifert/oracleuebung/studentdb.sql. Kopieren Sie diese
Datei in Ihr Arbeitsverzeichnis und führen Sie es unter SQL*PLUS aus.
Formulieren Sie folgende Datenbankanfragen in SQL Syntax. Geben Sie dabei –
wenn möglich – sowohl die geschachtelte als auch die ungeschachtelte
Anfragevariante an. Schreiben Sie Ihre SQL Anfragen so, dass keine Duplikate im
Anfrageergebnis vorkommen:
a) Gesucht werden die Namen aller Studenten im 5. Semester, die
Lehrveranstaltungen der Fakultät „Informatik“ besuchen.
b) Gesucht ist das Alter des ältesten Studenten, der im Hauptfach „Biologie“
eingeschrieben ist und einen Kurs der Fakultät „Informatik“ besucht.
c) Finde die Bezeichnung aller Kurse (Veranstaltungen), die entweder im Raum
„D301“ stattfinden oder an denen vier oder mehr Studenten teilnehmen.
d) Finde die Namen aller Studenten, die an zwei Kursen teilnehmen, die zur
gleichen Zeit stattfinden (beginnen). (Hinweis: Es wird angenommen, dass
sich die Einträge in der DB auf einen Wochentag beziehen.)
2
e) Gesucht werden die Fakultäten, die weniger als fünf Studenten in einem
Ihrer angebotenen Kurse haben.
f) Gib das Semester und das Durchschnittsalter aller Studenten des jeweiligen
Semesters aus.
g) Gib das Semester und das Durchschnittsalter aller Studenten des jeweiligen
Semesters aus, ohne die Studenten im 5. Semester zu berücksichtigen.
h) Gesucht werden die Namen aller Studenten, die alle angebotenen
Kurse/Veranstaltungen besuchen.
i) Gesucht werden die Namen aller Studenten, die keinen angebotenen Kurs
besuchen.
j) Untersuchen Sie, ob mehrmals ein Student mit dem gleichen Namen in die
Datenbank aufgenommen wurde.
5. Einfügen von Datensätzen:
Punkte 4
a) Für die folgende Aufgabe werden die Tabellen Abteilung, Artikel,
bietet_an, Lieferant und liefert sowie sechs Constraints
(FKist_manager_von, Fkarbeitet_in, Fkbie_Art, Fklie_Lie und
FK_lie_Art) benötigt.
Die DDL-Statements, die diese Tabellen generieren, finden Sie in der Datei
~seifert/oracleuebung/liefert.sql. Diese Datei können Sie in Ihr
Arbeitsverzeichnis kopieren und unter SQL*PLUS ausführen lassen.
Sie können mit dem SQL*PLUS Befehl desc Tabellenname (desc ist die
Abkürzung für describe) feststellen, ob eine Tabelle schon existiert oder
nicht. Um die Constraints zu finden, können Sie die folgende SQL-Anfrage
an ORACLE stellen:
SELECT TABLE_NAME, CONSTRAINT_NAME FROM USER_CONSTRAINTS;
b) Versuchen Sie einen Datensatz in die Tabelle Angestellte einzufügen. Zum
Beispiel:
INSERT INTO Angestellte VALUES ('P101', 'Schmidt, H.',
'Ring Str. 3, 78234 Konstanz', 'Abt-01');
Gibt es dabei ein Problem? Warum?
c) Versuchen Sie folgenden Datensatz in die Tabelle Angestellte einzufügen.
INSERT INTO Angestellte VALUES ('P101', 'Schmidt, H.',
'Ring Str. 3, 78234 Konstanz', NULL);
Ist dies Problemlos möglich? Warum?
d) Schalten Sie die Integritätsbedingung Fkarbeit_in aus, indem Sie das
folgende SQL-Kommando eingeben:
ALTER Table Angestellte DISABLE CONSTRAINT Fkarbeit_in;
3
Versuchen Sie nochmals den ersten Datensatz in die Tabelle Angestellte
einzufügen.
e) Versuchen Sie die Integritätsbedingung Fkarbeit_in mit
ALTER Table Angestellte ENABLE CONSTRAINT Fkarbeit_in;
wieder einzuschalten. Was passiert dabei?
4
Herunterladen