Datenbanksysteme Kapitel 5: SQL Data Manipulation Language

Ähnliche Dokumente
Datenbanksysteme Kapitel 5: SQL Data Manipulation Language

Datenbanksysteme Kapitel 5: SQL - Grundlagen

Datenbanksysteme Kapitel 5: SQL Grundlagen Teil 1

Einführung in die Wirtschaftsinformatik Kapitel 4: Relationale Datenbanksprachen: SQL

SQL als Zugriffssprache

Datenbanksysteme SQL Grundlagen

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

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

Wiederholung VU Datenmodellierung

Abfragen (Queries, Subqueries)

Wiederholung VU Datenmodellierung

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

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

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

ACCESS SQL ACCESS SQL

Anwendungsentwicklung Datenbanken SQL. Stefan Goebel

Übersicht der wichtigsten MySQL-Befehle

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

Einführung in die Spezialisierungsrichtungen

SQL-Sprachvielfalt. Peter Willadt (Ludwig-Erhard-Schule) SQL-Befehle / 47

SQL. Komplexe Abfragen. SQL-Komplexe Abfragen. SQL-Komplexe Abfragen. Komplexe Abfragen verknüpfen mehrere Tabellen miteinander.

Datenmanipulation in SQL (1): Subselect:

Informationsmanagement u. Numerische Methoden

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

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

Inhaltsverzeichnis. Vorwort Kapitel 1 Einleitung... 15

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

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

Es geht also im die SQL Data Manipulation Language.

Oracle 10g Einführung

Tabellen verknüpfen: Joins

Oracle 10g Einführung

Inhaltsverzeichnis. Vorwort 13. Kapitel 1 Einleitung 15

Praktische SQL-Befehle

Datenmanipulation in SQL. Select Anweisung

[1] DBS-exercice

Verbunde (Joins) und mengentheoretische Operationen in SQL

Verbunde (Joins) und mengentheoretische Operationen in SQL

Microsoft Access 2010 SQL nutzen

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

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

Datenbanksysteme Kapitel 2: SQL Data Definition Language

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

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

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

SQL ist eine relational vollständige Datenbanksprache.

1. Einleitung. SQL-Abfragen. 3. Das ERM der Übungsdatenbank. 2. Grundstruktur von SQL-Abfragen

SQL: Weitere Funktionen

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

Inhaltsverzeichnis. Inhalt. 1 Einführung in die Datenbanktechnologie

Operationen auf Relationen

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

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

Relationentheorie grundlegende Elemente

Datenbanksysteme I WS 17/18 HS-Übung. Universität Leipzig, Institut für Informatik Abteilung Datenbanken Prof. Dr. E. Rahm, V. Christen, M.

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

Datenbankabfragen und Datenmanipulation

Query Languages (QL) Relationale Abfragesprachen/Relational

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

DB-Datenbanksysteme. DB SQL-DML 1 Mario Neugebauer

Kapitel 3: Datenbanksysteme

Webbasierte Informationssysteme

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

Schnellübersichten. SQL Grundlagen und Datenbankdesign

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

Structured Query Language (SQL) als standardisierte Anfragesprache für relationale Datenbanken

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

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

Datenbanken: Relationales Modell und SQL. Dr. Matthias Uflacker, Stefan Klauck 23. April 2018

Die Anweisung create table

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 #4. SQL (Teil 2)

Datenbanksysteme Kapitel: SQL Data Definition Language

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

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

SQL. SQL SELECT Anweisung SQL-SELECT SQL-SELECT

Datenbanken im WI-Unterricht mit

2.5 Structured Query Language (SQL)

Bibliografische Informationen digitalisiert durch

Üben von DDL und DML. Ergebnis:

DATENBANKEN SQL UND SQLITE VON MELANIE SCHLIEBENER

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

SQL: Abfragen für einzelne Tabellen

Relationale Datenbanksprachen

Datenbanken und SQL. Kapitel 4. Die Datenbankzugriffssprache SQL. Edwin Schicker: Datenbanken und SQL (4)

SQL. erfolgreich Madrid Amsterdam An imprint of Pearson

