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

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

Übersicht der wichtigsten MySQL-Befehle

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

ACCESS SQL ACCESS SQL

Oracle 10g Einführung

SQL: Abfragen für einzelne Tabellen

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

Datenbanken. Zusammenfassung. Datenbanksysteme

Lösungen der Übungsaufgaben von Kapitel 10

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

SQL und MySQL. Kristian Köhntopp

Grundlagen von SQL. Informatik 2, FS18. Dr. Hermann Lehner (Material von Dr. Markus Dahinden) Departement Informatik, ETH Zürich

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

5.8 Bibliotheken für PostgreSQL

dbis Praktikum DBS I SQL Teil 2

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

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

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

SQL Data Manipulation Language (DML) und Query Language (QL)

Anwendungsentwicklung Datenbanken SQL. Stefan Goebel

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

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

Datenmanagement I SoSe 2006 Aufgabenblatt 4

Datenbanksysteme 2013

1 Hartmann Anna Cäcilienstr Köln (0221) Behrens-Hoffmeister Heidi Lindenweg Köln (0221)

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

SQL-Befehlsliste. Vereinbarung über die Schreibweise

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

Kapitel 8: Datenintegrität

Semantische Integrität (auch: Konsistenz) der in einer Datenbank gespeicherten Daten als wichtige Anforderung

A Datendenition in SQL ( Punkte)

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

Labor 3 - Datenbank mit MySQL

SQL structured query language

Foreign Keys. MySQL 4, 5. Kapitel 16: Fremdschlüssel. Marcel Noe

SQL-Befehlsliste. Vereinbarung über die Schreibweise

Web-Technologien. Prof. Dr. rer. nat. Nane Kratzke SQL. Praktische Informatik und betriebliche Informationssysteme

SQL-DDL und SQL-Anfragen. CREATE TABLE Kategorie (Bezeichnung VARCHAR(15) NOT NULL PRIMARY KEY, Klassifikationskriterium VARCHAR(100) NOT NULL )

Testklausur 1 Übungsaufgaben aus alten Datenbanken 1 Klausuren zum Data Science-Synchronisationsmodul Datenbanken WS 2016/17

Datenmodelle und Datenbanken 2

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

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

SQL. SQL: Structured Query Language. Früherer Name: SEQUEL. Standardisierte Anfragesprache für relationale DBMS: SQL-89, SQL-92, SQL-99

Tipps & Tricks: Umkodieren von ICD-9-Daten Daten zu ICD-10 in SAS mittels PROC SQL

5.3 Datenänderung/-zugriff mit SQL (DML)

Wiederholung VU Datenmodellierung

Grundlagen von Datenbanken. Referentielle Aktionen, Sichten, Serialisierbarkeit und Locking

Abfragen (Queries, Subqueries)

Datenbank und Tabelle mit SQL erstellen

ARBEITSBLATT ZUR SQL-BEFEHLEN

(Von der Nähe zur Distanz zum User geordnet)

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

SQL: statische Integrität

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

Microsoft Access 2010 SQL nutzen

Metadaten oder Metainformationen sind Daten, die Informationen über Merkmale anderer Daten enthalten, aber nicht diese Daten selbst (Wikipedia)

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

GROUP BY, HAVING und Sichten

Übung Datenbanken in der Praxis. Datenmodifikation mit SQL

DBS ::: SERIE 5. Join Right Semi- Join Left Semi-Join Projektion Selektion Fremdschlüssel. Kreuzprodukt

Übung zu Datenbanken. Musterlösung zur 1. Probeklausur. Dipl.-Inform. Sascha Kriewel

Datenbank- und Informationssysteme. Lösungsvorschläge zu Übungsblatt 2. Sommersemester CREATE DOMAIN KennzeichenDomain AS VARCHAR(9);

Datenbank- und Informationssysteme - Übungsblatt 6 -

Datenintegrität. Integitätsbedingungen Schlüssel Beziehungskardinalitäten Attributdomänen Inklusion bei Generalisierung

Datenbanken: Datenintegrität.

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

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

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

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

Hochschule Karlsruhe Technik und Wirtschaft Anhänge: Fakultät für Informatik und Wirtschaftsinformatik SS 2013 Prof. Schmidt.

