Datenbanken. Lernziele. Inhalt. Organisatorisches. Datenbank und Datenbanksystem. 1. Grundlagen Datenbanken. Wie entwerfe ich eine Datenbank?



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

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

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

Nachtrag: Farben. Farbblindheit. (Light und Bartlein 2004)

Datenbanken SQL Einführung Datenbank in MySQL einrichten mit PhpMyAdmin

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

Einteilung von Datenbanken

DATENBANKEN SQL UND SQLITE VON MELANIE SCHLIEBENER

Wiederholung VU Datenmodellierung

SQL und MySQL. Kristian Köhntopp

Datenbanken. Einführung. Tobias Galliat. Sommersemester 2012

Das SQL-Schlüsselwort ALL entspricht dem Allquantor der Prädikatenlogik

9. Einführung in Datenbanken

Wiederholung VU Datenmodellierung

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

Bibliografische Informationen digitalisiert durch

Dipl. Inf. Dipl. Math. Y. Orkunoglu Datum:

Abfragen: Grundbausteine

IV. Datenbankmanagement

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

Informatik 12 Datenbanken SQL-Einführung

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

Datenbankentwurf. 4.2 Logischer Entwurf. Kapitel 4. ER-Modell. Umsetzung. Entwurfsdokumentation. relationales Modell. Verbesserung

mit Musterlösungen Prof. Dr. Gerd Stumme, Dipl.-Inform. Christoph Schmitz 11. Juni 2007

SQL structured query language

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

SQL (Structured Query Language) Schemata Datentypen

Carl-Christian Kanne. Einführung in Datenbanken p.1/513

In diesem Thema lernen wir die Grundlagen der Datenbanken kennen und werden diese lernen einzusetzen. Access. Die Grundlagen der Datenbanken.

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

Wirtschaftsinformatik 2. Tutorium im WS 11/12

Allgemeines zu Datenbanken

7. Übung - Datenbanken

XAMPP-Systeme. Teil 3: My SQL. PGP II/05 MySQL

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

Einleitung Projektion Selektion Join Mengenop. Vollst.keit. Einleitung Projektion. Selektion Join. Vollst.keit. Einleitung Projektion Selektion Join

ACCESS SQL ACCESS SQL

ABTEILUNGS- ABTEILUNGS- LEITER NAME

Relationales Modell: SQL-DDL. SQL als Definitionssprache. 7. Datenbankdefinitionssprachen. Anforderungen an eine relationale DDL

Sie sollen eine Datenbank für Befragungen mittels Online-Fragebögen zu unterschiedlichen Themen erstellen:

ER-Modell. Entity-Relationship-Model

Die Grundbegriffe Die Daten Die Informationen

Labor 3 - Datenbank mit MySQL

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

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

Sructred Query Language

Views in SQL. 2 Anlegen und Verwenden von Views 2

Arbeiten mit ACCESS 2013

Objektrelationale Datenbanken

4. BEZIEHUNGEN ZWISCHEN TABELLEN

3. Das Relationale Datenmodell

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

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

6. Sichten, Integrität und Zugriffskontrolle. Vorlesung "Informa=onssysteme" Sommersemester 2015

Übersicht über Datenbanken

Oracle SQL Tutorium - Wiederholung DB I -

Modul Datenbanksysteme 2 Prüfung skizzenhaft SS Aug Name: Note:

Andreas Heuer Gunter Saake Kai-Uwe Sattler. Datenbanken. kompakt

Probeklausur im Modul Informationstechnik 1, WS 2003/04. Studiengang IWD 1. Semester Seite 1 von 5

Erstellen einer Datenbank. Datenbankabfragen

ER-Modellierung am Beispiel der Universitätsdatenbank aus der DBIS-Vorlesung

Datenbanken für Online Untersuchungen

ACCESS das Datenbankprogramm. (Einführung) DI (FH) Levent Öztürk

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

SQL. Fortgeschrittene Konzepte Auszug

Datumsangaben, enthält mindestens Jahr, Monat, Tag

Kapitel 4 Die Datenbank Kuchenbestellung Seite 1

