Einführung in die Datenbanktechnik

Ähnliche Dokumente
Datenbanken: Grundlagen und Trends

Einführung in die Datenbanktechnik

Wiederholung VU Datenmodellierung

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

Datenbanken. Zusammenfassung. Datenbanksysteme

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

Wiederholung VU Datenmodellierung

Das relationale Datenmodell

Kapitel 2: Das Relationale Modell

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

Datenbanken im WI-Unterricht mit

SQL: Übersicht. SQL (Structured Query Language) ist ANSI und ISO Standard 1975 SEQUEL = Structured English Query Language für System R

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

SQL: Weitere Funktionen

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

Vorlesung: Relationale Datenbanksysteme

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

Kapitel 3: Datenbanksysteme

Übersicht der wichtigsten MySQL-Befehle

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

Kapitel 2: Das Relationale Modell

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

5/14/18. Grundlagen von SQL. Grundlagen von SQL. Google, Facebook und Co. setzen auf SQL. Whatsapp

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

Kapitel 3: Datenbanksysteme

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

Als Datenbanksystem wird ein Datenbankverwaltungssystem zusammen mit einer oder mehrerer Datenbanken bezeichnet.

Datenbanksysteme 2013

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

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

Daniel Warner SQL. Das Praxisbuch. Mit 119 Abbildungen. Franzis

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

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

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

Kapitel 7: Referentielle Integrität

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

Inhaltsverzeichnis. Vorwort Kapitel 1 Einleitung... 15

Garten - Daten Bank. - survival pack -

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

Datenintegrität. Kapitel 5 1

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

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

DATENBANKEN SQL UND SQLITE VON MELANIE SCHLIEBENER

ACCESS SQL ACCESS SQL

SQL structured query language

Inhaltsverzeichnis. Vorwort 13. Kapitel 1 Einleitung 15

Abfragen (Queries, Subqueries)

Datenbanksysteme Kapitel 2: SQL Data Definition Language

Logischer Entwurf von Datenbanken

Die Anweisung create table

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

Datenbanken Entity-Relationship-Modell und Datenbankentwurf 1. Andreas Heß Hochschule Furtwangen

Kapitel 8: Datenintegrität

Datenintegrität. Kapitel 5 1

Anwendungsentwicklung Datenbanken SQL. Stefan Goebel

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

Das Relationen-Modell. Prof. Dr. T. Kudraß 1

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

Datenbanken Unit 4: Das Relationale Modell & Datenintegrität

4.14 Integrität und Trigger

Aufgabe 1: Integrität

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

Wirtschaftsinformatik 7a: Datenbanken. Dozent: R. Witte

Datenbanken 1. Sommersemester Übung 1

SQL als Zugriffssprache

Inhaltsverzeichnis Vorwort zur vierten Auflage Vorwort zur dritten Auflage Vorwort zur zweiten Auflage Vorwort zur ersten Auflage Hinweise zur CD

Informatik II Vorlesung am D-BAUG der ETH Zürich. Vorlesung 12, 2017 Datenbanksysteme: Datendefinition in SQL, Kompliziertere Datenbankabfragen

dbis Praktikum DBS I SQL Teil 2

Oracle 10g Einführung

Programmierung und Datenbanken II

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

Informatik II Vorlesung am D-BAUG der ETH Zürich. Vorlesung 12, Datenbanksysteme: Datendefinition in SQL, Kompliziertere Datenbankabfragen

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

Übung Datenbanksysteme Updates, Integritätsbedingungen, funktionale Abhängigkeiten

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

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

Prüfung Informatik für Ökonomen II. 14. Januar Teil 1: Datenbanktechnik Musterlösungen

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

DB-Datenbanksysteme. DB SQL-DML 1 Mario Neugebauer

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

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

Relationen-Algebra. Prof. Dr. T. Kudraß 1

Garten -Daten Bank. Was ist das? Dr. Karsten Tolle PRG2 SS 2014

Labor 3 - Datenbank mit MySQL

Vorlesung DBIS I (WS 2005/2006) Teil 4

