Datenbanksysteme I Aufgabenblatt 4: SQL

Ähnliche Dokumente
Aufgabenblatt 4 SQL. Vorbereitungen für das Aufgabenblatt: IMDB in DB2 laden

Aufgabenblatt 3 SQL. Vorbereitungen für Aufgabenblätter 3 und 4: IMDb in DB2 laden

insert, update, delete Definition des Datenbankschemas select, from, where Rechteverwaltung, Transaktionskontrolle

Übersicht der wichtigsten MySQL-Befehle

Anwendungsentwicklung Datenbanken SQL. Stefan Goebel

ISU 1. Ue_08/02_Datenbanken/SQL. 08 Datenbanken. Übung. SQL Einführung. Eckbert Jankowski.

Wiederholung VU Datenmodellierung

Einführung in SQL. Sprachumfang: Indizes. Datensätzen. Zugriffsrechten

Introduction to Data and Knowledge Engineering. 6. Übung SQL

SQL. Ziele. Grundlagen von SQL. Beziehung zur relationalen Algebra SELECT, FROM, WHERE. Joins ORDER BY. Aggregatfunktionen. dbis.

Oracle 10g Einführung

Lösungen der Übungsaufgaben von Kapitel 10

MySQL-Befehle. In diesem Tutorial möchte ich eine kurze Übersicht der wichtigsten Befehle von MySQL geben.

Abfragen (Queries, Subqueries)

Mengenvergleiche: Alle Konten außer das, mit dem größten Saldo.

SQL für Trolle. mag.e. Dienstag, Qt-Seminar

Kapitel 3: Datenbanksysteme

Grundlagen Datenbanken Sommersemester 2008

Datenmodelle und Datenbanken 2

TU München, Fakultät für Informatik Lehrstuhl III: Datenbanksysteme Prof. Alfons Kemper, Ph.D.

TU München, Fakultät für Informatik Lehrstuhl III: Datenbanksysteme Prof. Alfons Kemper, Ph.D.

Datenbanksysteme Teil 6 MySQL DML Die SELECT-Anweisung. Stefan Maihack Dipl. Ing. (FH) Datum:

Garten - Daten Bank. - survival pack -

ACCESS SQL ACCESS SQL

Übungen zu Datenbanksysteme

SELECT dient dazu, aus einer vorhandenen Datenbank bestimmte Spalten und Zeilen auszugeben es handelt sich also um eine Auswahlabfrage.

3 Query Language (QL) Einfachste Abfrage Ordnen Gruppieren... 7

Es geht also im die SQL Data Manipulation Language.

SQL als Zugriffssprache

5. Übungsblatt (Testatwoche: Mai 2010)

SQL structured query language

Datenbanken. Zusammenfassung. Datenbanksysteme

dbis Praktikum DBS I SQL Teil 2

SQL. strukturierte Datenbankabfragesprache eine Datenbanksprache zur. Structured Query Language:

SQL 2. Ziele. Fortgeschrittene SQL-Konstrukte. Aggregatfunktionen revisited. Subqueries. Korrelierte Subqueries

Kapitel 6. Datenmalipulation (DML) d. h. insert, update, delete, select im Relationenmodell (in Oracle)

TU München, Fakultät für Informatik Lehrstuhl III: Datenbanksysteme Prof. Alfons Kemper, Ph.D.

Datenbanken SQL Einführung Datenbank in MySQL einrichten mit PhpMyAdmin

SQL: Weitere Funktionen

SQL Teil 2. SELECT Projektion Selektion Vereinigung, Schnitt, Differenz Verbund Komplexer SELECT-Ausdruck

DATENBANKEN SQL UND SQLITE VON MELANIE SCHLIEBENER

Datenmanagement I SoSe 2006 Aufgabenblatt 4

Datenbank und Tabelle mit SQL erstellen

TU München, Fakultät für Informatik Lehrstuhl III: Datenbanksysteme Prof. Alfons Kemper, Ph.D.

Kapitel 2: Einstieg in SQL

GROUP BY, HAVING und Sichten

Übung 1: SQL. Übungen finden bei Bedarf anstelle der Vorlesungen statt Fragen? Vorlesung Datenbankeinsatz WS 04/05 IPD

Übungsaufgaben mit Lösungen

Rückblick. SQL bietet viele Möglichkeiten zur Anfrageformulierung