Einführung in Datenbanken. Kapitel 11: Relationale Algebra in SQL

2.5 Relationale Algebra

Grundlagen von Datenbanken

Datenbanken. Zusammenfassung. Datenbanksysteme

Seminar 1 SQL Abfragen DML. MatrNr Name Vorname Age Gruppe Schmidt Hans Meisel Amelie

Schlüssel. Definition: Ein Schlüssel (key) einer Relation r(r) ist eine Til Teilmenge K von R, so dass für je zwei verschiedene Tupeln t 1

SQL structured query language

Mengen- oder SET-Operatoren fassen das Ergebnis von zwei oder mehreren Teilabfragen zu einem Ergebnis zusammen.

Transkript:

Datenbanksysteme Kapitel 5: SQL Data Manipulation Language Prof. Dr. Peter Chamoni Mercator School of Management Lehrstuhl für Wirtschaftsinformatik, insb. Business Intelligence Prof. Dr. Peter Chamoni - Prof. Datenbanksysteme Dr. Peter Chamoni - Wintersemester 2014/2015 1 Gliederung 1 Grundlagen - Datenbanksysteme 2 SQL Data Definition Language 3 Datenorganisation 4 Datenintegrität und Transaktionsverwaltung 5 SQL Data Manipulation Language 6 Neue Konzepte der Datenbanktechnologie Prof. Dr. Peter Chamoni Datenbanksysteme 2

Gliederung 5 SQL Data Manipulation Language 5.1 DML - Befehle für Mutationen 5.2 DML - Abfrage von Daten Prof. Dr. Peter Chamoni Datenbanksysteme 3 5.1 DML - Befehle für Mutationen Standardoperationen für Mutationen INSERT Einfügen neuer Tupel in eine Relation Einfügen von Zeilen in eine existierende Tabelle UPDATE Änderung von Tupeln einer Relation Ändern von Zeilen in einer existierenden Tabelle DELETE Löschen von Tupeln aus einer Relation Löschen von Zeilen aus einer existierenden Tabelle Prof. Dr. Peter Chamoni Datenbanksysteme 4

5.1 DML - Befehle für Mutationen Einfügen neuer Tupel in eine Relation (I) Syntax INSERT INTO <Tabelle >[(Spaltenliste)] VALUES (Auswahlliste); Relation Pilot (PilotID, Nachname, Vorname, GKID) Fügen Sie in die Relation Pilot folgenden Personaldatensatz ein. Günter, Neumann, PilotID 4444 und GKID 69. INSERT INTO Pilot VALUES (4444, 'Neumann', 'Günter', 69); Prof. Dr. Peter Chamoni Datenbanksysteme 5 5.1 DML - Befehle für Mutationen Einfügen neuer Tupel in eine Relation (II) Syntax INSERT INTO <Tabellenname> [(Spaltenliste)] Anfrage; Relation Pilot (PilotID, Nachname, Vorname, GKID) Fügen Sie in die Relation Pilot_Neu alle Piloten aus der Relation Pilot ein, die den Gehaltsklassen 60 oder 69 angehören. INSERT INTO Pilot_Neu SELECT * FROM Pilot WHERE (GKID = 60) OR (GKID = 69); Prof. Dr. Peter Chamoni Datenbanksysteme 6

5.1 DML - Befehle für Mutationen Ändern von Tupeln einer Relation Syntax UPDATE <Tabellenname> SET <Spalte = Spaltenausdruck>, [WHERE <Bedingung>]; Relation Pilot (PilotID, Nachname, Vorname, GKID) Ändern Sie die Gehaltsklasse von Michael Meier (PilotID=3333) in 23. UPDATE Pilot SET GKID = 23 WHERE PilotID = 3333; Prof. Dr. Peter Chamoni Datenbanksysteme 7 5.1 DML - Befehle für Mutationen Löschen von Tupeln einer Relation Syntax DELETE FROM <Tabellenname> [WHERE <Bedingung>]; Relation Pilot (PilotID, Nachname, Vorname, GKID) Löschen Sie das Tupel des Piloten Günter Neumann (PilotID=4444) aus der Relation Pilot. DELETE FROM Pilot WHERE PilotID = 4444; Prof. Dr. Peter Chamoni Datenbanksysteme 8