Abfrage-Befehle in MySQL -diverse Funktionen -

Anwendungsentwicklung Datenbanken SQL. Stefan Goebel

Datenbanktechnologie mit praktischen Übungen in MySQL und PHP

4 Grundlagen der Datenbankentwicklung

Details zu den Ausdrücken nach FROM, WHERE, GROUP BY und HAVING finden Sie in den Abschnitten über JOIN, WHERE und GROUP BY.

Access Grundlagen für Anwender. Andrea Weikert 1. Ausgabe, 1. Aktualisierung, Juli inkl. zusätzlichem Übungsanhang ACC2010-UA

Datenbankmodelle 1. Das Entity-Relationship-Modell

SQL - Übungen Bearbeitung der Datenbank Personal (1)

Datenbanken. Ein DBS besteht aus zwei Teilen:

Datenbanken Microsoft Access 2010

Relationale Datenbanken in der Praxis

Vorlesung Informatik II

SQL: statische Integrität

Vorlesung Datenbanken II A Klausur

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

Handbuch ECDL 2003 Basic Modul 5: Datenbank Grundlagen von relationalen Datenbanken

Dynamisches SQL. Folien zum Datenbankpraktikum Wintersemester 2009/10 LMU München

MySQL: Einfaches Rechnen.

Abbildung 1: Das ERM. Nun zu den Tabellen: Zunächst wird aus jeder Entity eine Tabelle, d.h. wir erhalten:

GI-Technologien zur Umsetzung der EU-Wasserrahmenrichtlinie (WRRL): Wissensbasen. Teil 1: Einführung: Wissensbasis und Ontologie.

Übungsblatt 4. Aufgabe 7: Datensicht Fachkonzept (Klausur SS 2002, 1. Termin)

Kapitel 8: Physischer Datenbankentwurf

Kapitel 3: Datenbanksysteme

Business Intelligence Praktikum 1

Übung Datenbanken in der Praxis. Datenmodifikation mit SQL

Datenbanken. Prof. Dr. Bernhard Schiefer.

Datenmanagement in Android-Apps. 16. Mai 2013

WS 2002/03. Prof. Dr. Rainer Manthey. Institut für Informatik III Universität Bonn. Informationssysteme. Kapitel 1. Informationssysteme

Business Intelligence Praktikum 1

105.3 SQL-Datenverwaltung

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

Mai Hauptseminar: Nichtrelationale Datenbanken Historisch-Kulturwissenschaftliche Informationsverarbeitung Universität zu Köln

Transkript:

SELECT s., s., sum(k.dauer) FROM s, a, Kurs k WHERE s.=a. AND a.=k. GROUP BY s. Lernziele Datenbanken ditact 2003 Salzburg Wie entwerfe ich eine Datenbank? Wie kann ich Daten einfügen, bearbeiten oder löschen? Dr. Annika Hinze, Freie Universität Berlin Dipl.-Math. Maria Oelinger, Universität Duisburg-Essen Wie kann ich Daten abfragen? ditact 2003 Datenbanken Seite 2 von 70 Organisatorisches 3 Tage Vorlesung/Übung abwechselnd Übung: Im Kopf/am Rechner gemischt Programming-in-pairs Keine falschen Lösungen Ziel: Fertige DB Inhalt 1. Grundlagen Datenbanken 2. Datenbankentwurf 3. Datenbankanfrage 4. Mehr SQL: Schachtelungen Abschluss ditact 2003 Datenbanken Seite 3 von 70 ditact 2003 Datenbanken Seite 4 von 70 1. Grundlagen Datenbanken Begriffsbestimmung DB, DBS, DBMS Aufbau eines DBS Datenmodelle Datenbanksprachen Projektübung Datenbank und Datenbanksystem Anwendungen: Reisebuchungen, Bilder, GIS,... Beispiele: Oracle, Sybase, dbase, O2, mysql,... Motivation (Unterschied zu Dateisystem): Redundanz und Inkonsistenz vermeiden Datenverknüpfungen Mehrnutzerbetrieb Datenintegrität (z. B. TelNr) Sicherheit ditact 2003 Datenbanken Seite 5 von 70 ditact 2003 Datenbanken Seite 6 von 70