SQL,Teil 2: SELECT. W. Spiegel. Übersicht SELECT. Mehrfache Werte vermeiden: SELECT DISTINCT. Ausgabe ordnen: ORDER BY. Projektion.

select DISTINCT Name, ort From Verkauf; selektiert Name und Ort von Tabelle Verkauf - DISTINCT steht dass keine Zeile mehrfach vorkommt

Einführung in SQL. 1. Grundlagen SQL. Structured Query Language. Viele Dialekte. Unterteilung: i. DDL (Data Definition Language)

Datenbanken Unit 4: Das Relationale Modell & Datenintegrität

Bibliografische Informationen digitalisiert durch

TU München, Fakultät für Informatik Lehrstuhl III: Datenbanksysteme Prof. Alfons Kemper, Ph.D.

SQL. SQL SELECT Anweisung SQL-SELECT SQL-SELECT

IV. Datenbankmanagement

SQL Tutorial. SQL - Tutorial SS 06. Hubert Baumgartner. INSO - Industrial Software

Kommunikation und Datenhaltung. Übungsblatt D1. (Relationale Algebra & SQL)

Universität Augsburg, Institut für Informatik WS 2007/2008 Prof. Dr. W. Kießling 18. Jan Dr. A. Huhn, M. Endres, T. Preisinger Übungsblatt 12

105.3 SQL-Datenverwaltung

Microsoft Access 2010 SQL nutzen

Dieser Foliensatz darf frei verwendet werden unter der Bedingung, dass diese Titelfolie nicht entfernt wird.

SQL-Befehlsliste. Vereinbarung über die Schreibweise

Kapitel 5: Sortieren, Gruppieren und Views in SQL

Datenbanksysteme I. Klausur zum Praktikum. Mehrere Professoren prüfen mit genau einem Beisitzer genau einen Studenten.

WS 2010/11 Datenbanksysteme Fr 15:15 16:45 R Vorlesung #3. SQL (Teil 1)

Daten-Definitionssprache (DDL) Bisher: Realwelt -> ERM -> Relationen-Modell -> normalisiertes Relationen-Modell. Jetzt: -> Formulierung in DDL

SQL und MySQL. Kristian Köhntopp

A Datendenition in SQL ( Punkte)

Klausur zur Vorlesung Datenbanksysteme I

Informatik 12 Datenbanken SQL-Einführung

Aggregatfunktionen in der Relationenalgebra?

Inhaltsverzeichnis. Einleitung

Finalklausur zur Vorlesung Datenbanksysteme I Wintersemester 2003/2004 Prüfer: Prof. R. Bayer, Ph.D. Datum: Zeit: 16.

Eine völlig andere Form Abfragen zu erstellen ist, sie mit Hilfe der Datenbankabfragesprache SQL zu gestalten.

Klausur Datenbanken Wintersemester 2004/2005 Prof. Dr. Wolfgang May 10. Februar 2004, Uhr Bearbeitungszeit: 90 Minuten

Vielen Dank an Dennis Riehle für die Bereitstellung dieser Folien

SQL SQL. SQL = Structured Query Language (SEQUEL) IBM San Jose Research Laboratory SYSTEM R. Grundlagen der Datenbanksysteme I

Übungen zur Vorlesung Informationssysteme - Blatt 5

Michaela Weiss 01. April Lerneinheit 4: Relationale Datenbanken am Beispiel von MySQL

Seminar 2. SQL - DML(Data Manipulation Language) und. DDL(Data Definition Language) Befehle.

Übung Datenbanken in der Praxis. Anfragen an Datenbanken mit SQL

Die Anweisung create table

Aufgabensammlung SQL SW4 1. Einfache Anfragen

5.8 Bibliotheken für PostgreSQL

Auf einen Blick. Abfrage und Bearbeitung. Erstellen einer Datenbank. Komplexe Abfragen. Vorwort... 13

Tabellen verknüpfen: Joins

Wirtschaftsinformatik 7a: Datenbanken. Hochschule für Wirtschaft und Recht SS 16 Dozent: R. Witte

Vorlesung Informationssysteme

Welche Kunden haben die gleiche Ware bestellt? select distinct a1.name, a2.name from Auftrag a1, Auftrag a2 where a1.ware = a2.ware.