Gliederung 5 SQL Data Manipulation Language 5.1 DML - Befehle für Mutationen 5.2 DML - Abfrage von Daten Prof. Dr. Peter Chamoni Datenbanksysteme 9 SQL - Relationenalgebra Teil des Relationalen Modells - Definition von Operationen mit 1 bzw. 2 Eingabetabellen sowie 1 Ausgabetabelle Operationen über 1 Tabelle - Selektion Auswahl bestimmter Zeilen einer Tabelle - Projektion Auswahl bestimmter Spalten einer Tabelle Operationen über 2 Tabellen - Kartesisches Produkt - Verbund / Join - Natürlicher Verbund - Mengenoperationen (Voraussetzung: Gleichförmigkeit der verknüpften Tabellen) Prof. Dr. Peter Chamoni Datenbanksysteme 10

Vereinfachtes Standardabfrageschema Notwendig SELECT * Attributliste FROM Tab 1, Tab 2,, Tab n Projektion / Attributauswahl Kartesisches Produkt / Join WHERE Bedingung Selektion einzelner Tupel Optional GROUP BY HAVING Attributliste Bedingung Bildung von Tupelgruppen, Aggregation, Selektion von Tupelgruppen ORDER BY Attributliste ASC DESC Sortierung Prof. Dr. Peter Chamoni Datenbanksysteme Verarbeitung einer Datenbankabfrage (1) 5 1 2 3 4 6 Prof. Dr. Peter Chamoni Datenbanksysteme

Verarbeitung einer Datenbankabfrage (2) 1. Alle in der Tabellenliste angegebenen Relationen werden über das kartesische Produkt miteinander verknüpft. 2. Aus dieser verknüpften Relation werden die Tupel ausgewählt, die die angegebene WHERE-Bedingung erfüllen. 3. Gemäß der Attributliste am Anfang des SELECT-Befehls wird auf das bisherige Resultat eine Projektion auf die gegebenen Attribute vorgenommen. 4. Nun wird eine Gruppierung gemäß der GROUP-BY-Klausel durchgeführt. Eine Gruppierung fasst dabei mehrere Tupel zu einem Ergebnistupel zusammen, so dass die Ergebnisrelation ggf. weniger Tupel enthält. 5. Eine nachfolgende HAVING-Klausel führt jetzt auf das Ergebnis der Gruppierung nochmals eine Restriktion auf bestimmte Tupel durch. 6. Die Ergebnisrelation wird nach den Vorgaben in der Ordnungsliste der ORDER-BY- Klausel sortiert. Prof. Dr. Peter Chamoni Datenbanksysteme 13 Abfragen über mehrere Tabellen Mengenoperationen Voraussetzung: Gleichförmigkeit der verknüpften Tabellen Gleiche Anzahl und gleicher Datentyp der Attribute Verbund von Tabellen (JOIN) keine Voraussetzung Prof. Dr. Peter Chamoni Datenbanksysteme 14

Abfragen über mehrere Tabellen - Mengenoperatoren Mengenoperatoren Mehrere SELECT-Befehle können durch Mengenoperatoren miteinander verknüpft werden: UNION (Vereinigung) INTERSECT (Durchschnitt) EXCEPT (Differenz) Prof. Dr. Peter Chamoni Datenbanksysteme 15 Mengenoperatoren UNION Syntax SELECT * FROM <Tabellenname1> UNION SELECT * FROM <Tabellenname2>; Stellen Sie die Vereinigungsmenge von Flug und Flug2 dar. SELECT * FROM Flug UNION SELECT * FROM Flug2; Ergebnisrelation Flug Flug 2 Prof. Dr. Peter Chamoni Datenbanksysteme 16