Datenbank und Datenbanksystem Datenbank und Datenbanksystem Datenbanksystem Benutzerin / Programmiererin Anwendungsprogramm Anfragebearbeitung DBMS Datenzugriff Software DBMS: Programme zum Erzeugen und Unterhalten einer Datenbank Definition der DB: Datentypen und Strukturen Erzeugen der DB: Abspeichern der Daten DB-Manipulation: Anfragen und Updates Datenbank Daten Metadaten: DB-Definition Beispiel-Datenbank ditact-db(, Kurs, Anmeldung) ditact 2003 Datenbanken Seite 7 von 70 ditact 2003 Datenbanken Seite 8 von 70 Datenbank und Datenbanksystem Definition der DB (:string, :string, :integer) Kurs(:string, :string, Dauer:integer) Anmeldung(:integer, :string) Erzeugen der DB Daten der Kurse und Teilnehmerinnen speichern Anfragen Wer will mehr als 10 Stunden Kurse besuchen? Datenmodelle Beschreiben Datenobjekte und anwendbare Operatoren und deren Wirkung Kategorien Konzeptionelles Modell (high level) Logisches Modell (Implementationsebene) Physisches Modell (low level) ditact 2003 Datenbanken Seite 9 von 70 ditact 2003 Datenbanken Seite 10 von 70 Konzeptionelles Modell Modellierung eines Ausschnittes der realen Welt Beispiel: Entity-Relationship Modell Dauer Kurs Entitäten Attribute Relationen ditact 2003 Datenbanken Seite 11 von 70 Logisches Modell Beschreibt logische Ebene des DBMS Repräsentation der Daten durch Strukturen, record-basiert Beispiel: Relationales Modell Igel Katz Maus 012 032 007 igel@... katz@... piep@... 012 007 sp2v13 sp2v13 ditact 2003 Datenbanken Seite 12 von 70

Datenbankschema In allen Modellen: Unterscheidung zwischen Beschreibung und Daten Beschreibung: DB-Schema=Metadaten Daten: Instanz=Zustand der DB zu einem bestimmten Zeitpunkt ditact 2003 Datenbanken Seite 13 von 70 Datenbanksprachen Teil des Datenmodells in DBMS Besteht aus Datendefinitionssprache (DDL) und Datenmanipulationssprache (DML) DDL legt Struktur fest (Datenbankschema) DML für Anfragen, Einfügen, Löschen von Einträgen (interaktiv oder eingebettet) SQL ist DDL und DML ditact 2003 Datenbanken Seite 14 von 70 Benutzergruppen 3-Ebenen-Architektur Naive Benutzerin: Zugriff über Anwendungsprogramm Fortgeschrittene Benutzerin: Interaktive Anfragen mit SQL Anwendungsprogrammiererin: In Programme eingebettete Anfragen DB-Designerin: Schemaentwurf und -manipulation Administratorin: Benutzererkennung, Datensicherheit,... Externe Sicht Benutzersichten (views) Konzeptionelle Sicht Interne Sicht Benutzerin Benutzerin Programm Logische Datenstrukturen Physische Datenstrukturen ditact 2003 Datenbanken Seite 15 von 70 ditact 2003 Datenbanken Seite 16 von 70 2. Datenbankentwurf ER-Modellierung (konzeptioneller Entw.) SQL als DDL Ziel: Eigener DB-Entwurf Dauer Kurs Relationales Modell (logischer Entwurf) CREATE TABLE ( varchar(15), decimal, varchar(15)) ER-Modell Eingeführt 1976 von C.C.Chen Verschiedene Variationen in Gebrauch Konzept: Entität: Ding der realen Welt (Haus, Person) Attribut: Eigenschaften von Entitäten Ein spezielles Entity hat einen Wert für jedes seiner Attribute Beziehungen: (Meist binäre) Relationen zwischen Entitäten ditact 2003 Datenbanken Seite 17 von 70 ditact 2003 Datenbanken Seite 18 von 70

