Datenbanksysteme Kapitel 5: SQL - Grundlagen

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

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

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

SQL: Abfragen für einzelne Tabellen

Aufbau des SELECT-Befehls. Im Folgenden werden zunächst Abfragen aus einer Tabelle vorgenommen.

Vorlesung Datenbankmanagementsysteme

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

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

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

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

ACCESS SQL ACCESS SQL

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

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

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

Datenbanksysteme Kapitel: SQL Data Definition Language

Kapitel 3: Datenbanksysteme

Lösungen der Übungsaufgaben von Kapitel 10

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

SQL-Befehlsliste. Vereinbarung über die Schreibweise

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

1. Funktionen und Datenflüsse; Tabellenkalkulationssysteme

Kompaktes Datenbank-Wissen rund um die Datenbank-Programmierung mit Transact-SQL

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

IV. Datenbankmanagement

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

Informatik 12 Datenbanken SQL-Einführung

Structured Query Language (SQL) 1

U 8 SQL. = Structured Query Language (heute auch Standard Query Language) ALLGEMEIN:

Wirtschaftsinformatik. SQL Abfragen und QBE. Unterrichtsskript. Version: 2.0

Sructred Query Language

SQL Intensivpraktikum SS 2008

SQL. Structured Query Language

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

Kapitel 2: Einstieg in SQL

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

SQL,Teil 3: Unterabfragen, Views & Berechnungen

Access Grundkurs. M. Eng. Robert Maaßen

Die SQL-Syntax für den Befehl CREATE TABLE sieht folgendermassen aus:

INFORMATIONSUNTERLAGEN. Grundzüge der SQL-Programmierung. Vag 09/2005

Einführung in Datenbanksysteme. H. Wünsch

SQL structured query language

Microsoft Access 2010 SQL nutzen

27 Transact-SQL-Erweiterungen in Bezug auf Analysis Services

Die bisher bereits bekannten Aggregatsfunktionen MIN, MAX, SUM, AVG, COUNT, VARIANCE und STDDEV wurden um FIRST und LAST erweitert.

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

MySQL: Einfaches Rechnen.

Datenmanipulation in SQL. Select Anweisung

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

Niedersächsisches Kultusministerium Juli 2015

Schulinternes Curriculum im Fach Informatik

Abfragen: Grundbausteine

Online-Kurs 'Datenbanken und Datenmodellierung'

Leseprobe: SQL mit MySQL - Band 4 Kompendium mit Online-Übungs-DB. Kompendium zur schnellen Kurzinformation der Datenbanksprache SQL/MySQL 5.

Datenbankanfragen und -operationen mittels SQL

SQL. Abfragesprache Datenmanipulation - DML

2 Grundlagen in MySQL und phpmyadmin

Kapitel 3 Abfragen mit SQL Seite 1. Abbildung 3.1: Die Datenbank EDV_Kurse

Fachbereich Informatik Praktikum 1

SQL. SQL = Structured Query Language, ist eine standardisierte Sprache zum Gebrauch im Zusammenhang mit Datenbanken.

Die SQL-Select-Anweisung

zwei verschiedene Darstellungsformen derselben Abfrage.

105.3 SQL-Datenverwaltung

ARBEITSBLATT ZU SQL-BEFEHLEN

Informatik Datenbanken SQL-Einführung

Übung 3. Interaktive Abfragen auf eine SQL-Datenbank. Prof. Dr. Andreas Schmietendorf. Wirtschaftsinformatik

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

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

5. Übungsblatt (Testatwoche: Mai 2010)

Einführung in die Wirtschaftsinformatik Akademisches Jahr 2006/07 Prof. Andreas Meier Assistentin: Andreea Ionas. SQL-Grundlagen

2.1.1 Beispiel 8: Die SQL-Ansicht einer Abfrage öffnen

4.1 SQL. Wichtige skalare Datentypen

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

=ZÄHLENWENN Zählt die nichtleeren Zellen eines Bereiches, deren Inhalte mit den Suchkriterien übereinstimmen

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