Mengenoperatoren EXCEPT Syntax SELECT * FROM <Tabellenname1> EXCEPT SELECT * FROM <Tabellenname2>; Stellen Sie die Differenzmenge von Flug und Flug2 dar. SELECT * FROM Flug EXCEPT SELECT * FROM Flug2; Ergebnisrelation Flug \ Flug 2 In MS ACCESS und der Übungsdatenbank stehen die Mengenoperatoren INTERSECT und EXCEPT nicht zur Verfügung. Prof. Dr. Peter Chamoni Datenbanksysteme 17 Mengenoperatoren INTERSECT Syntax SELECT * FROM <Tabellenname1> INTERSECT SELECT * FROM <Tabellenname2>; Stellen Sie die Durchschnittsmenge von Flug und Flug2 dar. SELECT * FROM Flug INTERSECT SELECT * FROM Flug2; Ergebnisrelation Flug Flug 2 In MS ACCESS und der Übungsdatenbank stehen die Mengenoperatoren INTERSECT und EXCEPT nicht zur Verfügung. Prof. Dr. Peter Chamoni Datenbanksysteme 18

Mengenoperatoren Ausgangsrelationen Flug Flug2 Ergebnisrelationen Flug Flug 2 Flug \ Flug 2 Flug Flug 2 Prof. Dr. Peter Chamoni Datenbanksysteme 19 Allgemeine Informationen zu diesem Abschnitt (I) Die nachfolgenden e beziehen sich auf folgendes relationale Datenmodell Prof. Dr. Peter Chamoni Datenbanksysteme

Abfragen über mehrere Tabellen Übersicht möglicher Verbundarten Inner-Join Equi-Join Theta-Join Natural-Join Left-Outer-Join Full-Outer-Join Right-Outer-Join Cross-Join Prof. Dr. Peter Chamoni Datenbanksysteme 21 Abfragen über mehrere Tabellen Cross-Join Cross-Join Beim Cross-Join wird das kartesische Produkt über zwei Relationen gebildet, d. h. jeder Datensatz der ersten Relation wird mit jedem Datensatz der zweiten Relation kombiniert. Hinweis Für den praktischen Einsatz ist diese Reinform der Verknüpfungsregel unbrauchbar, da keinerlei Beziehungen zwischen den Daten beachtet werden. : Stellen Sie das kartesische Produkt über die Relationen Passagier und Buchung dar. SELECT * FROM Passagier, Buchung; Prof. Dr. Peter Chamoni Datenbanksysteme 22

Abfragen über mehrere Tabellen Inner-Join (I) Inner-Join (1) Beim Inner-Join (Equi-Join) wird das kartesische Produkt über zwei Relationen gebildet, verbunden mit der Prüfung, ob ein oder mehrere gemeinsame Attribute den gleichen Wert haben. (Vergleichsoperator = ) In der Relationenalgebra wird mit Verbund der innere Verbund bezeichnet! Innerer Verbund zwischen den beiden Relationen Pilot und Gehaltsklasse. SELECT * FROM Pilot, Gehaltsklasse WHERE Pilot.GKID = Gehaltsklasse.GKID; Prof. Dr. Peter Chamoni Datenbanksysteme 23 Abfragen über mehrere Tabellen Inner-Join (II) Inner-Join (2) SELECT * FROM Pilot AS P, Gehaltsklasse AS G WHERE P.GKID = G.GKID; Umbenennung der Tabellen oder SELECT * Änderung der JOIN-Syntax FROM Pilot INNER JOIN Gehaltsklasse ON Pilot.GKID = Gehaltsklasse.GKID; oder SELECT * Änderung der JOIN-Syntax FROM Pilot JOIN Gehaltsklasse ON Pilot.GKID = Gehaltsklasse.GKID; Prof. Dr. Peter Chamoni Datenbanksysteme 24

Abfragen über mehrere Tabellen Inner-Join (III) Inner-Join (3) Stellen Sie den inneren Verbund zwischen den Relationen Passagier und Flug dar. Relationen Passagier (PassID, Name, Vorname) Buchung ( PassID, FlugNr, Datum, Kategorie, Preis) Flug ( FlugNr, Datum, Gate, PilotID) SELECT P.PassID, Name, B.FlugNr, B.Datum, F.Gate FROM Passagier AS P, Buchung AS B, Flug AS F WHERE P.PassID = B.PassID AND B.FlugNr = F.FlugNr AND B.Datum = F.Datum; Prof. Dr. Peter Chamoni Datenbanksysteme 25 Abfragen über mehrere Tabellen Theta-Join Theta-Join Beim Theta-Join wird das kartesische Produkt über zwei Relationen gebildet, wobei für ein oder mehrere gemeinsame Attribute eine Bedingung gilt, für die ein beliebiger Vergleichsoperator verwendet werden kann. Beachte: Der Inner-Join ist somit ein Theta-Join, bei dem der Gleichheitsoperator in der Bedingung verwendet wird. Prof. Dr. Peter Chamoni Datenbanksysteme 26