ER-Modell: Beispiel ER-Modell: Kardinalitäten Dauer Kurs E1 1:1 Beziehung: R 1 1 jedem Entity aus E1 ist höchstens ein Entity aus E2 zugeordnet und umgekehrt E1 E2 E2 Vorgänger voraussetzen Nachfolger Schlüssel Rollen Beispiele: Land hat Königin Frau heiratet Mann ditact 2003 Datenbanken Seite 19 von 70 ditact 2003 Datenbanken Seite 20 von 70 ER-Modell: Kardinalitäten E1 R 1 N 1:N Beziehung: jedem Entity aus E1 sind beliebig viele Entities aus E2 zugeordnet, jedem Entity aus E2 aber höchstens eins aus E1 E2 ER-Modell: Kardinalitäten E1 N N:M Beziehung: jedem Entity aus E1 sind beliebig viele Entities aus E2 zugeordnet und umgekehrt R M E2 E1 E2 E1 E2 Beispiele: Mutter hat Kind Firma beschäftigt Angestellte Beispiele: Studierende hören Vorlesungen Personen lesen Bücher ditact 2003 Datenbanken Seite 21 von 70 ditact 2003 Datenbanken Seite 22 von 70 Dauer ER-Modell: Beispiel DNr Dozentin N N halten M 1 Kurs N M Vorgänger Nachfolger voraussetzen Kardinalitäten ER-Modell: Generalisierung + Aggregation Generalisierung: Entities der Untermenge erben alle Eigenschaften der Obermenge Person is-a Dozentin Aggregation: Entities der Untermenge sind Komponenten der Obermenge (part-of-beziehungen) DNr ditact 2003 Datenbanken Seite 23 von 70 ditact 2003 Datenbanken Seite 24 von 70

ER-Modell: Verschiedenes Attribute von Beziehungen Note ER-Modell: Übung ER-Modelle mit Schlüsseln und Kardinalitäten für die gegebenen Übungen Geb-Nr Dozentin prüft schwache Entitäten ohne identifizierendes Schlüsselattribut, existenzabhängig von übergeordnetem Entity Raum-Nr Welche Bedingungen lassen sich nicht im ER- Modell ausdrücken? Projekt: Erstellt ein ER-Modell für das beschriebene Szenario Haus liegt_in Raum ditact 2003 Datenbanken Seite 25 von 70 ditact 2003 Datenbanken Seite 26 von 70 Projektübung Beschreibung Wir wollen eine Wissensdatenbank aufbauen. Verschiedene Personen sollen erfasst werden, die ein Wissensnetzwerk bilden. Eine Person kann einem oder mehreren Fachgebieten zugeordnet werden. Zu einem Fachgebiet kann es mehrere Expertinnen geben. Fachgebiete werden charakterisiert durch Schlagwörter. Jede Person hat kein, ein oder mehrere Spezialgebiete. Spezialgebiete werden in Typen eingeteilt: Dies Thema ist meine Seminararbeit, jenes Deine Diplomarbeit etc. ER-Diagramm. Jetzt. Relationales Modell Eingeführt 1970 von E.F.Codd Sehr weit verbreitet Konzept: Relationen (flache Tabellen) Zeilen entsprechen Datenobjekten (Tupel) Spaltennamen sind Attribute Wertebereich eines Attributes = Domäne Mengenorientierte Verknüpfungen ditact 2003 Datenbanken Seite 27 von 70 ditact 2003 Datenbanken Seite 28 von 70 ER zu relationalem Modell Entität: Abbildung auf Relation Attribute zu Tabellenspalten (=Attribute) ER zu relationalem Modell Beziehungen: Ebenfalls Abbildung auf Relation Schlüsselattribute aller beteiligten Entitäten übernehmen (= Fremdschlüssel) Attribute der Beziehung übernehmen Evtl. Umbenennungen Kurs Dauer ditact 2003 Datenbanken Seite 29 von 70 ditact 2003 Datenbanken Seite 30 von 70