Bibliografische Informationen digitalisiert durch

Datenbanken Wintersemester 11/12. Prof. Dr. W. May

Herbstsemester Datenbanken mit Übungen Kapitel 4: SQL. H. Schuldt. Inhalt

Inhaltsverzeichnis. jetzt lerne ich

DATENBANKEN SQL UND SQLITE VON MELANIE SCHLIEBENER

Themenblock: Erstellung eines Cube

Abfrage-Befehle in MySQL -diverse Funktionen -

Microsoft Access 2010 SQL nutzen

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

ABTEILUNGS- ABTEILUNGS- LEITER NAME

Aufgabensammlung SQL SW4 1. Einfache Anfragen

Erstellen einer Datenbank. Datenbankabfragen

Labor 3 - Datenbank mit MySQL

Marcus Throll, Oliver Bartosch. Einstieg in SQL. Verstehen, einsetzen, nachschlagen. Galileo Press

Datenbanksprache SQL. Datenbanksprache SQL. 5.1 Anfragesprache SQL-DQL. from-klausel SS 2005

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

Datenbanktechnologie mit praktischen Übungen in MySQL und PHP

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

Einführung relationale Datenbanken. Themenblock: Erstellung eines Cube. Schlüssel. Relationenmodell Relationenname Attribut. Problem.

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

Views in SQL. 2 Anlegen und Verwenden von Views 2

Transkript:

Datenbanksysteme Kapitel 5: SQL - Grundlagen Prof. Dr. Peter Chamoni Mercator School of Management Lehrstuhl für Wirtschaftsinformatik, insb. Business Intelligence Prof. Dr. Prof. Peter Dr. Chamoni Peter Chamoni - Einführung in die Wirtschaftsinformatik - Folie 1

Allgemeine Informationen zu diesem Abschnitt (I) Die nachfolgenden Beispiele beziehen sich auf folgendes relationale Datenmodell Prof. Dr. Peter Chamoni Prof. - Einführung Dr. Peter Chamoni in die Wirtschaftsinformatik Einführung SQL - Folie 2

Allgemeine Informationen zu diesem Abschnitt (II) Welche Informationen muss die Ergebnisrelation enthalten? - Achten Sie jeweils darauf, welche Daten laut Aufgabenstellung ausgegeben werden sollen. - Empfehlung Nehmen Sie sowohl den/die Primärschlüssel der beteiligten Tabelle(n) wie auch mindestens ein weiteres Attribut pro Tabelle in die SELECT-Klausel auf. Prof. Dr. Peter Chamoni Prof. - Einführung Dr. Peter Chamoni in die Wirtschaftsinformatik Einführung SQL - Folie 3

Vereinfachtes Standardabfrageschema Notwendig SELECT * Attributliste FROM Tab 1, Tab 2,, Tab n Projektion / Attributauswahl Relation / 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 Prof. - Einführung Dr. Peter Chamoni in die Wirtschaftsinformatik Einführung SQL - Folie 4

Einfache Standardabfrage Notwendig Optional SELECT [DISTINCT] * Attributliste FROM Tabellenname [WHERE Bedingung] [ORDER BY Attributliste] [ASC DESC]; Ergebnisrelation Ausgangsrelation Eingrenzen der Ergebnismenge Sortieren der Ergebnismenge Prof. Dr. Peter Chamoni Prof. - Einführung Dr. Peter Chamoni in die Wirtschaftsinformatik Einführung SQL - Folie 5

SELECT-Klausel (I) Syntax SELECT * Attributliste FROM Tabellenname; Projektion / Attributauswahl Beispiel Übernehmen Sie alle Daten der Relation Buchung in die Ergebnisrelation. SELECT * FROM Buchung; Beispiel Stellen Sie die Projektion über die Attribute PassID, FlugNr und das jeweilige Datum dar. SELECT PassID, FlugNr, Datum FROM Buchung; Prof. Dr. Peter Chamoni Prof. - Einführung Dr. Peter Chamoni in die Wirtschaftsinformatik Einführung SQL - Folie 6