Die Anweisung create table

Datenbanksysteme I Integrität und Trigger Felix Naumann

SET SQL_MODE="NO_AUTO_VALUE_ON_ZERO";

MNR NAME VORNAME STRASSE PLZ ORT TELEFON

Konstante Relationen

Integritätsbedingungen / Normalformen- Beispiel: Kontoführung

Übung PL/SQL Trigger Lösungen

Informatik für Ökonomen II: Datenintegrität. Prof. Dr. Carl-Christian Kanne

SQL: Weitere Funktionen

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

7. Datenbank-Zugriff. Vorlesung und Übung Dr. Peter Pfahler Institut für Informatik Universität Paderborn. Zum Beispiel aus PHP-Skripten: Client 7-2

Referentielle Integrität

Referenzielle Integrität SQL

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

Kapitel DB:VI (Fortsetzung)

7. Datenbank-Zugriff. Vorlesung und Übung Dr. Peter Pfahler Institut für Informatik Universität Paderborn. Zum Beispiel aus PHP-Skripten: Client 7-2

DATENBANKEN SQL UND SQLITE VON MELANIE SCHLIEBENER

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

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

Musterlösung zur Finalklausur Datenbanksysteme am

Übungsaufgaben mit Lösungen

Beispiel zur referentiellen Integrität

Es geht also im die SQL Data Manipulation Language.

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

Datenbanktechnologie mit praktischen Übungen in MySQL und PHP

Universität Augsburg, Institut für Informatik WS 2006/2007 Dr. W.-T. Balke 27. Nov M. Endres, A. Huhn, T. Preisinger Lösungsblatt 5

Erzeugen von Constraints

Transkript:

Introduction to Data and Knowledge Engineering 6. Übung SQL

Aufgabe 6.1 Datenbank-Schema Buch PK FK Autor PK FK ISBN Titel Preis x ID Vorname Nachname x BuchAutor ISBN ID PK x x FK Buch.ISBN Autor.ID FB Informatik DVS Arthur Herzog, LW 2

Aufgabe 6.1 Datenbank-Schema Bibliothek Name Ort Telefon PK x FK Exemplar Exemplarnr ISBN Bibliothek Leser PK x x FK Buch.ISBN Bibliothek.Name Leser.ID Leser PK FK ID Vorname Nachname x FB Informatik DVS Arthur Herzog, LW 3

Aufgabe 6.1 a) CREATE TABLE Buch ( ISBN CHAR(10), Titel VARCHAR(50), Preis DECIMAL(10, 2), PRIMARY KEY (ISBN) ); CREATE TABLE Autor ( ID INT, Vorname VARCHAR(30), Nachname VARCHAR(30), PRIMARY KEY (ID) ); CREATE TABLE BuchAutor ( ISBN CHAR(10), ID INT, PRIMARY KEY (ISBN, ID), FOREIGN KEY (ISBN) REFERENCES Buch (ISBN), FOREIGN KEY (ID) REFERENCES Autor (ID) ); FB Informatik DVS Arthur Herzog, LW 4

Aufgabe 6.1 a) CREATE TABLE Bibliothek ( Name VARCHAR(30), Ort VARCHAR(30), Telefon VARCHAR(20), PRIMARY KEY (Name) ); CREATE TABLE Exemplar ( Exemplarnr INT, ISBN CHAR(10), Bibliothek VARCHAR(30), Leser INT, PRIMARY KEY (Exemplarnr, ISBN), FOREIGN KEY (ISBN) REFERENCES Buch(ISBN), FOREIGN KEY (Bibliothek) REFERENCES Bibliothek(Name), FOREIGN KEY (Leser) REFERENCES Leser(ID) ); CREATE TABLE Leser ( ID INT, Vorname VARCHAR(30), Nachname VARCHAR(30), PRIMARY KEY (ID) ); FB Informatik DVS Arthur Herzog, LW 5

Aufgabe 6.1 b) Löschen Sie das Attribut Ort aus der Tabelle Bibliothek und fügen Sie es anschließend wieder ein. ALTER TABLE Bibliothek DROP COLUMN Ort; ALTER TABLE Bibliothek ADD Ort varchar(30); FB Informatik DVS Arthur Herzog, LW 6