4. Datenbanksprache SQL

PRG2 Folien Zicari Teil 5. Einführung in Datenbanken SS 2007

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

SQL. erfolgreich Madrid Amsterdam An imprint of Pearson

1 Relationenalgebra [8 P.] Gegeben seien die folgenden Relationenschemata: Hafen(HNR, Ort, Grundsteinlegung)

Programmierung und Datenbanken II

Transkript:

Einführung in die Datenbanktechnik Boris Glavic II-1

Einführung in die Datenbanktechnik Grundlagen & Zusammenhänge Was ist eine Datenbank, was ist ein Datenbanksystem, wozu das alles? Aufgaben von Datenbankverwaltungssystemen, Grundbegriffe, Arbeitsweise Relationales Datenmodell Grundsätze, Relationen, Tupel, Integritätsbedingungen, einfaches SQL (Datendefinition und Datenmanipulation) Datenbankentwurf Schrittweiser Entwurfsvorgang, konzeptuelle Modellierung, das Gegenstands- /Beziehungsmodell und seine Anwendung, Regeln für die Umsetzung konzeptueller Schemata II-2

Relationenmodell ein logisches Datenmodell heute klar der Marktführer besonders einfache, einheitliche Strukturen formale Grundlagen flexible, mächtige Operatoren > (relativ) gute Verständlichkeit, Erlernbarkeit lange umstritten: Effizienz von Implementierungen II-3

Relationenmodell Urprung: E.F. Codd 1970 erste Systeme 1975 (für Praxis: 1985) heute breite kommerzielle Nutzung, Standardisierung, viele Erweiterungen Beispielsysteme: Oracle IBM UDB (DB2) Microsoft SQL Server Sybase, Informix, Access, MySQL,... wichtig: Relationenmodell Standard (SQL) Systeme II-4

Relationenmodell: Grundsätze Datenbank ::= Menge von Relationen als Tabellen auffassbar (aber Vorsicht!) dynamisch veränderbar jede Zeile: Kollektion zusammengehöriger Werte (Darstellung z.b. eines Umweltsachverhaltes; ein Tupel) jede Spalte: Attribut mit Werten aus einem Wertebereich (genauer einer Domäne: Wertebereich mit bestimmter Bedeutung; Werte sind aus DB-Sicht atomar (sollen)) jede Relation hat einen (eindeutigen) Namen und eine Überschrift (die Namen ihrer Attribute) II-5

Relation R A1 A2.... An w11 w12.... w1n......... wi1 wi2.... win......... wk1 wk2.... wkn II-6

Relation Attribut Relationenschema Relationsname R A1 A2.... An Relationeninstanz Wert w11 w12.... w1n......... wi1 wi2.... win......... wk1 wk2.... wkn Tupel II-7

ANGESTELLTER VName NName AHV# Gebtag Adresse Geschlecht Salär Vorges Abt Kurt Huesli 5908 30.12.1973 Zürich m 30000 8635 5 Beate Tell 8635 14.01.1970 Küssnacht w 40000 6608 5 Ruedi Becker 6736 24.12.1979 Wallisellen m 25000 9260 4 Boris Frisch 9260 03.06.1981 Zug m 43000 6608 4 Sonja Maradona 7639 11.11.1974 Bern w 38000 8635 5 Guiseppe Wagner 2938 04.03.1979 Zürich m 25000 8635 5 Amando Verdi 4077 19.08.1972 Dübendorf m 25000 9260 4 Mirella Freni 6608 22.06.1968 Dübendorf w 55000 NULL 1 II-8

Relationenmodell: formaler Relationenschema R (A 1, A 2,..., A n ) Attribute A i : Name einer Rolle, die eine Domäne D j in R spielt: D j = dom (A i ) R: Relationenname n: Grad der Relation zu definieren: Relationenname Attributnamen Domänen *) Zuordnung Attribut > Domäne *) *) stattdessen oft nur Attribut > Wertebereich II-9