SELECT-Klausel (II) Umbenennung von Attributen (Spalten) in der Ergebnisrelation Ein Attributname (Spalte) kann zur Ausgabe mit Hilfe des AS-Operators umbenannt werden. Beispiel Das Attribut Name der Relation Pilot soll in der Ergebnisrelation umbenannt werden in Nachname. SELECT PilotID, Name AS Nachname, Vorname FROM Pilot; Beispiel Das Attribut Name der Relation Pilot soll in der Ergebnisrelation umbenannt werden in Nachname des Piloten. SELECT PilotID, Name AS Nachname des Piloten, Vorname FROM Pilot; Prof. Dr. Peter Chamoni Prof. - Einführung Dr. Peter Chamoni in die Wirtschaftsinformatik Einführung SQL - Folie 7

SELECT-Klausel (III) Abgeleitete Attribute Aufnahme eines neuen Attributs In einer Ergebnisrelation kann ein neues Attribut (eine zusätzliche Spalte) aufgenommen werden, dessen Attributwerte konstant sind, sich aus den Werten bestimmter Attribute der Ausgangsrelation herleiten lassen oder das Ergebnis einer Funktion sind. <Ausdruck> AS <Bezeichnung der neuen Spalte> Beispiel: Die Relation Pilot soll in der Ergebnisrelation durch ein zusätzliches Attribut erweitert werden, das den konstanten Wert Angestellter enthalten und die Bezeichnung Status tragen soll. SELECT PilotID, Name, Vorname, Angestellter AS Status FROM Pilot; Prof. Dr. Peter Chamoni Prof. - Einführung Dr. Peter Chamoni in die Wirtschaftsinformatik Einführung SQL - Folie 8

SELECT-Klausel (IV) Syntax SELECT [DISTINCT] * Attributliste FROM Tabellenname; Wenn Sie den DISTINCT-Parameter in der SELECT-Klausel angeben, erhalten Sie nur eindeutige Ergebnisse, d.h. die Ausgabe identischer Tupel wird vermieden. Beispiel Listen Sie aus der Relation Pilot alle Nachnamen der Piloten auf. Stellen Sie sicher, dass in der Ergebnisrelation jeder Nachname nur einmal erscheint. SELECT DISTINCT Name FROM Pilot; Prof. Dr. Peter Chamoni Prof. - Einführung Dr. Peter Chamoni in die Wirtschaftsinformatik Einführung SQL - Folie 9

ORDER BY-Klausel (I) Syntax SELECT [DISTINCT] * Attributliste FROM Tabellenname [ORDER BY Attributliste] [ASC DESC]; Mit der ORDER BY-Klausel werden die Tupel (Datensätze) der Ergebnisrelation in eine bestimmte Reihenfolge gebracht. Attributliste: Angabe der Attribute, nach denen sortiert werden soll. ASC DESC: geben die jeweilige Sortierreihenfolge an. Mit DESC wird absteigend sortiert. Mit ASC erfolgt die Sortierung aufsteigend. Dies ist jedoch standardmäßig der Fall und muss somit nicht explizit angegeben werden. Prof. Dr. Peter Chamoni Prof. - Einführung Dr. Peter Chamoni in die Wirtschaftsinformatik Einführung SQL - Folie 10

ORDER BY-Klausel (II) Beispiel Sortieren Sie die Pilotenliste nach den Nachnamen in aufsteigender Reihenfolge. SELECT * FROM Pilot ORDER BY Name; alternativ: ORDER BY Name ASC; Beispiel Sortieren Sie die Pilotenliste nach den Nachnamen in absteigender Reihenfolge. SELECT * FROM Pilot ORDER BY Name DESC; Prof. Dr. Peter Chamoni Prof. - Einführung Dr. Peter Chamoni in die Wirtschaftsinformatik Einführung SQL - Folie 11