Relationales Modell: Beispiel Relationale Darstellung von Entitytypen Kurs Dauer :{[:integer, :string,:string]} Vorgänger Nachfolger Kurs:{[:string, :string, Dauer:string]} voraussetzen Relationale Darstellung von Relationen :{[:integer, :string]} voraussetzen:{[vo:string, NaKursnr:string]} ditact 2003 Datenbanken Seite 31 von 70 Relationales Modell: Schlüssel N:M-Beziehung: Menge aller Fremdschlüssel als Schlüssel der Relation VNr Vorlesung M hören N Studierende MatrikelNr hören:{[vnr:integer, MatrikelNr:integer]} ditact 2003 Datenbanken Seite 32 von 70 Relationales Modell: Schlüssel 1:N-Beziehung: Schlüssel der bestimmenden Entität als Schlüssel der Relation Relationales Modell: Schlüssel 1:1-Beziehung: einer der Fremdschlüssel als Schlüssel der Relation Mutter hat 1 N hat:{[kind:string, Mutter:string]} Land hat 1 1 Sinnvolle Wahl treffen: hat:{[landesname:string, Königinname:string]} hat:{[landesname:string, Königinname:string]} Kind Königin ditact 2003 Datenbanken Seite 33 von 70 ditact 2003 Datenbanken Seite 34 von 70 Relationales Modell: Schemaverfeinerung Eleminierung von Relationen möglich NUR Relationen mit gleichem Schlüssel! Relationales Modell: Generalisierung Vererbung ist nicht realisiert! Person is-a Dozentin DNr Land(Landesname), Königin(Königinname) hat:(landesname, Königinname) Land(Landesname,regiertVon), Königin(Königinname) Person (, ) (, ) Dozentin (, DNr ) regiertvon ist Fremdschlüssel auf Königinname Problem: Wie erhalte ich die -Adresse einer Dozentin? Join Views ditact 2003 Datenbanken Seite 35 von 70 ditact 2003 Datenbanken Seite 36 von 70

Relationales Modell: Verschiedenes Relationales Modell: Anfragesprachen Relationen sind Mengen: Keine Duplikate Tupelidentifikation durch Attributwerte Keine Reihenfolge der Tupel Atomare Attributwerte Relationale Algebra Tupelkalkül Domänenkalkül Praxis: SQL Basisoperationen: Später ditact 2003 Datenbanken Seite 37 von 70 ditact 2003 Datenbanken Seite 38 von 70 Relationales Modell: Übung Umformen der ER-Modelle der Übungsszenarien in relationale Modelle Relationales Modell für das Projekt Structured Query Language Ursprünglich SEQUEL (Structured English Query Language) 1986: Standard SQL1 von ANSI und ISO 1999: SQL99, SQL/MM Anfragesprache in den meisten kommerziellen DBMS ditact 2003 Datenbanken Seite 39 von 70 ditact 2003 Datenbanken Seite 40 von 70 SQL: Mächtigkeit Datendefinition(DDL) Erzeugen / Löschen von Datenbanken und Relationen Einfügen / Löschen von Attributen Datenmanipulation (DML) Dateneingabe und -veränderung Anzeige von Relationen Anfragen Viewmanagement Integritätskontrolle Transaktionsmanagement ditact 2003 Datenbanken Seite 41 von 70 SQL: Schemadefinition Datenbankdefinition nur von Administratorin Tabellendefinition von Nutzerinnen Schema in Metadaten gespeichert Befehl: create table Beispiel: create table ( integer primary key, varchar(20), varchar(20) ); ditact 2003 Datenbanken Seite 42 von 70