Relationenmodell: formaler Relation (Instanz) r von R: r(r) = { t 1,..., t k } mit t j = < w 1,..., w n >, w i dom(a i ) {NULL} n-tupel Intension R, Extension r(r) auch: r(r) dom(a 1 ) x dom(a 2 ) x... x dom(a n ) also maximal dom(a 1 ). dom(a 2 )..... dom(a n ) Tupel je Zeitpunkt: genau eine Extension r(r) für jedes R der relationalen Datenbank dynamische Änderungen (einfügen, löschen, ändern): r 1 (R) > r 2 (R) II-10

Relationenmodell: Charakteristika und Konventionen Relation ist Menge von Tupeln > keine Reihenfolge (Ordnung) unterstellt (im Gegensatz zu Sätzen in einer Datei) > Tabellenschreibweise suggeriert Reihenfolge lediglich: nicht darauf verlassen! Tupel ist geordnete Liste von Werten > Reihenfolge wesentlich (aber nur hinsichtlich Korrespondenz mit dem Schema) Werte: (aus DB-Sicht) atomar ( 1. Normalform ); NULL als Wert möglich (meist genau ein solcher Wert, für alle Domänen gemeinsam) II-11

Schlüsselattribute Relation ist Menge von Tupeln > alle Tupel müssen voneinander verschieden sein > je zwei Tupel können nicht für alle Attribute dieselben Werte haben dies gilt meist schon für eine Teilmenge SK der Attribute: t 1, t 2 r(r), t 1 t 2 : t 1 [SK] t 2 [SK] > SK heisst Superschlüssel von R ein Schlüssel K einer Relation R ist ein Superschlüssel K, wenn K K: K ist kein Superschlüssel von R (d.h. K ist minimaler Superschlüssel) > Identifikationsschlüssel für Tupel von R Beispiel: die Matrikelnummer für Studierende II-12

Schlüsselattribute Schlüssel können ein Attribut oder mehrere Attribute haben die Eindeutigkeit des Schlüssels muss (zeitinvariant) für jede DB-Instanz gelten prinzipiell kann es je Relationenschema mehrere Schlüssel geben: Schlüsselkandidaten > wähle daraus den Primärschlüssel aus (mit möglichst wenigen Attributen) die Festlegung des Primärschlüssels gehört zum Relationenschema II-13

Relationenmodell: Übersicht relationales DB-Schema: Menge von Relationenschemata S = {R 1,..., R m } + Menge von Konsistenzbedingungen DB-Instanz von S: DB = {r 1,..., r m } mit r i Instanz von R i alle Konsistenzbedingungen sind erfüllt relationale DB: Schema + (jeweils aktuelle) Instanz II-14

ANGESTELLTER VName NName AHV# Gebtag Adresse Geschlecht Salär Vorges Abt ABTEILUNG ABT_ORT AName ANummer Leiter Anfdatum ANummer AOrt PROJEKT ARBEITET_AN PName PNummer POrt Abt Ang Projekt Stunden ANGEHÖRIGER Ang Name Geschlecht Gebtag Verwgrad II-15

ANGESTELLTER VName NName AHV# Gebtag Adresse Geschlecht Salär Vorges Abt Kurt Huesli 5908 30.12.1973 Zürich m 30000 8635 5 Beate Tell 8635 14.01.1970 Küssnacht w 40000 6608 5 Ruedi Becker 6736 24.12.1979 Wallisellen m 25000 9260 4 Boris Frisch 9260 03.06.1981 Zug m 43000 6608 4 Sonja Maradona 7639 11.11.1974 Bern w 38000 8635 5 Guiseppe Wagner 2938 04.03.1979 Zürich m 25000 8635 5 Amando Verdi 4077 19.08.1972 Dübendorf m 25000 9260 4 Mirella Freni 6608 22.06.1968 Dübendorf w 55000 NULL 1 ABTEILUNG AName ANummer Leiter Anfdatum Forschung 5 8635 22.05.2001 Verwaltung 4 9260 01.01.2004 Management 1 6608 19.06.2003 PROJEKT PName PNummer POrt Abt ProduktX 1 Zug 5 ProduktY 2 Baden 5 ProduktZ 3 Kloten 5 Informatik 10 Zürich 4 Reorganisation 20 Kloten 1 Soziales 30 Zürich 4 ABT_ORT ANummer AOrt 1 Kloten 4 Zürich 5 Zug 5 Baden 5 Kloten II-16