ORDER BY-Klausel (III) Beispiel Sortieren Sie die Flugliste absteigend nach dem Datum und danach aufsteigend nach der PilotID. SELECT * FROM Flug ORDER BY Datum DESC, PilotID ASC; Alternativ SELECT * FROM Flug ORDER BY Datum DESC, PilotID; Prof. Dr. Peter Chamoni Prof. - Einführung Dr. Peter Chamoni in die Wirtschaftsinformatik Einführung SQL - Folie 12

WHERE-Klausel (I) Syntax SELECT [DISTINCT] * Attributliste FROM Tabellenname [WHERE Bedingung]; Selektion Soll nicht der Inhalt der Ausgangsrelation vollständig ausgegeben werden, so kann die Ergebnismenge mittels Bedingungen in der WHERE-Klausel eingegrenzt werden. Beispiel Listen Sie alle Flüge auf, die vom Piloten mit der PilotID 4711 durchgeführt werden. SELECT * FROM Pilot WHERE PilotID = 4711; Prof. Dr. Peter Chamoni Prof. - Einführung Dr. Peter Chamoni in die Wirtschaftsinformatik Einführung SQL - Folie 13

WHERE-Klausel (II) Bedingung (1) ist ein logischer Ausdruck, dessen Ergebnis WAHR oder FALSCH ist. In diesen logischen Ausdrücken werden die Attributwerte (vorwiegend) mit konstanten, vorgegebenen Werten verglichen. Hierbei stehen verschiedene Operatoren zur Verfügung, vor allem: Prof. Dr. Peter Chamoni Prof. - Einführung Dr. Peter Chamoni in die Wirtschaftsinformatik Einführung SQL - Folie 14

WHERE-Klausel (III) Bedingung (2) In den logischen Ausdrücken werden die Attributwerte (vorwiegend) mit konstanten, vorgegebenen Werten verglichen. Datentyp des Attributs Darstellung des Vergleichswerts Beispiel numerisch ohne Anführungszeichen SELECT * FROM Flug WHERE PilotID = 4711; alphanumerisch Datum in einfachen oder doppelten Anführungszeichen In folgenden Formaten möglich: #MM/TT/JJJJ# (Access) JJJJ-MM-TT TT.MM.JJJJ SELECT * FROM Flug WHERE FlugNr <> "LH3654"; SELECT * FROM Flug WHERE Datum = #07/15/2010#; Prof. Dr. Peter Chamoni Prof. - Einführung Dr. Peter Chamoni in die Wirtschaftsinformatik Einführung SQL - Folie 15

WHERE-Klausel (IV) Bedingung (3) Bedingungsarten Prof. Dr. Peter Chamoni Prof. - Einführung Dr. Peter Chamoni in die Wirtschaftsinformatik Einführung SQL - Folie 16

WHERE-Klausel (V) Bedingung (4) Bedingungsarten Prof. Dr. Peter Chamoni Prof. - Einführung Dr. Peter Chamoni in die Wirtschaftsinformatik Einführung SQL - Folie 17

WHERE-Klausel (VI) Bedingung (5) Klammersetzung bei der Verwendung logischer Operatoren - Auswertung der logischen Ausdrücke ohne Klammersetzung NOT ist die engste Verbindung und wird vorrangig ausgewertet. AND ist die nächststärkere Verbindung und wird danach ausgewertet. OR ist die schwächste Verbindung und wird zuletzt ausgewertet. - Auswertung der logischen Ausdrücke mit Klammersetzung Logische Ausdrücke, die in Klammern gesetzt sind, werden vor allem anderen ausgewertet. Prof. Dr. Peter Chamoni Prof. - Einführung Dr. Peter Chamoni in die Wirtschaftsinformatik Einführung SQL - Folie 18

Gruppierung (I) Abfragen werden sehr häufig gruppiert, weil nicht nur Informationen auf Datensatzebene (einzelne Tupel) von Interesse sind, sondern auch (daten-)gruppenbezogene Auswertungen angefordert werden. Durch die GROUP BY-Klausel werden alle Tupel, die in einem oder mehreren Attributen den gleichen Wert enthalten, in jeweils einer Gruppe zusammengefasst. Prof. Dr. Peter Chamoni Prof. - Einführung Dr. Peter Chamoni in die Wirtschaftsinformatik Einführung SQL - Folie 19