SQL: Datentypen Zahlen number integer Zeichenketten varchar(n), char(n) (feste Länge, mit Leerzeichen aufgefüllt) Datum date SQL: Schemaveränderung Attribut ändern alter table table change attributalt attributneu domainneu; Beispiel: alter table studentin change S varchar(25); Attribut hinzufügen alter table table add attribute domain; Attribut entfernen alter table table drop column attribute; ditact 2003 Datenbanken Seite 43 von 70 ditact 2003 Datenbanken Seite 44 von 70 SQL: Dateneingabe Interaktiv use database <datenbank> insert into table values(value1,...); Als Batch Daten in Datei speichern + alle einlesen je nach DB-System Zur Kontrolle select * from table; ditact 2003 Datenbanken Seite 45 von 70 SQL: Daten entfernen Alle Daten aus Tabelle entfernen delete from table; Daten aus Tabelle entfernen delete from table [where bedingung]; Tabelle entfernen drop table table; Vorsicht! Löscht alle Daten und die Tabellendefinition ditact 2003 Datenbanken Seite 46 von 70 SQL: Übung 3. Datenbankanfrage Einloggen/Start von MySQL Anlegen eines Datenbankschemas zum Projekt (analog relationalem Entwurf) Einfügen der Daten (selber ausdenken!) Inhalt Basisoperationen relationaler Sprachen SQL als DML (Basisoperationen / Aggregatfunktionen) SQL Trockenübungen Anfragen an die Projektdatenbank ditact 2003 Datenbanken Seite 47 von 70 ditact 2003 Datenbanken Seite 48 von 70

Basisoperationen auf relationalen Datenbanken Basisoperationen auf relationalen Datenbanken Selektion studentin Union studentinb studentindu-e Projektion studentin Kreuzprodukt studentin ditact 2003 Datenbanken Seite 49 von 70 ditact 2003 Datenbanken Seite 50 von 70 Basisoperationen auf relationalen Datenbanken Basisoperationen auf relationalen Datenbanken Schnitt Differenz studentinb studentindu-e studentinb Natürlicher Join = Kreuzprodukt, Auswahl gleicher Einträge in übereinstimmenden Spalten, Projektion studentin studentindu-e Und mehr: Thetajoin, Semijoin ditact 2003 Datenbanken Seite 51 von 70 ditact 2003 Datenbanken Seite 52 von 70 SQL als DML Basiskonstrukt SELECT attribut FROM tabelle WHERE bedingung Beispiel SELECT regiertvon FROM Land WHERE Landname=Dänemark Projektion Selektion SQL: Joins (Equi-)Join SELECT FROM s, Anmeldung a WHERE s.=a. AND =20; ditact 2003 Datenbanken Seite 53 von 70 ditact 2003 Datenbanken Seite 54 von 70

SQL: Mehr Joins SQL: Trockenübung I Theta-Join SELECT FROM s, Anmeldung a WHERE s.=a. AND >20; Joins über beliebig viele Tabellen möglich Performance-Problem Betrachtet folgendes Schema BIB(Buch,Autoren,kaufen,Bibliothek) Buch(ISBN, Titel, Verlag, AutorenID) Autoren(ID,, Vorname, Telefon) kaufen(isbn, Bib, BibOrt, Preis) Bibliothek(, Ort, Strasse, www) Formuliert in SQL Wie heißt das Buch mit ISBN 1234567? Wie heißt die Autorin des Buches mit ISBN 1234567? Welche Bibliotheken haben Bücher von Rita Schmidt gekauft? ditact 2003 Datenbanken Seite 55 von 70 ditact 2003 Datenbanken Seite 56 von 70 SQL: Mengenoperationen SQL: Duplikatbehandlungen Union, Difference, Intersection (Sinnloses) Beispiel SELECT FROM, Anmeldung WHERE =20 UNION SELECT FROM, Anmeldung WHERE =30; Eliminiert automatisch Duplikate In Mengenoperationen Eliminiert Duplikate ALL: Erhält Duplikate ( UNION ALL ) In normalen Anfragen Keine Duplikatentfernung, da aufwändig SELECT DISTINCT: Entfernt Duplikate ditact 2003 Datenbanken Seite 57 von 70 ditact 2003 Datenbanken Seite 58 von 70 SQL: Aggregatsfunktionen SQL: group by Summe sum, Durchschnitt avg, Maximum max, Minimum min SELECT SUM(dauer) FROM kurs; Anzahl count SELECT COUNT(*) FROM kurs; Für Aggregate Beispiel Wieviele Kurse hat jede belegt? SELECT, count(*) FROM Anmeldung GROUP BY ; Gruppierungsattribut muss im Select-Statement stehen ditact 2003 Datenbanken Seite 59 von 70 ditact 2003 Datenbanken Seite 60 von 70