ARBEITET_AN Ang Projekt Stunden 5908 1 32.5 5908 2 7.5 7639 3 40.0 2938 1 20.0 2938 2 20.0 8635 2 10.0 8635 3 10.0 8635 10 10.0 8635 20 10.0 6736 30 30.0 6736 10 10.0 4077 10 35.0 4077 30 5.0 9260 30 20.0 9260 20 15.0 6608 20 NULL ANGEHÖRIGER Ang Name Geschlecht Gebtag Verwgrad 8635 Alice w 05.04.2001 Tochter 8635 Max m 25.10.2004 Sohn 8635 Ueli m 03.05.1968 Ehemann 9260 Greti w 28.02.1983 Ehefrau 5908 Beat m 01.01.2002 Sohn 5908 Alice w 31.12.2005 Tochter 5908 Liesli w 03.05.1977 Ehefrau II-17

Konsistenzbedingungen im Schema festzulegen; müssen von allen Instanzen eingehalten werden (a) Schlüsselbedingungen Festlegung der Schlüsselkandidaten > Eindeutigkeit (oft wird nur der Primärschlüssel definiert) (b) Gegenstandsintegritätsbedingung der Wert eines Primärschlüssels darf nie NULL sein ( > Identifikationsfähigkeit von Tupeln) (c) referentielle Integritätsbedingung II-18

Referentielle Integrität informell: ein Tupel einer Relation, das sich auf eine andere Relation bezieht, muss sich dort auf ein tatsächlich existierendes Tupel beziehen formeller: das Konzept Fremdschlüssel (foreign key) Relationen R, S (R = S ist möglich!) Ein Attribut FK von R heisst Fremdschlüssel, wenn sich seine Werte auf Tupel einer (anderen) Relation S beziehen sollen. genauer:... auf den Primärschlüssel K dort II-19

Referentielle Integrität Ein Attribut FK von R heisst Fremdschlüssel, wenn sich seine Werte auf Tupel einer (anderen) Relation S beziehen sollen. genauer:... auf den Primärschlüssel K dort > FK in R und K in S müssen dieselbe Domäne haben (statt Attribut kann auch Attributkombination stehen; FK und K müssen dann gleichviele Attribute umfassen und der Reihe nach dieselben Domänen haben) Fremdschlüsselattribute werden wiederum im Relationenschema festgelegt (mehrere je Relation möglich!) II-20

ANGESTELLTER VName NName AHV# Gebtag Adresse Geschlecht Salär Vorges Abt ABTEILUNG ABT_ORT AName ANummer Leiter Anfdatum ANummer AOrt PROJEKT ARBEITET_AN PName PNummer POrt Abt Ang Projekt Stunden ANGEHÖRIGER Ang Name Geschlecht Gebtag Verwgrad II-21

Referentielle Integrität Ein Attribut FK von R heisst Fremdschlüssel, wenn sich seine Werte auf Tupel einer (anderen) Relation S beziehen sollen. referentielle Integrität: t R muss gelten: t S: t[fk] = t [K] oder t[fk] = NULL für alle festgelegten Fremdschlüsselattribute muss referentielle Integrität gelten II-22

Konsistenzbedingungen und Mutationen von Relationen Mutationen: Tupel einfügen Tupel löschen Tupelwerte verändern dabei müssen die im Schema festgelegten Konsistenzbedingungen eingehalten bleiben II-23

Konsistenzbedingungen und Mutationen von Relationen Tupel einfügen: Schlüsseleindeutigkeit könnte verletzt werden NULL als Primärschlüsselattribut könnte verlangt werden Fremdschlüsselwert könnte nicht existieren mögliche Reaktionen: Einfügeoperation zurückweisen (Erklärung!) Korrektur versuchen (Benutzer befragen!), z.b. Abteilung einfügen > Kaskaden möglich II-24