Gruppierung (II) Geben Sie für jeden Passagier seine durchschnittlichen Flugkosten (Preis) an. Buchung Gruppierung Aggregation SELECT PassagierID, AVG(Preis) AS durchschnittl. Flugkosten FROM Buchung GROUP BY PassagierID; Aggregation Gruppierung Prof. Dr. Peter Chamoni Prof. - Einführung Dr. Peter Chamoni in die Wirtschaftsinformatik Einführung SQL - Folie 20

GROUP BY-Klausel (I) Syntax SELECT [DISTINCT] * Attributliste FROM Tabellenname [GROUP BY Attributliste]; Durch die GROUP BY-Klausel werden alle Tupel, die in einem Attribut oder mehreren Attributen den gleichen Wert enthalten, in jeweils einer Gruppe zusammengefasst. Dies ist in der Regel nur dann sinnvoll, wenn in der Ergebnisrelation eine gruppenweise Auswertung, also eine der Aggregatfunktionen, enthalten ist. Mit Hilfe von Aggregatfunktionen werden neue Attribute zu einer Ergebnisrelation hinzugefügt, in denen als Wert das pro gebildeter Gruppe ermittelte Ergebnis der Aggregatfunktion dargestellt wird. Prof. Dr. Peter Chamoni Prof. - Einführung Dr. Peter Chamoni in die Wirtschaftsinformatik Einführung SQL - Folie 21

GROUP BY-Klausel (II) Aggregatfunktionen Funktion Erläuterung Beispiel COUNT() AVG () MIN () MAX () Liefert die Anzahl der Werte (außer den Wert NULL) in der Ergebnismenge einer SELECT- Abfrage bzw. einer Gruppierung. Liefert den Durchschnittswert eines Datenfeldes der Abfrage oder Gruppierung. Liefert den kleinsten bzw. größten Wert eines Datenfeldes der Abfrage oder Gruppierung. SELECT COUNT(PilotID) AS Anzahl FROM Pilot SELECT COUNT(*) AS Anzahl FROM Pilot SELECT AVG(Preis) AS Durchschnitt FROM Buchung SELECT MIN(Gehalt) AS Minimum FROM Gehaltsklasse SUM () Liefert die Summe der Werte eines Datenfeldes in der Abfrage oder Gruppierung. SELECT MAX(Gehalt) AS Maximum FROM Gehaltsklasse SELECT SUM(Preis) AS Umsatz FROM Buchung Prof. Dr. Peter Chamoni Prof. - Einführung Dr. Peter Chamoni in die Wirtschaftsinformatik Einführung SQL - Folie 22

GROUP BY-Klausel (III) Die GROUP BY-Klausel muss gewisse Bedingungen erfüllen. (Auch dafür gilt: Jedes DBMS weicht an manchen Punkten vom Standard ab.) Jedes Attribut in der SELECT-Klausel, welches nicht zu einer Aggregatfunktion gehört, muss auch in der GROUP BY-Klausel verwendet werden. Umgekehrt ist es möglich, ein Attribut per GROUP BY zu gruppieren, ohne das Attribut selbst in der SELECT-Klausel und damit in der Ergebnisrelation zu verwenden. Achtung: Durch die GROUP BY-Klausel entsteht eine neue interne Tabelle! Deswegen können für die Ausgabe von Gruppen nur Attribute verwendet werden, nach denen gruppiert wurde. Prof. Dr. Peter Chamoni Prof. - Einführung Dr. Peter Chamoni in die Wirtschaftsinformatik Einführung SQL - Folie 23