Aufgabe 6.1 c) Welches Problem tritt auf, wenn Sie versuchen die Tabelle Autor zu löschen? Wie können sie das Problem beheben? Normalerweise würde man die Tabelle wie folgt löschen: DROP TABLE Autor; Dies funktioniert aber nicht, da ein Primärschlüsselattribut dieser Relation durch einen Fremdschlüssel in BuchAutor referenziert wird. Folgende Anfrage dagegen hat Erfolg: DROP TABLE Autor CASCADE; Dabei ist aber zu beachten, dass durch obigen Befehl nicht das Attribut ID aus BuchAutor oder gar die ganze Tabelle BuchAutor gelöscht wird, sondern BuchAutor.ID einfach kein Fremdschlüssel mehr ist, sondern ein normales Attribut. Es wird also nur das Constraint FOREIGN KEY auf BuchAutor.ID gelöscht. FB Informatik DVS Arthur Herzog, LW 7

SQL Ausprobieren postgresql postgresql-8.4 http://www.postgresql.de/ http://www.postgresql.org/ user und datenbank anlegen: http://www.cyberciti.biz/faq/howto-add-postgresql-user-account/ los gehts: http://user.it.uu.se/~rsomla/db2001/tips.html FB Informatik DVS Arthur Herzog, LW 8

a)-d) Geben Sie die Vor- und Nachnamen aller Leser aus. SELECT Vorname, Nachname FROM Leser; Finden Sie den Titel des Buchs mit der ISBN "0201542633. SELECT Titel FROM Buch WHERE ISBN='0201542633'; Finden Sie den Titel des Buchs mit der ISBN "0201542633. SELECT Nachname FROM Autor WHERE Nachname LIKE 'S%'; Finden Sie die Vor- und Nachnamen der Autoren des Buchtitels Objektdatenbanken" SELECT Vorname, Nachname FROM Autor A, BuchAutor BA, Buch B WHERE A.ID=BA.ID AND BA.ISBN=B.ISBN AND B.Titel='Objektdatenbanken; FB Informatik DVS Arthur Herzog, LW 9

e) Geben Sie die Exemplarnr und die ISBN aller Exemplare aus und, falls das Exemplar ausgeliehen ist, den Nachnamen des Lesers, der es ausgeliehen hat. SELECT E.Exemplarnr, E.ISBN, L.Nachname FROM Exemplar E LEFT OUTER JOIN Leser L ON E.Leser = L.ID; Hinweis: Der LEFT OUTER JOIN bewirkt, das alle Tupel der linken Seite des Joins (also alle Exemplare) in die Ergebnismenge gelangen, auch wenn sich kein passendes Tupel auf der rechten Seite findet (also in diesem Fall kein Leser, der das Exemplar ausgeliehen hat). FB Informatik DVS Arthur Herzog, LW 10

f) Finden Sie die IDs aller Leser, die aus der Informatik-Bibliothek Exemplare geliehen haben, jedoch nicht aus der Mathematik-Bibliothek. SELECT DISTINCT Leser FROM Exemplar WHERE Bibliothek ='Informatik AND NOT Leser IN (SELECT Leser FROM Exemplar WHERE Bibliothek='Mathematik AND Leser IS NOT NULL); Hinweis: Die Klausel "Leser IS NOT NULL" ist notwendig, damit in der verschachtelten Anfrage keine NULL-Werte auftauchen. Beispielsweise liefert die Frage, ob der Leser mit der ID "2" in der Tabelle NICHT enthalten ist, ein negatives Ergebnis. Das ist offensichtlich falsch, da der Leser "2" tatsächlich nicht darin vorkommt. Der in der Tabelle enthaltene NULL-Wert verfälscht das Ergebnis aber, so dass man ihn vorher eliminieren muss. Dieses Beispiel zeigt, dass NULL-Werte schwer auffindbare Fehler produzieren können und daher vermieden werden sollten. FB Informatik DVS Arthur Herzog, LW 11