Konsistenzbedingungen und Mutationen von Relationen Tupel löschen: ein durch Fremdschlüssel referenziertes Tupel könnte betroffen sein mögliche Reaktionen: Löschoperation zurückweisen (Erklärung!) Löschoperation kaskadieren referenzierende Tupel modifizieren ( > NULL-Wert, falls nicht selbst Primärschlüssel) Benutzer entscheidet fallweise, Festlegung im Schema möglich II-25

Konsistenzbedingungen und Mutationen von Relationen Tupelwerte ändern: alle Konsistenzbedingungen könnten verletzt werden unkritische Attribute: solche, die weder Primärnoch Fremdschlüssel sind mögliche Reaktionen: wie gehabt (als Löschen + Einfügen auffassbar) II-26

Relationenmodell: Übersicht Relationenschema R (A 1, A 2,..., A n ) Relation (Instanz) r von R: r(r) = { t 1,..., t k } mit t j = < w 1,..., w n >, w i dom(a i ) {NULL} Schlüssel relationales DB-Schema: Menge von Relationenschemata S = {R 1,..., R m } + Menge von Konsistenzbedingungen DB-Instanz von S: DB = {r 1,..., r m } mit r i Instanz von R i und alle Konsistenzbedingungen erfüllt relationale DB: Schema + (jeweils aktuelle) Instanz II-27

SQL: Datenbanksprache für das Relationenmodell SQL: structured query language Konstrukte für Datendefinition (DDL-Teil) Konstrukte für Datenmanipulation (DML-Teil)... und mehr viele Konstrukte (mit verschiedenen Optionen); hier nicht mehr als ein kleiner erster Eindruck II-28

SQL: Datendefinition create table Definition eines neuen Relationenschemas und Anlegen einer (initial leeren) Tabelle dazu alter table Verändern eines bestehenden Relationenschemas drop table Entfernen eines bestehenden Relationenschemas, inklusive Wegwerfen der Instanz dazu II-29

SQL: Datendefinition create table Abteilung ( AName varchar(15), ANummer integer, Leiter char(4), Anfdatum char(8) ); II-30

SQL: Datendefinition create table Abteilung Name ( AName varchar(15), ANummer integer, Leiter char(4), Domäne Anfdatum char(8) ); Attribut II-31

SQL: Datendefinition create table Abteilung ( AName varchar(15) not null, ANummer integer not null, Leiter char(4), Anfdatum char(8), primary key (ANummer), unique (AName), foreign key (Leiter) references Angestellter ); II-32

SQL: Datendefinition drop table Angehöriger; löscht Relationenschema und zugehörige Instanz Konsistenz beachten! alter table Angestellter add Ausbildung varchar (12); für neues Attribut werden NULL-Werte eingefügt, daher ist der Zusatz not null verboten II-33

SQL: Datenmanipulation Tupel einfügen (insert) Tupelwerte verändern (update) Tupel löschen (delete) Tupel/Tupelteile auffinden (select), einzeln oder Mengen davon: Anfragen, Abfragen ( queries ) > Ergebnis ist wiederum eine Relation! Relationenalgebra als Grundlage II-34

SQL: Anfragen deskriptiv (statt prozedural) was gesucht?, nicht wie finden? als ad hoc-sprache oder eingebettetes SQL (Kopplung mit allgemeiner Programmiersprache) oft auch hinter anderen Schnittstellen versteckt allgemeine Form ( SFW-Klausel ): select <Liste von Attributen> from <Liste von Relationen> where <Bedingung>; II-35

Beispiele SQL-Anfragen select Gebtag, Adresse < Projektion from Angestellter where NName = Frisch ; < Selektion Gebtag Adresse 03.06.1981 Zug II-36

Beispiele SQL-Anfragen select Abt from Angestellter where Salär 30000; Abt 5 5 4 5 1 select distinct Abt from Angestellter where Salär 30000; Abt 5 4 1 II-37