Transkript:

Hinweise: Datenbanksysteme I Aufgabenblatt 4: SQL Abgabetermin: Montag, 08.01.07, 13:30 (vor der Vorlesung) Format: Auf Papier im Fach Datenbanksysteme I im Foyer oder per E-Mail an dbs1@hpi.uni-potsdam.de und Brigitte.Hobro@hpi.uni-potsdam.de im CC (PDF oder DOC) Bearbeitung: Allein oder in Zweiergruppen Bitte verwenden Sie für jede Aufgabe ein separates Blatt, welches Sie mit Ihren Namen und Matrikelnummern beschriften! Hinweis zum Starten des DBMS auf den Poolraumrechnern Wegen fehlender Adminrechte müssen die IBM DB2-Services über ein von den Admins geschriebenes Programm gestartet werden. Sie nden es unter: Start/Programs/IBM DB2/DB2COPY1 (default)/ General Administration Tools/db2_services_ctrl.exe Wenn Sie Services starten angeklickt und mit OK bestätigt haben, minimiert sich das Programm in die Taskleiste sobald DB2 gestartet ist. Aufgabe 1: Datenbank einrichten [ohne Bewertung] Im Verzeichnis R:/DBSI_naumann/ nden Sie 5 Dateien, die Daten für eine Datenbank enthalten. Erzeugen Sie im Poolraum oder zu Hause eine neue DB2 Datenbank mit dem Namen DB < matrikelnummer >. Denieren Sie die Relationenschemata und laden Sie die Daten in die Datenbank. Der Name der Relationen sollte den Namen der Dateien entsprechen. Die Attributnamen sind jeweils in der ersten Zeile vermerkt. Wählen Sie geeignete Datentypen selbst aus. Sie benötigen die Datenbank zur Lösung der folgenden Aufgaben. Wichtig: Löschen Sie die DB sobald sie den Arbeitsplatz verlassen (DROP DATABASE datenbankname). Ein entsprechendes Skript vermeidet doppelte Arbeit. Aufgabe 2: Text SQL [3+2+4+3+3+4+4+5 = 28 Punkte] Nennen Sie für jede der folgenden natürlichsprachlichen Fragen eine geeignete SQL-Anfrage. Begründen Sie, falls das nicht möglich ist. Führen Sie die Anfrage auf den Daten aus Aufgabe 1 aus und beantworten Sie die jeweils in der Teilaufgabe gestellte Frage. Hinweise: Benennen Sie aggregierte Spalten so um, dass sinnvolle Spaltennamen ausgegeben werden. 1

Einige der Tabellen enthalten eine Spalte mit dem Namen ID. Hierbei handelt es sich jedoch um Zeilennummern und nicht um Werte, die etwa einen Film oder eine Person eindeutig identizieren müssen. Treen Sie soweit nötig geeignete Annahmen bezüglich des DB-Schemas. a) Geben Sie alle Genres aus, die keine zugehörigen Einträge in der Filmtabelle haben (nach Genrenamen sortiert)! Jedes Genre soll dabei nur einmal ausgegeben werden. b) Wieviele Schauspielerinnen gibt es? c) Wieviele Schauspieler gibt es, die in mindestens einem Film mitgemacht haben, der einen entsprechenden Eintrag in der Filmtabelle hat? Formulieren Sie die Anfrage einmal mit und einmal ohne einer Subanfrage. d) Geben Sie die Titel aller Filmpaare aus, in denen mindestens ein gemeinsamer Schauspieler mitspielt! Sortieren Sie das Ergebnis nach dem Titel des zweiten Films. e) Geben Sie alle Filme (Titel, Jahr) aus, deren Titel mit Tatort beginnen, und zusätzlich wie viele Schauspielerinnen an diesen Folgen jeweils beteiligt sind. f) Geben Sie die Schauspieler und Produzenten an, die am Film Adventures of Lano & Woodley, The beteiligt waren, und zwar einmal nach Mengen- und ein weiteres Mal nach Multimengensemantik. (Hinweis: UNION benutzen) g) Erstellen Sie eine Top-3 Liste der Schauspieler und Schauspielerinnen (Name) mit den meisten Filmen! Sortieren Sie entsprechend. Hinweis: Recherchieren Sie hierzu die FETCH FIRST Klausel, z.b. bei http://www.ibm.com/software/data/db2/udb/ support/manualsv9.html, SQL Reference. h) Nennen Sie für das höchste vorkommende Jahr die Jahreszahl und die entsprechende Anzahl der Filme, die in diesen Jahren veröentlicht wurden. Die gleichen Informationen sollen in derselben Anfrage auch für das Jahr mit den meisten Filmen ausgegeben werden. 2