Abfragen über mehrere Tabellen Natural-Join (I) Natural-Join (1) Der Natural-Join (Natürlicher Verbund) ist ein Inner-Join, bei dem die Duplikate von identischen Attributen eliminiert werden. Relationen Stellen Sie den natürlichen Verbund zwischen den Relationen Flug und Flugstrecke her. Flug ( FlugNr, Datum, Gate, PilotID) Flugstrecke (FlugNr, Flugdauer, Abflugort, Ankunftsort) SELECT Flug.FlugNr, Datum, Gate, PilotID, Flugdauer, Abflugort, Ankunftsort FROM Flug, Flugstrecke WHERE Flug.FlugNr = Flugstrecke.FlugNr; Prof. Dr. Peter Chamoni Datenbanksysteme 27 Abfragen über mehrere Tabellen Natural-Join (II) Natural-Join (2) SELECT Flug.*, Flugdauer, Abflugort, Ankunftsort FROM Flug, Flugstrecke WHERE Flug.FlugNr = Flugstrecke.FlugNr; Beschreibung Ergebnisrelation! oder SELECT Flug.*, Flugdauer, Abflugort, Ankunftsort Änderung der JOIN-Syntax FROM Flug INNER JOIN Flugstrecke ON Flug.FlugNr = Flugstrecke.FlugNr; oder SELECT Flug.*, Flugdauer, Abflugort, Ankunftsort Änderung der JOIN-Syntax FROM Flug JOIN Flugstrecke ON Flug.FlugNr = Flugstrecke.FlugNr; Prof. Dr. Peter Chamoni Datenbanksysteme 28

Abfragen über mehrere Tabellen Natural-Join (III) Natural-Join (3) Stellen Sie den natürlichen Verbund zwischen den Relationen Passagier und Flug dar. Relationen Passagier (PassID, Name, Vorname) Buchung ( PassID, FlugNr, Datum, Kategorie, Preis) Flug ( FlugNr, Datum, Gate, PilotID) SELECT P.PassID, Name, Vorname, B.FlugNr, B.Datum, Kategorie, Preis,Gate, PilotID FROM Passagier AS P, Buchung AS B, Flug AS F WHERE B.PassID = P.PassID AND B.FlugNr = F.FlugNr AND B.Datum = F.Datum; Prof. Dr. Peter Chamoni Datenbanksysteme 29 Abfragen über mehrere Tabellen Natural-Join (IV) Natural-Join (4) Fortsetzung des s Stellen Sie den natürlichen Verbund zwischen den Relationen Passagier und Flug dar. Relationen Alternativ Passagier (PassID, Name, Vorname) Buchung ( PassID, FlugNr, Datum, Kategorie, Preis) Flug ( FlugNr, Datum, Gate, PilotID) Beschreibung Ergebnisrelation! SELECT P.*, B.*, F.* FROM Passagier AS P, Buchung AS B, Flug AS F WHERE B.PassID = P.PassID AND B.FlugNr = F.FlugNr AND B.Datum = F.Datum; Prof. Dr. Peter Chamoni Datenbanksysteme 30