Beispiele SQL-Anfragen select AHV# from Angestellter; = select from where AHV# Angestellter true; select PName, PNummer, POrt, Abt from Projekt where... ; = select from Projekt where... ; II-38

Beispiele SQL-Anfragen Korrelation von Relationen (Verbindung; join ) Vor- und Nachnamen sowie Adressen aller Angestellter der Forschungsabteilung select from where and VName, NName, Adresse Angestellter, Abteilung AName = Forschung ANummer = Abt; VName NName Adresse Kurt Huesli Zürich Beate Tell Küssnacht Sonja Maradona Bern Guiseppe Wagner Zürich II-39

Beispiele SQL-Anfragen Korrelation von Relationen (Verbindung; join ) für jedes in Zürich durchgeführte Projekt ist seine Nummer, die Nummer der durchführenden Abteilung sowie Nachname, Adresse und Geburtstag von deren Leiter auszugeben select from where and and PNummer, P.Abt, NName, Adresse, Gebtag Projekt P, Angestellter, Abteilung P.Abt = ANummer Leiter = AHV# POrt = Zürich ; PNummer Abt NName Adresse Gebtag 10 4 Frisch Zug 03.06.1981 30 4 Frisch Zug 03.06.1981 II-40

Beispiele SQL-Anfragen Korrelation von Relationen (Verbindung; join ) Name und Orte aller Abteilungen select AName, AOrt from Abteilung A, Abt_Ort O where A.ANummer = O. ANummer; AName Forschung Forschung Forschung Verwaltung Management AOrt Zug Baden Kloten Zürich Kloten II-41

Beispiele SQL-Anfragen Korrelation von Relationen (Verbindung; join ); Selbstbezug Namen aller Angestellten aus Dübendorf, samt Namen ihrer Vorgesetzten select from where and A.NName, V.NName Angestellter A V A.Adresse = Dübendorf A.Vorges = V.AHV#; A.NName V.NName Verdi Frisch II-42

Join Typen Kreuzprodukt ( cross product ) -Alle möglichen Kombinationen von Tupeln aus den Relationen die Bedingung aus der Where-Klausel erfüllen select from where A.NName, B.PName Angestellter A, Projekt B A.Adresse = Dübendorf II-43

Join Typen Innerer Verbund (implizit) ( implicit inner join ) -Alle möglichen Kombinationen von Tupeln aus den Relationen die Bedingung aus der Where-Klausel erfüllen -Where Klausel enthält Bedingung(en) die sich auf mehrere Relationen beziehen select from where A.NName, V.NName Angestellter A, Angehöriger B A.AHV# = B.Ang II-44