GROUP BY-Klausel (IV) Beispiel Listen Sie für die einzelnen Gehaltsklassen basierend auf GKID die Anzahl der Piloten auf, die sich in der jeweiligen Gehaltsklasse befinden. SELECT GKID, COUNT(*) AS Anzahl FROM Pilot GROUP BY GKID; Beispiel Geben Sie pro Flug (basierend auf Flugnummer und Datum) den durchschnittlichen Preis an. SELECT FlugNr, Datum, AVG(Preis) AS Durchschnittspreis FROM Buchung GROUP BY FlugNr, Datum; Prof. Dr. Peter Chamoni Prof. - Einführung Dr. Peter Chamoni in die Wirtschaftsinformatik Einführung SQL - Folie 24

HAVING-Klausel (I) SELECT [DISTINCT] * Attributliste FROM Tabellenname [GROUP BY Attributliste] [HAVING Bedingung]; Die HAVING-Klausel ist eine Ergänzung zu den Aggregatfunktionen, die bei Gruppierungen verwendet wird, um die Anzahl der Tupelgruppen in der Ergebnisrelation einzugrenzen. Im Gegensatz zur WHERE-Klausel werden die in der HAVING-Klausel angegebenen Bedingungen nicht auf einzelne Tupel, sondern auf Tupelgruppen angewendet. Die in der HAVING-Klausel angegebene Bedingung wird aus dem Wertebereich der Aggregatfunktion vorgegeben. Tupelgruppen, welche diese Bedingung nicht erfüllen, werden verworfen. Mögliche Vergleichsoperatoren: <, >, <>, =, >=, <= Prof. Dr. Peter Chamoni Prof. - Einführung Dr. Peter Chamoni in die Wirtschaftsinformatik Einführung SQL - Folie 25

HAVING-Klausel (II) Beispiel Bestimmen Sie für die einzelnen Gehaltsklassen basierend auf GKID die Anzahl der Piloten, die der jeweiligen Gehaltsklasse angehören. Die Ergebnisrelation soll nur solche Gehaltsklassen darstellen, denen mindestens drei Piloten angehören. SELECT GKID, COUNT(*) AS Anzahl FROM Pilot GROUP BY GKID HAVING COUNT(*) > 2; Prof. Dr. Peter Chamoni Prof. - Einführung Dr. Peter Chamoni in die Wirtschaftsinformatik Einführung SQL - Folie 26

HAVING-Klausel (III) Beispiel Geben Sie pro Flug (anhand des Primärschlüssels) den durchschnittlichen Preis an, den die Passagiere bezahlt haben. Es sollen jedoch nur jene Flüge aufgeführt werden, deren Durchschnittspreis unter 350 liegt. SELECT FlugNr, Datum, AVG(Preis) AS Durchschnittspreis FROM Buchung GROUP BY FlugNr, Datum HAVING AVG(Preis) < 350; Prof. Dr. Peter Chamoni Prof. - Einführung Dr. Peter Chamoni in die Wirtschaftsinformatik Einführung SQL - Folie 27

Abfragen über mehrere Tabellen (I) Ein besonderes Merkmal von relationalen Datenbanken ist, dass die Informationen fast immer über mehrere Tabellen verteilt sind und bei Abfragen in der Ergebnismenge zusammengeführt werden müssen. Die Verbundoperationen sind die Grundlage für Datenbankabfragen, die sich über mehrere Relationen erstrecken. Beim Inner-Join wird das kartesische Produkt über zwei Relationen gebildet, verbunden mit der Prüfung, ob ein oder mehrere gemeinsame Attribute den gleichen Wert haben. Der Inner-Join entspricht in der Relationenalgebra dem Verbund. Prof. Dr. Peter Chamoni Prof. - Einführung Dr. Peter Chamoni in die Wirtschaftsinformatik Einführung SQL - Folie 28

Abfragen über mehrere Tabellen (II) Verbundoperationen auf mehreren Tabellen werden durch ein gemeinsames Attribut definiert. An diese werden einschränkende Bedingungen gestellt. Alle zu verknüpfenden Tabellen werden namentlich in die FROM-Klausel aufgenommen und jeweils durch ein Komma getrennt aufgelistet. In die WHERE-Klausel wird die Bedingung eingefügt, dass die Fremdschlüsselwerte der einen Tabelle mit den Primärschlüsselwerten der jeweils referenzierten Tabelle übereinstimmen müssen. Prof. Dr. Peter Chamoni Prof. - Einführung Dr. Peter Chamoni in die Wirtschaftsinformatik Einführung SQL - Folie 29