g)-j) Was kostet das billigste Buch? SELECT MIN(Preis)FROM Buch; Wie lautet der Titel des teuersten Buchs und was kostet es? SELECT Titel, Preis FROM Buch WHERE Preis = ( SELECT MAX(Preis) FROM Buch ); Welchen Wert hat der gesamte Exemplar-Bestand? SELECT SUM(Preis) FROM Buch B, Exemplar E WHERE B.ISBN=E.ISBN; Was kostet ein Exemplar der Informatikbibliothek im Durchschnitt? SELECT AVG(Preis) FROM Buch B, Exemplar E WHERE B.ISBN=E.ISBN AND E.Bibliothek='Informatik'; FB Informatik DVS Arthur Herzog, LW 12

k)-m) Formulieren Sie die folgende Anfrage ohne die Verwendung von Aggregationsfunktionen: Wie lautet der Titel des teuersten Buchs und was kostet es? SELECT Titel, Preis FROM Buch WHERE Preis >= ALL (SELECT Preis FROM Buch WHERE Preis IS NOT NULL); Wie viele Exemplare umfasst der Gesamtbestand der Bibliotheken? SELECT COUNT(*) FROM Exemplar; Wie viele Autoren sind in der Informatikbibliothek vertreten? SELECT COUNT(DISTINCT BA.ID) FROM BuchAutor BA, Exemplar E WHERE BA.ISBN = E.ISBN AND E.Bibliothek = 'Informatik'; FB Informatik DVS Arthur Herzog, LW 13

n)-o) Erstellen Sie eine Liste aller Leser, die Bücher aus der Informatikbibliothek entliehen haben, sortiert nach Nachnamen. SELECT DISTINCT L.Nachname, L.Vorname FROM Leser L, Exemplar E WHERE E.Leser=L.ID AND E.Bibliothek ='Informatik' ORDER BY L.Nachname; Geben Sie für jeden Leser, der wenigstens ein Exemplar ausgeliehen hat, die ID und die Anzahl aller ausgeliehenen Bücher an. SELECT L.ID, COUNT(E.ISBN) FROM Exemplar E, Leser L WHERE E.Leser = L.ID GROUP BY L.ID; L.ID darf im SELECT-Statement auftauchen, da nach diesem Attribut gruppiert wird. L.Nachname darf hier beispielsweise nicht verwendet werden, womit es deutlich schwieriger wird, wenn man sich statt der ID den Nachnamen anzeigen lassen möchte. FB Informatik DVS Arthur Herzog, LW 14

p) Geben Sie für jeden Leser, der wenigstens ein Exemplar ausgeliehen hat, den Nachnamen und die Anzahl aller ausgeliehenen Bücher an. Verwenden Sie dazu eine verschachtelte Anfrage im FROM-Statement (Achtung: Diese Art der Verschachtelung erlauben einige Datenbanken nicht!). SELECT L.Nachname, Anzahl FROM Leser L, (SELECT L.ID AS ID, COUNT(E.ISBN) AS Anzahl FROM Exemplar E, Leser L WHERE E.Leser = L.ID GROUP BY L.ID) Temp WHERE L.ID = Temp.ID; FB Informatik DVS Arthur Herzog, LW 15

q), r) Geben Sie für jeden Leser, der wenigstens zwei Exemplare ausgeliehen hat, die ID und die Anzahl aller ausgeliehenen Bücher an. SELECT L.ID, COUNT(E.ISBN) FROM Exemplar E, Leser L WHERE E.Leser = L.ID GROUP BY L.ID HAVING COUNT(E.ISBN) > 1; Die Buchpreise erhöhen sich um 2 Prozent. Ändern Sie die Relation Buch entsprechend. UPDATE Buch SET Preis=Preis*1.02; FB Informatik DVS Arthur Herzog, LW 16

s), t) Herr Meier hat alle Bücher, die er ausgeliehen hat, zurückgegeben. Ändern sie die Datenbank entsprechend. UPDATE Exemplar SET Leser=NULL WHERE Leser IN (SELECT ID FROM Leser WHERE Nachname='Meier'); Frau Schmidt hat ihren Leseausweis zurückgegeben. Löschen Sie sie aus der Datenbank. DELETE FROM Leser WHERE Nachname='Schmidt'; FB Informatik DVS Arthur Herzog, LW 17