Abfragen über mehrere Tabellen Left-Outer-Join Left-Outer-Join Beim Left-Outer-Join (Linke Inklusionsverknüpfung) werden von der ersten Relation alle Tupel in die Ergebnismenge aufgenommen. Von der zweiten Relation werden nur die dazugehörigen Tupel übernommen. Die Attributwerte der zweiten Relation bleiben leer (NULL), wenn kein entsprechendes Tupel vorhanden ist. SELECT * FROM Pilot LEFT OUTER JOIN Gehaltsklasse ON Pilot.GKID = Gehaltsklasse.GKID; Prof. Dr. Peter Chamoni Datenbanksysteme 31 Abfragen über mehrere Tabellen Right-Outer-Join Right-Outer-Join Beim Right-Outer-Join (rechte Inklusionsverknüpfung) werden von der zweiten Relation alle Tupel in die Ergebnismenge aufgenommen. Von der ersten Relation werden nur die dazugehörigen Tupel übernommen. Die Attributwerte der ersten Relation bleiben leer (NULL), wenn kein entsprechendes Tupel vorhanden ist. SELECT * FROM Pilot RIGHT OUTER JOIN Gehaltsklasse ON Pilot.GKID = Gehaltsklasse.GKID; Prof. Dr. Peter Chamoni Datenbanksysteme 32

Abfragen über mehrere Tabellen Full-Outer-Join Full-Outer-Join Der Full-Outer-Join ist eine Kombination aus dem Left- und dem Right-Outer-Join. Er kommt dem ursprünglichen Cross-Join am nächsten. Alle Datensätze beider Relationen werden in die Ergebnisrelation übernommen. Passen die Tupel beider Relationen lt. Vergleichsoperator zusammen, so werden diese verbunden. Das Ergebnis der Abfrage entspricht einer nicht normalisierten Speicherung aller Daten in einer Tabelle. SELECT * FROM Pilot FULL OUTER JOIN Gehaltsklasse ON Pilot.GKID = Gehaltsklasse.GKID; Prof. Dr. Peter Chamoni Datenbanksysteme 33 Abfragen über mehrere Tabellen Self-Join Self-Join Der Self-Join (Eigen-Verbund) ist eine Verbundform, bei dem nicht zwei verschiedene Tabellen miteinander verbunden werden, sondern zweimal dieselbe. Interpretieren Sie das Attribut Abflugort in der Relation Flugstrecke als Basis und stellen Sie die Basis jedes Fluges dar. SELECT A.*, B.Abflugort AS Basis FROM Flugstrecke AS A, Flugstrecke AS B WHERE A.FlugNr = B.FlugNr; Alternativ SELECT A.*, B.Abflugort AS Basis FROM Flugstrecke AS A JOIN Flugstrecke AS B ON A.FlugNr = B.FlugNr; Prof. Dr. Peter Chamoni Datenbanksysteme 34

Abfragen über mehrere Tabellen Anmerkungen (I) Ein Join ist und bleibt in Abhängigkeit von der Tabellengröße eine aufwendige Operation. Ist DB-Performance ein kritischer Faktor, so sollten die verwendeten Joins dahingehend untersucht werden, ob: sämtliche in den Kriterien (ON) verwendeten Spalten indiziert sind; der Join tatsächlich nötig ist und nicht aus reiner Bequemlichkeit einer weiteren Abfrage vorgezogen wird; die Tabellenreihenfolge optimal gewählt ist. Als Faustregel gilt: Immer mit der kleinsten Tabelle beginnen. Unterstützt das Datenbanksystem Unterabfragen, so kann es effizienter sein, statt der gesamten Tabelle nur eine durch Kriterien beschränkte Teilmenge der Datensätze im Join zu verwenden. Prof. Dr. Peter Chamoni Datenbanksysteme 35 Abfragen über mehrere Tabellen Anmerkungen (II) Join vs. View Wird eine komplexe Join-Abfrage ständig aufgerufen, empfiehlt sich eher der Einsatz von Views. Ein View kann durchaus auf einer beliebig komplexen SQL-Abfrage basieren. Er stellt das Ergebnis in Form einer Tabelle zur Verfügung. Vorteil: Das DBMS kann das Ergebnis dieser Abfrage u.u. cachen und somit beim zweiten Zugriff schneller zur Verfügung stellen als ein Join. Beim Lesezugriff auf einen View gibt es i.d.r. keine Probleme, hingegen sind Schreiboperationen mit Vorsicht auszuführen. Prof. Dr. Peter Chamoni Datenbanksysteme 36