Abfragen über mehrere Tabellen (III) Beispiel Innerer Verbund zwischen den beiden Relationen Pilot und Gehaltsklasse. SELECT * FROM Pilot, Gehaltsklasse WHERE Pilot.GKID = Gehaltsklasse.GKID; Sobald ein Attributname in mehr als einer der verwendeten Relationen vorhanden ist, muss angegeben werden, aus welcher dieser Relationen das Attribut verwendet werden soll. Dies erfolgt durch: Tabellenname.Attributname Prof. Dr. Peter Chamoni Prof. - Einführung Dr. Peter Chamoni in die Wirtschaftsinformatik Einführung SQL - Folie 30

Abfragen über mehrere Tabellen (IV) Beispiel Erstellen Sie eine Übersicht, aus der hervorgeht, welche Piloten welche Flüge durchgeführt haben. SELECT Pilot.PilotID, Name, FlugNr, Datum, Gate FROM Flug, Pilot WHERE Flug.PilotID = Pilot.PilotID; Beispiel Erstellen Sie eine Übersicht, aus der hervorgeht, welcher Pilot den Flug LH3615 am 27.11.2008 durchgeführt hat. SELECT Pilot.PilotID, Name, Vorname FROM Flug, Pilot WHERE Flug.PilotID = Pilot.PilotID AND FlugNr = "LH3615" AND Datum = #11/27/2008#; Prof. Dr. Peter Chamoni Prof. - Einführung Dr. Peter Chamoni in die Wirtschaftsinformatik Einführung SQL - Folie 31

Abfragen über mehrere Tabellen (V) Beispiel Listen Sie alle Piloten auf, die mehr als 2 Flüge durchgeführt haben. SELECT Pilot.PilotID, Name, Vorname COUNT(*) AS Anzahl FROM Flug, Pilot WHERE Flug.PilotID = Pilot.PilotID GROUP BY Pilot.PilotID, Name, Vorname HAVING COUNT(*) > 2 ; Prof. Dr. Peter Chamoni Prof. - Einführung Dr. Peter Chamoni in die Wirtschaftsinformatik Einführung SQL - Folie 32

Abfragen über mehrere Tabellen (VI) Innerer Verbund zwischen den beiden Relationen Flug und Passagier. Diese beiden Relationen können nicht direkt miteinander verknüpft werden. Hierzu muss zusätzlich die Relation Buchung betrachtet werden.? Prof. Dr. Peter Chamoni Prof. - Einführung Dr. Peter Chamoni in die Wirtschaftsinformatik Einführung SQL - Folie 33

Abfragen über mehrere Tabellen (VII) Beispiel Listen Sie alle Passagiere auf, die im letzten Quartal des Jahres 2008 von Düsseldorf nach Mailand geflogen sind. SELECT DISTINCT Passagier.PassID, Name, Vorname FROM Passagier, Buchung, Flugstrecke WHERE Passagier.PassID = Buchung.PassID AND Buchung.FlugNr = Flugstrecke.FlugNr AND Datum BETWEEN #10/01/2008# AND #12/31/2008# AND Abflugort = "Düsseldorf" AND Ankunftsort = "Mailand"; Prof. Dr. Peter Chamoni Prof. - Einführung Dr. Peter Chamoni in die Wirtschaftsinformatik Einführung SQL - Folie 34

Notwendig SELECT [DISTINCT] * Attributliste FROM Tab 1, Tab 2,, Tab n Projektion / Attributauswahl Relation / 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 Prof. - Einführung Dr. Peter Chamoni in die Wirtschaftsinformatik Einführung SQL - Folie 35

Verarbeitung einer Datenbankabfrage 5 4 6 1 2 3 Prof. Dr. Peter Chamoni Prof. - Einführung Dr. Peter Chamoni in die Wirtschaftsinformatik Einführung SQL - Folie 36