Join Typen Innerer Verbund (explizit) ( explicit inner join ) -Alle möglichen Kombinationen von Tupeln aus den Relationen die Bedingung aus der Where-Klausel erfüllen -Where Klausel enthält Bedingung(en) die sich auf mehrere Relationen beziehen select from A.NName, B.Name Angestellter A join Angehöriger B on (A.AHV# = B.Ang) II-45

Join Typen Äußerer Verbund ( outer join ) Left outer join: select A.NName, B.Name from Angestellter A left outer join Angehöriger B on (A.AHV# = B.Ang) Right outer join: select A.NName, B.Name from Angestellter A right outer join Angehöriger B on (A.AHV# = B.Ang) Full outer join: select A.NName, B.Name from Angestellter A full outer join Angehöriger B on (A.AHV# = B.Ang) II-46

Beispiele SQL-Anfragen Sub-Anfragen ( sub queries ); select from where and A.NName, V.NName (select * from Angestellter) A, Angestellter V A.Adresse = Dübendorf A.Vorges = V.AHV#; A.NName V.NName Verdi Frisch II-47

Generische Sicht Das Ergebnis einer SQL-Anfrage in der bisher betrachteten Form kann folgendermaßen berechnet werden 1. Falls die Anfrage Sub-Anfragen enthält berechne deren Ergebnis indem 2. und 3. Auf die Sub-Anfrage angewendet wird 2. Bilde die in der From-Klausel angegeben Verbünde. Für nicht durch explizite Verbünde verknüpfte Teile bilde Kreuzprodukt 3. Entferne alle Tupel aus dem Ergebnis die Bedingung aus der Where-Klausel erfüllen 4. Berechne für alle verbleibenden Tupel die Ausdrücke der Select-Klausel II-48

Aggregatfunktionen Beispiele SQL-Anfragen select SUM (Salär) from Angestellter {where... } ; select AVG (Salär) from Angestellter {where... } ; SUM_Salär 281000 AVG_Salär 35125 select from select from COUNT (AHV#) Angestellter; COUNT (distinct Salär) Angestellter; COUNT_AHV# 8 COUNT_Salär 6 II-49

Beispiele SQL-Anfragen Aggregatfunktionen mit Gruppierung select SUM (Salär), Abt from Angestellter group by Abt Aggregatfunktionen mit Having select SUM (Salär), Abt from Angestellter group by Abt having SUM(Salär) > 70000 Sum(salär) 55000 68000 133000 Abt 1 4 5 II-50

Beispiele SQL-Anfragen geschachtelte Anfragen Namen aller Angestellten, welche weibliche Angehörige haben VName Beate select VName, NName Boris from Angestellter Kurt where AHV# in ( select Ang from Angehöriger where Geschlecht = w ); NName Tell Frisch Huesli II-51

Beispiele SQL-Anfragen Arten von geschachtelten Anfragen IN / NOT IN: AHV# in (select from...) Ang EXISTS / NOT EXISTS: exists (select ANY / ALL: from...); Ang AHV# = any (select Ang from...) II-52

Beispiele SQL-Anfragen geschachtelte Anfragen mit Korrelationen select from where VName, NName Angestellter A salär > ALL (select salär from Angestellter B where A.Vorges = B.AHV# ); II-53

Generische Sicht Das Ergebnis einer SQL-Anfrage in der bisher betrachteten Form kann folgendermaßen berechnet werden 1. Falls die Anfrage From-Klausel Sub-Anfragen enthält berechne deren Ergebnis indem 2. und 3. auf die Sub-Anfrage angewendet wird 2. Bilde die in der From-Klausel angegeben Verbünde. Für nicht durch explizite Verbünde verknüpfte Teile bilde Kreuzprodukt 3. Für jedes Tupel im Ergebnis berechne geschachtelte Sub-Anfragen und benutze deren Ergebnisse um zu bestimmen ob das Tupel die Where- Bedingung erfüllt. 4. Entferne alle Tupel aus dem Ergebnis die Bedingung aus der Where- Klausel nicht erfüllen 5. Fasse Tupel zu Gruppen zusammen falls die Group by-klausel vorhanden ist 6. Berechne für alle verbleibenden Tupel/Gruppen die Ausdrücke der Select- Klausel 7. Entferne alle Tupel aus dem Ergebnis die Bedingung aus der Having- Klausel nicht erfüllen II-54

Änderungen in SQL Tupel einfügen insert into Abteilung values ( Qualitätssicherung, 6, 4077, 10.11.2006 ); referentielle Integrität? not null - Klausel beachten II-55

Änderungen in SQL Einfügetupel = Anfrageergebnis create table Abt_Info ( AName varchar(15), AnzAng integer, TotSal integer ); insert into select from where group by Abt_Info AName, COUNT(AHV#), SUM(Salär) Abteilung, Angestellter ANummer = Abt AName; ABT_INFO AName AnzAng TotSal Forschung 4 133000 Verwaltung 3 93000 Management 1 55000 II-56

Änderungen in SQL Tupel löschen delete from Angestellter where NName = Tell ; delete from Angestellter;??? II-57

Änderungen in SQL Tupelwerte ändern update Projekt set POrt = Zug, Abt = 5 where PNummer = 10; update Angestellter set Salär = Salär * 1.015 where Salär 30000; II-58