Aufgabe 3: SQL Text [2+3+6 = 11 Punkte] Geben Sie natürlichsprachlich wieder, wonach die folgenden SQL-Queries suchen. a) und b) verwenden folgendes Schema, das zum Speichern von Vertriebsdaten dient. kunden (kundennr, vorname, familienname, alter) produkte (id, name, preis) regionen (id, name) verkaeufe (id, kundennr, produkt_id, region_id, anzahl, datum) a) SELECT p.id, p.name, max(v.anzahl) FROM produkte AS p INNER JOIN verkaeufe AS v ON p.id = v.produkt_id GROUP BY p.id, p.name ORDER BY p.name b) SELECT r.name, k.alter, COUNT(*) INNER JOIN produkte AS p ON v.produkt_id = p.id WHERE (r.name = 'Asien' OR r.name = 'Europa') AND p.name LIKE 'Nintendo Wii Controller' GROUP BY r.id, r.name, k.alter ORDER BY r.name ASC, k.alter ASC 3

c) Hinweis: Der Operator TABLESAMPLE BERNOULLI (prozent) ist IBM UDB-spezisch und gibt zufällig ausgewählte Tupel der Ergebnismenge zurück. SELECT * FROM imdb.actor AS a WHERE a.movie_id IN ( SELECT DISTINCT m.mid FROM imdb.movie AS m TABLESAMPLE BERNOULLI (0.10) INNER JOIN imdb.language AS l ON l.movie_id = m.mid INNER JOIN imdb.genres AS g ON g.movie_id = m.mid WHERE l.language LIKE '%German%' AND g.genre NOT LIKE '%Adult%' UNION SELECT a.movie_id AS mid FROM imdb.actor AS a TABLESAMPLE BERNOULLI (0.01) INNER JOIN imdb.producers AS p ON p.name = a.name WHERE a.movie_id = p.movie_id ) UNION SELECT * FROM imdb.actor AS a TABLESAMPLE BERNOULLI(0.0002) Werden Tupel doppelt ausgegeben? Begründen Sie! 4

Aufgabe 4: Relationale Algebra SQL [2+3+4 = 9 Punkte] Formulieren Sie die folgenden drei Anfragen der relationalen Algebra als SQL-Anfragen! Verwendetes Schema: Stadt (StadtName, LandID, p1950, p2000, p2015) Land (LandID, Name, Kontinent, Hauptstadt, Bevoelkerung) Geographie (LandID, Landäche, Wasseräche, Küstenlänge, urbar) a) π Name,Kontinent (σ Bevoelkerung>200.000.000 (Land)) b) π Name (σ (Bevoelkerung<2 p1950) (Bevoelkerung<4 p2000) (σ StadtName=Hauptstadt (Stadt Land))) c) π Name (Land Geographie) π Name (Land (σ G1.urbar<G2.urbar (ρ G1 (Geographie) π urbar (ρ G2 (Geographie))))) Aufgabe 5: Sichten [3+3 = 6 Punkte] Schreiben Sie die Anfrage b) aus Aufgabe 3 unter Verwendung der jeweiligen Sicht um. Falls das nicht möglich sein sollte bzw. nicht sinnvoll ist, begründen Sie dies! a) CREATE VIEW Asienverkaeufe AS SELECT r.name, k.alter AS alter, v.produkt_id AS produkt_id, COUNT(*) AS anzahlverkaeufe WHERE r.name = 'Asien' GROUP BY r.id, r.name v.produkt_id ORDER BY r.name ASC, k.alter ASC b) CREATE VIEW WiiVerkaeufe AS SELECT k.alter AS alter, v.region_id AS region_id, p.name AS produktname, COUNT(*) AS anzahlverkaeufe INNER JOIN produkte AS p ON v.produkt_id = p.id WHERE p.name LIKE 'Nintendo Wii%' GROUP BY v.region_id, k.alter, p.id, p.name ORDER BY k.alter ASC 5