SQL: having SQL: Explizite Mengen Eingrenzung von Untergruppen Beispiel Wieviele Kurse hat jede belegt? SELECT, count(*) FROM Anmeldung GROUP BY having count(*)>2; Beispiel SELECT FROM Anmeldung WHERE IN (sp2v13, sp5v14) Auch möglich IS NULL oder IS NOT NULL ditact 2003 Datenbanken Seite 61 von 70 ditact 2003 Datenbanken Seite 62 von 70 SQL: Trockenübung II SQL: Projektübung Betrachtet folgendes Schema BIB(Buch,Autoren,kaufen,Bibliothek) Buch(ISBN, Titel, Verlag, AutorenID) Autoren(ID,, Vorname, Telefon) kaufen(isbn, Bib, BibOrt, Preis) Bibliothek(, Ort, Strasse, www) Formuliert in SQL Wieviele Bücher hat Rita Schmidt veröffentlicht? Wieviel hat jede Bibliothek für Bücher von Rita Schmidt bezahlt und wieviele haben sie gekauft? Wieviele Bibliotheken haben mehr als zwei Bücher von Rita Schmidt? Formuliert die Anfragen für das Projekt in SQL, gebt sie in MySQL ein und dokumentiert Anfragen und Lösungen Lassen sich alle Anfragen umsetzen, welche nicht und warum nicht? ditact 2003 Datenbanken Seite 63 von 70 ditact 2003 Datenbanken Seite 64 von 70 4. SQL: Schachtelungen SQL: Schachtelungen Vollständige Anfragen im WHERE Statement einer anderen Anfrage Beispiel SELECT, FROM WHERE IN (SELECT FROM Dozentin WHERE ); IN vergleicht einen Wert mit einer Menge von Werten Erlaubt Rekursion bis n-te Stufe SELECT v1.vorgänger FROM voraussetzen v1 WHERE v1.nachfolger in ( SELECT v.vorgänger FROM voraussetzen v, Kurs k WHERE v.nachfolger=k. and k.="db") Schachtelungen können meist umformuliert werden ditact 2003 Datenbanken Seite 65 von 70 ditact 2003 Datenbanken Seite 66 von 70

SQL: Schachtelungen SQL: Schachtelungen Weitere Operatoren IN = < > <= >= <> Erweiterungen ANY, Some (gilt, wenn wahr für manche) ALL (gilt, wenn wahr für alle) Beispiel: Welcher Kurs dauert am längsten? SELECT FROM Kurs where dauer>=all(select dauer FROM Kurs); Korrelierende Anfragen Bedingung im WHERE Statement der eingeschachtelten Anfrage bezieht sich auf Attribut der Tabelle in der äußeren Anfrage SELECT k.b, k.bort FROM kaufen k WHERE k.isbn IN (SELECT b.isbn FROM buch WHERE b.isbn=k.isbn AND k.ort=b.titel); ditact 2003 Datenbanken Seite 67 von 70 ditact 2003 Datenbanken Seite 68 von 70 Verschiedenes Verschiedene weitere Themen, die im Kontext von Datenbanken eine Rolle spielen Datenintegrität, referentielle Integrität Sichten Normalformen Anfrageoptimierung Transaktionen Mehrbenutzersynchronisation Sicherheit Objektorientierte, objektrelationale DBen Aktive DBen Verteilte DBen ditact 2003 Datenbanken Seite 69 von 70 DB-Kurs: Abschluss Hoffentlich hattet Ihr mindestens soviel Spaß wie wir! SELECT s., s., sum(k.dauer) FROM s, a, Kurs k WHERE s.=a. AND a.=k. GROUP BY s. SELECT s., s., COUNT(s.) FROM s, Kurs k WHERE Dauer>4; Fragen, Vorschläge? ditact 2003 Datenbanken Seite 70 von 70