Transcript
Datenbanken M. Jakob Gymnasium Pegnitz
20. Februar 2016
Inhaltsverzeichnis 1
Grundlagen eines Datenbankmanagementsystems (DBMS)
2
Grundlegende Datenbankabfragen ohne verknüpfte Selektionen
3
Erweiterte Abfragen an eine Tabelle
4
Gruppieren und Zusammenfassen von Datensätzen
5
Verknüpfung von Tabellen
6
Syntaxdiagramme
7
Beziehungen zwischen Klassen
In diesem Abschnitt
Grundlagen eines Datenbankmanagementsystems (DBMS) 1.1 Speichern großer Datenmengen 1.2 Klassendiagramme und Datentypen 1.3 Aufbau von Datentabellen 1
1 1 Speichern großer Datenmengen Grundlagen
Speichern großer Datenmengen
Beim Suchen bestimmter Artikel wird eine interne Datenbank befragt und die Ergebnisse beliebig sortiert ausgegeben. Gleichzeitig greifen weltweit viele Benutzer gleichzeitig auf die Datenbank zu. M. Jakob (Gymnasium Pegnitz)
Datenbanken
20. Februar 2016
4 / 138
1 1 Verwendung von Datenbanken Grundlagen
Speichern großer Datenmengen
Heutige tägliche Kommunikationsabläufe sind ohne Datenbanken nicht mehr denkbar. Alle möglichen Internetseiten (CD-Datenbanken, Datenbank für Online-Spiele) Kundenverwaltung der Telekom Flugbuchungssysteme von Reisebüros Personendaten Einwohnermeldeämter Jede Form der Lagerverwaltung (Kaufhäuser, Supermärkte, Materiallager)
M. Jakob (Gymnasium Pegnitz)
Datenbanken
20. Februar 2016
5 / 138
1 1 Anforderungen an eine Datenbank Grundlagen
Speichern großer Datenmengen
1
Die Daten sollten einfach erfasst, gespeichert und abgerufen werden können.
2
Eingabefehler sollten vom System erkannt werden.
3
Durch Abfragen sollen Informationen gezielt abgerufen werden können.
4
Verschiedene Sachbearbeiter (Anwendungen) müssen unabhängig voneinander die Datenbestand bearbeiten können.
M. Jakob (Gymnasium Pegnitz)
Datenbanken
20. Februar 2016
6 / 138
Grundlagen
1
1
Speichern großer Datenmengen
Zusammenfassung Datenbank Große Datenmengen werden so gespeichert, dass gezielt ausgewählte Teile je nach Fragestellung geeignet zusammengestellt werden können. Der Anwender sollte dabei niemals direkt auf die Daten zugreifen sondern ein Datenbankmanagementsysteme (DBMS) verwenden. So sind die Daten vor unsachgemäßer Nutzung geschützt.
Anwendung Anwendung Anwendung Anwendung Anwendung M. Jakob (Gymnasium Pegnitz)
DBMS
Daten
Datenbank
Datenbanken
20. Februar 2016
7 / 138
Grundlagen
1
1
Speichern großer Datenmengen
Übung
Ü 1.1: Grenzen von normalen Datentabellen Betrachte die Datei Einkauf.ods, sie zeigt eine Zusammenstellung von gekauften Waren. Beantworte folgende Fragen und gib an, für warum und wen diese Frage von Interesse sein könnte. (a) Welches Produkt war am teuersten? (b) Wie viele Artikel wurden bei Karma gekauft? (c) Wer hat insgesamt am meisten Geld ausgegeben? (d) Wie viele Artikel wurden bei Oldi am 26.8.2007 gekauft? (e) Formuliere in einem Satz, warum die Datei Einkauf.ods nicht geeignet ist, große Datenmengen zu speichern.
M. Jakob (Gymnasium Pegnitz)
Datenbanken
20. Februar 2016
8 / 138
Grundlagen
1
1
Speichern großer Datenmengen
Übung
Ü 1.2: Grenzen von normalen Datentabellen Nenne zu jeder oben aufgeführten Anforderungen an eine Datenbank mindestens ein Beispiel aus der Datei Einkauf.ods, bei dem diese Anforderung nicht erfüllt ist.
M. Jakob (Gymnasium Pegnitz)
Datenbanken
20. Februar 2016
9 / 138
In diesem Abschnitt
Grundlagen eines Datenbankmanagementsystems (DBMS) 1.1 Speichern großer Datenmengen 1.2 Klassendiagramme und Datentypen 1.3 Aufbau von Datentabellen 1
1 2 Beispiel Bibliotheksverwaltung Grundlagen
Klassendiagramme und Datentypen
Jedes Attribut einer Klasse besitzt einen bestimmten Datentyp. Nur so kann das DBMS wissen, wie die Daten interpretiert werden sollen.
M. Jakob (Gymnasium Pegnitz)
Datenbanken
20. Februar 2016
11 / 138
Klassendiagramme und Datentypen 1 2 Datentypen in SQL (unserer DB-Sprache) Grundlagen
Datentyp VARCHAR[n] CHAR[n] INT FLOAT DOUBLE DECIMAL[n;d] DATE TIME DATETIME
M. Jakob (Gymnasium Pegnitz)
Beschreibung Variable Zeichenfolge von max. n Zeichen Zeichenfolge von genau n Zeichen (Rest Leerzeichen) Ganze Zahlen (etwa von -2Mrd. Bis +2Mrd.) Kommazahlen mit 7 gültigen Ziffern Kommazahlen mit 15 gültigen Ziffern Kommazahl mit d Dezimalstellen und insgesamt n Ziffern Datumsangaben Zeitangaben Kombination aus Datums- und Zeitangabe
Datenbanken
20. Februar 2016
12 / 138
Grundlagen
1
2
Klassendiagramme und Datentypen
Übung
Ü 1.3: Erweiterung Bibliotheksverwaltung Öffne die Zeichnungen 02_Aufg3_Bibliothek.graphml. Dort findest du eine Vorlage des oben abgebildeten Klassendiagramms. (a) Ergänze die fehlenden Einträge. (b) Füge die Klasse VERLAG mit folgenden Attributen hinzu: Name, Strasse, PLZ, Ort, Telefon, Fax, email, website. Lege selbst sinnvolle Datentypen fest.
M. Jakob (Gymnasium Pegnitz)
Datenbanken
20. Februar 2016
13 / 138
Grundlagen
1
2
Klassendiagramme und Datentypen
Übung
Ü 1.4: Klassenkarte Einkauf Erstelle zu der Tabelle Einkauf.ods eine Klassenkarte. Lege selbst sinnvolle Datentypen fest (Vorlage 2_Aufg4_Einkauf.graphml) Wo finden sich der Klassenname und die Attribute des Klassendiagramms in der Tabelle wieder?
M. Jakob (Gymnasium Pegnitz)
Datenbanken
20. Februar 2016
14 / 138
Grundlagen
1
2
Klassendiagramme und Datentypen
Übung Ü 1.5: Verbesserung Einkauf Die Klasse Einkauf soll in vier Klassen Kauf, Person, Artikel und Geschäft aufgeteilt werden. (a) Öffne die Vorlage 02_Aufg5_Einkauf.graphml und erstelle die fehlenden Klassenkarten. Ordne dabei die Attribute Name (des Kunden), Geschlecht, Sparte, Warenbezeichnung, Preis, Zahlungsart, Name (für des Geschäftes) und Kaufdatum der richtigen Klasse zu. (b) Lege sinnvolle Relationen zwischen den Klassen fest. (c) Warum kann es sinnvoll sein, die eine Tabelle Einkauf in diese vier Tabellen aufzuteilen?
M. Jakob (Gymnasium Pegnitz)
Datenbanken
20. Februar 2016
15 / 138
In diesem Abschnitt
Grundlagen eines Datenbankmanagementsystems (DBMS) 1.1 Speichern großer Datenmengen 1.2 Klassendiagramme und Datentypen 1.3 Aufbau von Datentabellen 1
1 Aufbau von Datentabellen Grundlagen
3
Aufbau von Datentabellen
Beispiel: Tabelle city einer Datenbank world
Die Objekte einer Tabelle sind Datensätze. Ihre Attribute stehen in den Spaltenbezeichnungen. Die Attributwerte der einzelnen Attribute finden sich in den zugehörigen Spalten. M. Jakob (Gymnasium Pegnitz)
Datenbanken
20. Februar 2016
17 / 138
Aufbau von Datentabellen 1 3 Definition Tabellenschema und Schlüssel Grundlagen
Definition Tabellenschema und Schlüssel Jeder Datensatz muss eindeutig identifizierbar sein. Spalten(-kombination) die jeden Datensatz eindeutig festlegt, nennt man Schlüssel. Wenn sich keine Spaltenkombination als Schlüssel eignet, verwendet man künstliche Schlüssel. Bekannte künstliche Schlüssel sind die EAN (Strichcode) von Waren oder die Personalausweisnummer. Im Tabellenschema werden der Tabellenname, und die Attribute samt Datentypen aufgeführt und der Schlüssel unterstrichen. Tabellenschema für obige Tabelle: city(ID: INT; Name: VARCHAR[40], ContryCode: CHAR[3], Destrict: VARCHAR[40], Population: INT)
M. Jakob (Gymnasium Pegnitz)
Datenbanken
20. Februar 2016
18 / 138
Grundlagen
1
3
Aufbau von Datentabellen
Übung åÜ 1.6: TERRA-Datenbank erforschen Die Datenbank TERRA enthält geographische Informationen über der Erde. Besuche die Seite åhttp://www.sn.schule.de/ reimegym/terra/index.html (a) Surf dich durch die Seite und verschaffe dir so einen Überblick. (b) Wie lautet das Tabellenschema der Tabelle LAND? Welchen Schlüssel, wie viele Atribute und wie viele Spalten hat diese Tabelle? Was fehlt in dem Tabellenschema? (c) Wie viele Tabellen beinhaltet die Datenbank? Wie viele haben nur eine Spalte als Schlüssel? (d) Warum reicht es in der Tabelle STADT nicht, nur den Namen der Stadt als Schlüssel zu verwenden? (e) Stelle eine Vermutung auf, welche Schlüssel künstlich sind. (f) Ergänze die Attribute der Tabellen Land, Stadt und Berg um sinnvolle Datentypen. M. Jakob (Gymnasium Pegnitz)
Datenbanken
20. Februar 2016
19 / 138
Grundlagen
1
3
Aufbau von Datentabellen
Übung
åÜ 1.7: Datenbank Bundesliga erforschen Die Datenbank Bundesliga enthält Informationen über die Fußball Bundesliga. Besuche die Seite åhttp://dbup2date.uni-bayreuth.de/ (a) Surf dich durch die Seite und verschaffe dir so einen Überblick. (b) Wie viele Tabellen beinhaltet die Datenbank? Wie viele haben nur eine Spalte als Schlüssel? (c) Stelle eine Vermutung auf, welche Schlüssel künstlich sind. (d) Erstelle die Klassenkarten zu den angegebenen Tabellenschamata
M. Jakob (Gymnasium Pegnitz)
Datenbanken
20. Februar 2016
20 / 138
Grundlagen
1
3
Aufbau von Datentabellen
Übung
åÜ 1.8: Datenbank Wetter in Deutschland erforschen Die Datenbank Wetter enthält Informationen über das Wetter in Deutschland. Besuche die Seite åhttp://dbup2date.uni-bayreuth.de/ (a) Surf dich durch die Seite und verschaffe dir so einen Überblick. (b) Wie viele Tabellen beinhaltet die Datenbank? Wie viele haben nur eine Spalte als Schlüssel? (c) Stelle eine Vermutung auf, welche Schlüssel künstlich sind. (d) Erstelle die Klassenkarten zu den angegebenen Tabellenschamata
M. Jakob (Gymnasium Pegnitz)
Datenbanken
20. Februar 2016
21 / 138
In diesem Abschnitt
Grundlegende Datenbankabfragen ohne verknüpfte Selektionen 2.1 Seletion und Projektion 2.2 Beispiele aus der TERRA-Datenbank 2
Grundlegende Datenbankabfragen
2
1
Seletion und Projektion
Das DBMS MySQL
Das DBMS MySQL Das bekanntestes Open Source DBMS ist MySQL. Es verwendet die Datenbanksprache SQL (Structured Query Language), mit der man aus einer Datenbankbasis Informationen mit bestimmten Eigenschaften herausfiltern und anzeigen kann.
M. Jakob (Gymnasium Pegnitz)
Datenbanken
20. Februar 2016
23 / 138
Grundlegende Datenbankabfragen
2
1
Seletion und Projektion
Selektion und Projektion
Selektion und Projektion Die . . . Projektion filtert Spalten (Attribute) Selektion filtert Zeilen mit bestimmten Eigenschaften aus der Tabelle. Selektion und Projektion werden normalerweise miteinander kombiniert
M. Jakob (Gymnasium Pegnitz)
Datenbanken
20. Februar 2016
24 / 138
2 1 Bespiel: Selektion und Projektion Grundlegende Datenbankabfragen
M. Jakob (Gymnasium Pegnitz)
Datenbanken
Seletion und Projektion
20. Februar 2016
25 / 138
2 1 SQL-Syntax einer Tabellenanfrage Grundlegende Datenbankabfragen
Bisher
Seletion und Projektion
Jetzt
SELECT( Spalten ; Tabellen ; Bedingung)
SELECT S p a l t e n FROM T a b e l l e n WHERE Bedingung
M. Jakob (Gymnasium Pegnitz)
Datenbanken
20. Februar 2016
26 / 138
In diesem Abschnitt
Grundlegende Datenbankabfragen ohne verknüpfte Selektionen 2.1 Seletion und Projektion 2.2 Beispiele aus der TERRA-Datenbank 2
2 2 Beispiele aus der TERRA-Datenbank Grundlegende Datenbankabfragen
Beispiele
Alle nachfolgenden Beispiele sind aus der åTERRA-Datenbank entnommen. Dort sind auch die Tabellenschemata zu finden. Wir verwenden zunächst nur die Tabelle BERG (B_NAME, GEBIRGE, HOEHE, JAHR, LAENGE, BREITE)
M. Jakob (Gymnasium Pegnitz)
Datenbanken
20. Februar 2016
28 / 138
Grundlegende Datenbankabfragen
2
2
Beispiele
Beispiel 1
Es soll die gesamte Tabelle Berg ausgegeben werden. SELECT * FROM BERG
Der Asterix „*“ ist eine Abkürzung, wenn alle Spalten selektiert werden sollen. WHERE kann entfallen, wenn keine speziellen Zeilen ausgewählt werden sollen.
TERRA
M. Jakob (Gymnasium Pegnitz)
Datenbanken
20. Februar 2016
29 / 138
Grundlegende Datenbankabfragen
2
2
Beispiele
Beispiel 2
Aus der Tabelle Berg sollen nur die Spalten B_NAME und HOEHE selektiert werden. SELECT B_NAME, HOEHE FROM BERG TERRA
M. Jakob (Gymnasium Pegnitz)
Datenbanken
20. Februar 2016
30 / 138
Grundlegende Datenbankabfragen
2
2
Beispiele
Beispiel 3 Aus der Tabelle Berg sollen alle Berge (Name und Höhe) des Himalaya ausgegeben werden. SELECT B_NAME, HOEHE FROM BERG WHERE GEBIRGE = " Himalaya "
Name und Höhe der Berge sind Projektionen (Spalten) Himalaya ist eine Selektion zur Auswahl der Zeilen, die als Gebirge den Eintrag “Himalaya“ haben Datentypen die Zeichenfolgen enthalten (Strings) müssen in doppelte Hochkommata gesetzt werden.
TERRA
M. Jakob (Gymnasium Pegnitz)
Datenbanken
20. Februar 2016
31 / 138
Beispiele 2 2 Vergleichsoperatoren für die Selektion WHERE, 1. Teil Grundlegende Datenbankabfragen
Operatoren für die Selektion können sein: <, >, <>, =, >=, <= wie aus der Tabellenkalkulation bekannt. between ... and ... filtert Zeilen deren Merkmal zwischen den angegebenen Werten liegt. Beides kann auf alle Datentypen angewandt werden. Bei Zeichenketten wird die alphabetische Ordnung zugrunde gelegt.
M. Jakob (Gymnasium Pegnitz)
Datenbanken
20. Februar 2016
32 / 138
Grundlegende Datenbankabfragen
2
2
Beispiele
Beispiel 4
Gesucht sind alle Berge, die mindestens 7000 Meter hoch sind. SELECT * FROM BERG WHERE HOEHE >= 7000
M. Jakob (Gymnasium Pegnitz)
Datenbanken
20. Februar 2016
33 / 138
Grundlegende Datenbankabfragen
2
2
Beispiele
Beispiel 5
Gesucht sind alle Berge, die zwischen 1900 und 1950 erstmals bestiegen wurden. SELECT * FROM BERG WHERE j a h r between 1900 and 1950
M. Jakob (Gymnasium Pegnitz)
Datenbanken
20. Februar 2016
34 / 138
Grundlegende Datenbankabfragen
2
2
Beispiele
Beispiel 6
Gesucht sind alle Berge, mit einem „M“ oder „N“ beginnen. SELECT * FROM BERG WHERE B_NAME between "M" and "O"
M. Jakob (Gymnasium Pegnitz)
Datenbanken
20. Februar 2016
35 / 138
Beispiele 2 2 Bisherige SQL-Syntax einer Tabellenanfrage Grundlegende Datenbankabfragen
Für bedingung gilt folgende Syntax:
M. Jakob (Gymnasium Pegnitz)
Datenbanken
20. Februar 2016
36 / 138
Grundlegende Datenbankabfragen
2
2
Beispiele
Übung
åÜ 2.1: TERRA-Datenbank Bearbeite die Aufgaben 1-4b der Terra-Datenbank
M. Jakob (Gymnasium Pegnitz)
Datenbanken
20. Februar 2016
37 / 138
Grundlegende Datenbankabfragen
2
2
Beispiele
åÜ 2.2: Bundesliga-Datenbank Gib die SQL-Querries zu folgenden Anfragen an die Bundesliga-Datenbank an. (a) Liste alle Verein der Datenbank auf. (b) Liste alle Vereine der zweiten Liga auf. (c) Liste alle Spieler auf, die weniger als 3 Tore geschossen haben (d) Liste alle brasilianischen Spieler auf (e) Liste alle ausländischen Spieler auf (f) Gesucht sind alle Spiele, bei der die Heimmannschaft kein Tore geschossen hat. (g) Gesucht sind alle Vereine, die nicht in der ersten Liga spielen (h) Gesucht sind alle Spiele des ersten Spieltags (i) Gesucht sind alle Spiele, die um 18.30 Uhr begonnen haben.
M. Jakob (Gymnasium Pegnitz)
Datenbanken
20. Februar 2016
38 / 138
Grundlegende Datenbankabfragen
2
2
Beispiele
åÜ 2.3: Wetter-Datenbank Gib die SQL-Querries zu folgenden Anfragen an die Wetter-Datenbank an. (a) Liste alle Wetterstation der Datenbank auf. (b) Liste alle Wettermessungen (nur Stations_ID und Datum) auf, die keinen Sonnenschein gemessen haben. (c) Liste alle Wettermessungen auf (Stations_ID, Datum, Niederschlagshoehe), die zwischen 10 und 50 mm Niederschlag gemessen haben. (d) Liste Wetterstationen auf, die nicht vom DWD betrieben werden. (e) Welche Wetterstationen liegen weiter über dem Meerespiegel als Pegnitz?
M. Jakob (Gymnasium Pegnitz)
Datenbanken
20. Februar 2016
39 / 138
Grundlegende Datenbankabfragen
2
2
Beispiele
Übung Ü 2.4: Eigene DB-Abfrage formulieren Formuliere jweils ein Fragestellungen und den dazugehörigen SQL-Befehl mit der angegebenen Bediungung an eine Datenbank deiner Wahl. (a) Es sollen alle Zeilen ausgegeben werden aber nicht alle Spalten (b) Es soll nur eine Projektion aber keine Selektion stattfinden (c) Es sollen alle Spalten ausgegeben werden aber nicht alle Zeilen (d) Es soll nur eine Selektion aber keine Projektion stattfinden (e) Es soll eine Selektion und eine Projektion stattfinden åcia-Datenbank åTERRA-Datenbank åBundesliga-Datenbank åWetter-Datenbank M. Jakob (Gymnasium Pegnitz)
Datenbanken
20. Februar 2016
40 / 138
In diesem Abschnitt
3
3.1 3.2 3.3 3.4
Erweiterte Abfragen an eine Tabelle Bedingungen verbinden Zeichenfolgen suchen Ausgaben Sortieren und begrenzen Vollständiger select-Term
Erweiterte Abfragen an eine Tabelle
3
1
Bedingungen verbinden
Beispiel 1
Gesucht sind alle Berge des Himalaya, die mindestens 7000 Meter hoch sind. SELECT * FROM BERG WHERE HOEHE >= 7000 AND Gebirge = ’Himalaya ’
M. Jakob (Gymnasium Pegnitz)
Datenbanken
20. Februar 2016
42 / 138
Erweiterte Abfragen an eine Tabelle
3
1
Bedingungen verbinden
Beispiel 2
Gesucht sind alle Berge des Himalaya und der Anden. SELECT * FROM BERG WHERE Gebirge = ’Anden ’ OR Gebirge = ’Himalaya ’
M. Jakob (Gymnasium Pegnitz)
Datenbanken
20. Februar 2016
43 / 138
Erweiterte Abfragen an eine Tabelle
3
1
Bedingungen verbinden
Beispiel 3
Gesucht sind alle Berge über 8000 m außerhalb des Himalaya. SELECT * FROM BERG WHERE HOEHE >=8000 AND NOT( Gebirge = ’Himalaya ’ )
M. Jakob (Gymnasium Pegnitz)
Datenbanken
20. Februar 2016
44 / 138
Bedingungen verbinden 3 1 Logische Operatoren für die Selektion WHERE Erweiterte Abfragen an eine Tabelle
Die logischen Operatoren für die Selektion sind NOT, AND, OR wie aus der Tabellenkalkulation bekannt. Beachte: AND ist genau dann wahr ist, wenn beide Ausdrücke wahr sind, OR ist genau dann wahr ist, wenn mindestens ein Ausdruck wahr ist und NOT ist genau dann wahr ist, wenn der Ausdruck falsch ist.
M. Jakob (Gymnasium Pegnitz)
Datenbanken
20. Februar 2016
45 / 138
Bedingungen verbinden 3 1 Erweiterte Syntaxdiagramme der WHERE-Clause Erweiterte Abfragen an eine Tabelle
Für bedingung ist das Syntaxdiagramm noch unverändert:
M. Jakob (Gymnasium Pegnitz)
Datenbanken
20. Februar 2016
46 / 138
In diesem Abschnitt
3
3.1 3.2 3.3 3.4
Erweiterte Abfragen an eine Tabelle Bedingungen verbinden Zeichenfolgen suchen Ausgaben Sortieren und begrenzen Vollständiger select-Term
3 Zeichenfolgen Selektieren Erweiterte Abfragen an eine Tabelle
2
Zeichenfolgen suchen
Mit dem like-Operator kann man in Zeichenfolgen nach Mustern suchen. % steht für eine beliebige Zeichenfolge (auch für eine der Länge Null) und _ steht für ein einzelnes beliebiges Zeichenfolge.
M. Jakob (Gymnasium Pegnitz)
Datenbanken
20. Februar 2016
48 / 138
Zeichenfolgen suchen 3 2 Erweitertes Syntaxdiagramm der Bedingung Erweiterte Abfragen an eine Tabelle
Unverändertes Syntaxdiagramm der WHERE-Clause
Erweitertes Syntaxdiagramm der bedingung
M. Jakob (Gymnasium Pegnitz)
Datenbanken
20. Februar 2016
49 / 138
Erweiterte Abfragen an eine Tabelle
3
2
Zeichenfolgen suchen
Beispiel 1
Gesucht sind alle Berge der Alpen. SELECT * FROM BERG WHERE GEBIRGE l i k e ’% Alpen %’
M. Jakob (Gymnasium Pegnitz)
Datenbanken
20. Februar 2016
50 / 138
Erweiterte Abfragen an eine Tabelle
3
2
Zeichenfolgen suchen
Beispiel 2
Gesucht sind alle Berge der Alpen, die eine ‘r‘ am zweiter Stelle haben. SELECT * FROM BERG WHERE GEBIRGE l i k e ’% Alpen %’ AND B_NAME l i k e ’_r%’
M. Jakob (Gymnasium Pegnitz)
Datenbanken
20. Februar 2016
51 / 138
Erweiterte Abfragen an eine Tabelle
3
2
Zeichenfolgen suchen
Übung
åÜ 3.1: TERRA-Datenbank (a) Bearbeite die Aufgaben 4c, d, e, 5, 8, 9, 11 der Terra-Datenbank (b) Gehe zum letzten Abschnitt des Skriptes (Syntaxdiagramme) und gib den Weg deiner Abfragen durch die Diagramme an.
M. Jakob (Gymnasium Pegnitz)
Datenbanken
20. Februar 2016
52 / 138
Erweiterte Abfragen an eine Tabelle
3
2
Zeichenfolgen suchen
åÜ 3.2: cia-Datenbank Gib die SQL-Querries und Syntaxwege zu folgenden Anfragen an die cia-Datenbank an. (a) Gib die Namen aller asiatischen Länder aus, die weniger als 10 Millionen Einwohner haben. (5) (b) Gib die Namen aller Länder aus, die kleiner als 500000 Quadratkilometer sind oder deren BIP unter 100 Mio Dollar liegt. (12) (c) Gib die Namen aller nicht-afrikanischen Länder aus, deren BIP unter 100 Mio Dollar liegt. (10) (d) Gib die Namen aller europäischen Länder aus, die weniger als 10 Millionen Einwohner haben. (30 − 40) (e) Gib die Namen aller amerikanischen Länder aus, die weniger als 10 Millionen Einwohner haben. (35 − 45)
M. Jakob (Gymnasium Pegnitz)
Datenbanken
20. Februar 2016
53 / 138
Erweiterte Abfragen an eine Tabelle
3
2
Zeichenfolgen suchen
Übung
Ü 3.3: Eigene DB-Abfrage formulieren Formuliere, passend zu diesem Abschnitt, vier eigene Anfragen mit steigendem Schwierigkeitsgrad an eine unserer Datenbanken. åcia-Datenbank åTERRA-Datenbank åBundesliga-Datenbank åWetter-Datenbank
M. Jakob (Gymnasium Pegnitz)
Datenbanken
20. Februar 2016
54 / 138
In diesem Abschnitt
3
3.1 3.2 3.3 3.4
Erweiterte Abfragen an eine Tabelle Bedingungen verbinden Zeichenfolgen suchen Ausgaben Sortieren und begrenzen Vollständiger select-Term
Erweiterte Abfragen an eine Tabelle
3
3
Ausgaben Sortieren und begrenzen
Ausgaben sortieren
Mit der ORDER BY-Clause kann man Ausgaben sortieren. Das Schlüsselwort ASC sortiert aufsteigend (Voreinstellung) DESC sortiert absteigend.
M. Jakob (Gymnasium Pegnitz)
Datenbanken
20. Februar 2016
56 / 138
Erweiterte Abfragen an eine Tabelle
3
3
Ausgaben Sortieren und begrenzen
Ausgaben begrenzen
Mit der LIMIT-Clause kann man bei langen Tabellen die Anzahl der Ergebnisse begrenzen. LIMIT n liefert die ersten n Datensätze, LIMIT n, m lässt die ersten n Datensätze weg und zeigt die nächsten m.
M. Jakob (Gymnasium Pegnitz)
Datenbanken
20. Februar 2016
57 / 138
Erweiterte Abfragen an eine Tabelle
3
3
Ausgaben Sortieren und begrenzen
Beispiel 1 (TERRA)
Gesucht sind alle Länder, sortiert nach der Fläche mit dem kleinsten beginnend. SELECT * FROM LAND ORDER BY FLAECHE TERRA
M. Jakob (Gymnasium Pegnitz)
Datenbanken
20. Februar 2016
58 / 138
Erweiterte Abfragen an eine Tabelle
3
3
Ausgaben Sortieren und begrenzen
Beispiel 2 (TERRA)
Gesucht sind alle Länder, sortiert nach der Fläche mit dem größten beginnend. SELECT * FROM LAND ORDER BY FLAECHE DESC TERRA
M. Jakob (Gymnasium Pegnitz)
Datenbanken
20. Februar 2016
59 / 138
Erweiterte Abfragen an eine Tabelle
3
3
Ausgaben Sortieren und begrenzen
Beispiel 3 (TERRA)
Gesucht sind die drei flächengrößten Länder. SELECT * FROM LAND ORDER BY FLAECHE DESC LIMIT 3 TERRA
M. Jakob (Gymnasium Pegnitz)
Datenbanken
20. Februar 2016
60 / 138
Erweiterte Abfragen an eine Tabelle
3
3
Ausgaben Sortieren und begrenzen
Beispiel 4 (TERRA)
Gesucht sind die Länder mit der viert- bis zehntgrößten Fläche SELECT * FROM LAND ORDER BY FLAECHE DESC LIMIT 3 , 7 TERRA
M. Jakob (Gymnasium Pegnitz)
Datenbanken
20. Februar 2016
61 / 138
Erweiterte Abfragen an eine Tabelle
3
3
Ausgaben Sortieren und begrenzen
Beispiel 5 (TERRA)
Gesucht sind die Berge sortiert nach dem Gebirge und dann nach der Berghöhe. SELECT * FROM BERG ORDER BY GEBIRGE ASC,HOEHE DESC TERRA
M. Jakob (Gymnasium Pegnitz)
Datenbanken
20. Februar 2016
62 / 138
Ausgaben Sortieren und begrenzen 3 3 Syntaxdiagramm: order by-Term (vollständig) Erweiterte Abfragen an eine Tabelle
M. Jakob (Gymnasium Pegnitz)
Datenbanken
20. Februar 2016
63 / 138
Ausgaben Sortieren und begrenzen 3 3 Syntaxdiagramm: limit-Term (vollständig) Erweiterte Abfragen an eine Tabelle
M. Jakob (Gymnasium Pegnitz)
Datenbanken
20. Februar 2016
64 / 138
Erweiterte Abfragen an eine Tabelle
3
3
Ausgaben Sortieren und begrenzen
Übung åÜ 3.4: Wetter-Datenbank Gib die SQL-Querries und Syntaxwege an. (a) Gib die Wetterstationen alphabetisch sortiert aus. (b) Gib Standort und geographische Breite der Wetterstation von Nord nach Süd sortiert an. (c) Gib die zehn höchstgelegenen Wetterstationen an. (d) An welchen Tagen hat es in München (Stations_ID = 10870) nicht geregnet? Sortiere nach dem Datum aufsteigend. (e) Gib alle Wettermessungen an, die weder Regen noch Sonnenschein und maximale Windgeschwindigkeit kleiner 10 gemessen haben. Die Sortierung soll nach der Wetterstation erfolgen und innerhalb dieser Sortierung soll nach der max. Windgeschwindigkeit sortiert werden. (f) Gib die 20 windstärksten Wettermessungen aus. M. Jakob (Gymnasium Pegnitz)
Datenbanken
20. Februar 2016
65 / 138
Erweiterte Abfragen an eine Tabelle
3
3
Ausgaben Sortieren und begrenzen
Übung
Ü 3.5: Eigene DB-Abfrage formulieren Formuliere, passend zu diesem Abschnitt, vier eigene Anfragen mit steigendem Schwierigkeitsgrad an eine der unten angegebenen Datenbanken. åcia-Datenbank åTERRA-Datenbank åBundesliga-Datenbank
M. Jakob (Gymnasium Pegnitz)
Datenbanken
20. Februar 2016
66 / 138
In diesem Abschnitt
3
3.1 3.2 3.3 3.4
Erweiterte Abfragen an eine Tabelle Bedingungen verbinden Zeichenfolgen suchen Ausgaben Sortieren und begrenzen Vollständiger select-Term
3 4 Mehrfachnennungen vermeiden Erweiterte Abfragen an eine Tabelle
Vollständiger select-Term
Gesucht sind alle Gebirge die in der Tabelle Berg enthalten sind. SELECT GEBIRGE FROM BERG Erzeugt Mehrfachnennungen. TERRA
M. Jakob (Gymnasium Pegnitz)
Datenbanken
20. Februar 2016
68 / 138
3 4 Mehrfachnennungen vermeiden Erweiterte Abfragen an eine Tabelle
Vollständiger select-Term
Das Schlüsselwort DISTINCT nach dem Schlüsselwort SELECT vermeidet Mehrfachnennungen
M. Jakob (Gymnasium Pegnitz)
Datenbanken
20. Februar 2016
69 / 138
Erweiterte Abfragen an eine Tabelle
3
4
Vollständiger select-Term
Ausdrücke in Spalten
Gib die Berge der TERRA-Datenbank mit der Angabe der vollständigen Tausender an. SELECT BERG, HOEHE, round (HOEHE / 1000) FROM BERG TERRA
M. Jakob (Gymnasium Pegnitz)
Datenbanken
20. Februar 2016
70 / 138
Erweiterte Abfragen an eine Tabelle
3
4
Vollständiger select-Term
Ausdrücke in Spalten
In Spalten können Rechenausdrücke mit den üblichen Rechenzeichen angegeben werden.
M. Jakob (Gymnasium Pegnitz)
Datenbanken
20. Februar 2016
71 / 138
3 Umbenennen von Spalten Erweiterte Abfragen an eine Tabelle
4
Vollständiger select-Term
Gib der Spalte der vollständigen Tausender den Name „Tausender“ SELECT BERG, HOEHE, round (HOEHE / 1000) AS ’ Tausender ’ FROM BERG TERRA
M. Jakob (Gymnasium Pegnitz)
Datenbanken
20. Februar 2016
72 / 138
3 Umbenennen von Spalten Erweiterte Abfragen an eine Tabelle
4
Vollständiger select-Term
Mit dem Schlüsselwort AS lassen sich Spalten umbenennen.
M. Jakob (Gymnasium Pegnitz)
Datenbanken
20. Februar 2016
73 / 138
3 4 åÜ 3.6: cia-Datenbank
Erweiterte Abfragen an eine Tabelle
Übung
Vollständiger select-Term
Gib die SQL-Querries an. (a) Welche Regionen sind die der Datenbank verzeichnet? (b) Gib den Namen die Fläche, die Einwohnerzahl und die Einwohner pro Fläche in Tausenden an. Diese letztes Spalte soll die Überschrift Einw. pro qkm in Tsd bekommen. Sortiere nach dieser letzten Spalte. (c) Gib den Namen das BIP, die Einwohnerzahl und das BIP pro Einwohner an. Diese letztes Spalte soll die Überschrift BIP pro Einw bekommen. Sortiere nach dieser letzten Spalte. Es sollen nur die ersten 20 Datensätze ausgegeben werden. (d) Gib für alle europäischen Länder den Namen, die Region und das BIP pro Quadratkilometer an. Sortiere alphabetisch nach der Region und innerhalb einer Region nach dem BIP pro Quadratkilometer. M. Jakob (Gymnasium Pegnitz)
Datenbanken
20. Februar 2016
74 / 138
Vollständiger select-Term 3 4 åÜ 3.7: Bundesliga-Datenbank
Erweiterte Abfragen an eine Tabelle
Übung
Gib die SQL-Querries und Syntaxwege an. (a) Welche Nationalitäten gibt es unter den Spielern der Bundesliga? Die Ausgabe soll alphabetisch sortiert sein und die Überschrift vertretene Nationen besitzen. (b) Welche Trikot-Nummern wurden vergeben? Ergebnis sortiert angeben! (c) Gib alle Spalten und die Gesamtzahl der Tore von den Spielen aus, bei denen mehr als vier Tore gefallen sind. Sortiere nach dem Datum. (d) Gib die Spiele sortiert aus, die 2013 nach 18.00 Uhr stattfanden. Bezeichne die Uhrzeitspalte mit Abendspiel. (e) Die Torgefährlichkeit eines Spielers berechnet man mittels 2· Torzahl + Vorlagenzahl. Gib die Spieler„ die nach dieser Formel am torgefährlichsten sind, und ihre Torgefährlichkeit sortiert aus. M. Jakob (Gymnasium Pegnitz)
Datenbanken
20. Februar 2016
75 / 138
Erweiterte Abfragen an eine Tabelle
3
4
Vollständiger select-Term
Übung
Ü 3.8: Eigene DB-Abfrage formulieren Formuliere, passend zu diesem Abschnitt, zwei eigene Anfragen an eine der unten angegebenen Datenbanken. åcia-Datenbank åTERRA-Datenbank åBundesliga-Datenbank
M. Jakob (Gymnasium Pegnitz)
Datenbanken
20. Februar 2016
76 / 138
3 4 åÜ 3.9: TERRA-Datenbank
Erweiterte Abfragen an eine Tabelle
Übung
Vollständiger select-Term
Formuliere, zu den angegebenen Syntaxwegeg je eine Anfrage an die TERRA-Datenbank (a) s 2−6−8−4−2 f/f w 2 b 1 −4/b /w o 1 /o /s (b) s 2−7−8−4−2 f/f o 1−4 / o l 1 /l /s M. Jakob (Gymnasium Pegnitz)
Datenbanken
20. Februar 2016
77 / 138
In diesem Abschnitt
Gruppieren und Zusammenfassen von Datensätzen 4.1 Aggregatfunktionen 4.2 Grupierungen 4.3 Auswahl von Gruppen 4
Gruppieren und Zusammenfassen von Datensätzen
4
1
Aggregatfunktionen
åBeispiel 1 (TERRA)
Wie viele Flüsse sind in der Datenbank
M. Jakob (Gymnasium Pegnitz)
Datenbanken
20. Februar 2016
79 / 138
Gruppieren und Zusammenfassen von Datensätzen
4
1
Aggregatfunktionen
åBeispiel 1 (TERRA)
Wie viele Flüsse sind in der Datenbank SELECT count ( * ) as ’Anzahl der Flüsse ’ FROM FLUSS
M. Jakob (Gymnasium Pegnitz)
Datenbanken
20. Februar 2016
79 / 138
Gruppieren und Zusammenfassen von Datensätzen
4
1
Aggregatfunktionen
Aggregatfunktionen
Aggregatfunktionen werten Tabellen statistisch aus. Im select-Term sind erlaubt: COUNT (Ausdruck) Anzahl der Datensätze SUM (Ausdruck) Summe, AVG (Ausdruck) Durchschnitt, der Werte von Ausdruck MIN (Ausdruck) Minimum MAX (Ausdruck) Maximum aller Werte von Ausdruck
M. Jakob (Gymnasium Pegnitz)
Datenbanken
20. Februar 2016
80 / 138
In diesem Abschnitt
Gruppieren und Zusammenfassen von Datensätzen 4.1 Aggregatfunktionen 4.2 Grupierungen 4.3 Auswahl von Gruppen 4
Gruppieren und Zusammenfassen von Datensätzen
4
2
Gruppierungen
åBeispiel 1 (TERRA)
Liste die Anzahl der Zuflüsse in jedes Meer auf SELECT Meer , count ( * ) as Z u f l ü s s e FROM FLUSS Group by Meer
M. Jakob (Gymnasium Pegnitz)
Datenbanken
20. Februar 2016
82 / 138
Gruppieren und Zusammenfassen von Datensätzen
4
2
Gruppierungen
åBeispiel 2 (TERRA)
Liste die Anzahl der Wüsten, gruppiert nach der Wüstenart auf SELECT WUESTENART, count ( * ) FROM WUESTE Group by WUESTENART
M. Jakob (Gymnasium Pegnitz)
Datenbanken
20. Februar 2016
83 / 138
Gruppieren und Zusammenfassen von Datensätzen
4
2
Gruppierungen
group by-Klausel
group by gruppiert Datensätze nach bestimmten Eigenschaften. Die Aggregatfunktionen werden dann auf die Gruppen einzeln angewendet. Außer den Aggregatfunktionen dürfen in der select-Klausel nur Attribute vorkommen, die in der group by-Klausel aufgeführt sind.
M. Jakob (Gymnasium Pegnitz)
Datenbanken
20. Februar 2016
84 / 138
Gruppieren und Zusammenfassen von Datensätzen
4
2
Gruppierungen
åBeispiel 3 (TERRA)
Liste die Gesamtfläche der Wüstenarten SELECT WUESTENART, sum(FLAECHE) AS Gesamtflaeche FROM WUESTE group by WUESTENART ORDER BY Gesamtflaeche
M. Jakob (Gymnasium Pegnitz)
Datenbanken
20. Februar 2016
85 / 138
In diesem Abschnitt
Gruppieren und Zusammenfassen von Datensätzen 4.1 Aggregatfunktionen 4.2 Grupierungen 4.3 Auswahl von Gruppen 4
Gruppieren und Zusammenfassen von Datensätzen
4
3
Auswahl von Gruppen
having-Klausel
having-Klausel Oft werden bei einer Gruppierung nur die Gruppen gewünscht, die bestimmte Bedingungen erfüllen. Diese Bedingungen werden in der having-Kausel formuliert. Dabei dürfen Gruppierungsausdrücke verwendet werden. Die Anfragen werden in folgender Reihenfolge ausgewertet: 1
Auswahl der Zeilen durch die WHERE-Klausel,
2
Bildung der Gruppen durch die GROUP BY-Klausel,
3
Auswahl der Gruppen, die die HEAVING-Klausel erfüllen.
M. Jakob (Gymnasium Pegnitz)
Datenbanken
20. Februar 2016
87 / 138
Gruppieren und Zusammenfassen von Datensätzen
4
3
Auswahl von Gruppen
åBeispiel 1 (TERRA)
Liste die Anzahl der Nachbarländer für jedes Land auf, das mehr als 5 Nachbarn hat. s e l e c t LAND1, count ( * ) AnzahlNachbarlaender from IST_BENACHBART_ZU group by LAND1 having count ( * ) > 5 order by anzahlNachbarlaender desc
M. Jakob (Gymnasium Pegnitz)
Datenbanken
20. Februar 2016
88 / 138
Auswahl von Gruppen 4 3 åÜ 4.1: cia-Datenbank (analog Übg 2 cia)
Gruppieren und Zusammenfassen von Datensätzen
Gib die SQL-Querries an. (a) Wie viele Länder enthält die cia-Datenbank? (b) Ermittle die Weltbevölkerung. (c) Gib das Durchschnitts-Bruttoinlandsprodukt an. (d) Wie groß sind Bevölkerung und Bruttoinlandsprodukt für ganz Europa? (e) Ermittle die Flächen des kleinsten und größten Landes.
M. Jakob (Gymnasium Pegnitz)
Datenbanken
20. Februar 2016
89 / 138
Auswahl von Gruppen 4 3 åÜ 4.2: cia-Datenbank (analog Übg 4 Aufg 1-5 cia)
Gruppieren und Zusammenfassen von Datensätzen
Gib die SQL-Querries an. (a) Zeige von jeder Region den Namen und die Anzahl der Länder an. (b) Zeige für alle Regionen den Namen und die Anzahl der Länder mit mehr als 10 Millionen Einwohnern an. (c) Welche Regionen haben eine Gesamtbevölkerung von mindestens 100 Millionen? (d) Stelle die Regionen der Erde mit Einwohnerzahl und Gesamtfläche dar, geordnet nach der Einwohnerzahl. (e) Wie vorhergehende Aufgabe aber nur die Regionen von Amerika.
M. Jakob (Gymnasium Pegnitz)
Datenbanken
20. Februar 2016
90 / 138
Auswahl von Gruppen 4 3 åÜ 4.3: WM-Titel-Datenbank (analog Übg 4 Aufg 6-10 WMTitel) Gruppieren und Zusammenfassen von Datensätzen
Gib die SQL-Querries an. (a) Ermittle die von jedem Weltmeister erreichte Gesamtzahl von WM-Punkten und stelle das Ergebnis nach WM-Punkten geordnet dar. (b) Welche Gesamtpunktzahlen der Konstrukteursweltmeisterschaft haben die Teams in den neunziger Jahren erreicht? (c) Wie vorherige Aufgabe, allerdings sollen nur Teams mit mindestens 100 Punkten ausgegeben werden. (d) Ermittle für die Jahre, in denen Michael Schumacher gefahren ist, die durchschnittliche Zahl der erreichten Team-Punkte des Konstrukteursweltmeisters und stelle die Liste geordnet dar. (e) Ermittle ab 1995 in geordneter Reihenfolge die Gesamtzahl der Team-Punkte für Teams mit mindestens 200 Punkten. M. Jakob (Gymnasium Pegnitz)
Datenbanken
20. Februar 2016
91 / 138
4 3 åÜ 4.4: TERRA-Datenbank
Gruppieren und Zusammenfassen von Datensätzen
Auswahl von Gruppen
Gib die SQL-Querries an. (a) Gesucht sind alle Flüsse (Name), die in die Ostsee oder Nordsee münden und über 1000 km lang sind. [4] (b) Gesucht sind alle Wüsten (Name) der Art ’Sandwueste’ mit einer Fläche größer als 25000 qkm. [9] (c) Gib für alle Millionenstädte, die in den Tropen liegen, die Namen und ihre Koordinaten an. (Die Tropen liegen zwischen 23.27 Grad nördlicher und 23.27 Grad südlicher Breite.) [65] (d) Gib die Ländernamen und die Zahl der Einwohner für alle Länder an, die mehr als 45 Millionen Einwohner haben. Ordnen Sie nach der Einwohnerzahl! [25] (e) Gesucht ist der Anteil der Meere an der Erdoberfläche (Angabe in Prozent). Hinweise: Oberflächenformel: O = 4πr 2 , Erdradius gleich 6370 km. [1] M. Jakob (Gymnasium Pegnitz)
Datenbanken
20. Februar 2016
92 / 138
4 3 åÜ 4.5: TERRA-Datenbank
Gruppieren und Zusammenfassen von Datensätzen
Auswahl von Gruppen
Gib die SQL-Querries an. (a) Gesucht ist für alle Inselgruppen deren Gesamtfläche. [41] (b) Gesucht ist von jeder Inselgruppe die Fläche der größten Insel. [41] (c) Gesucht sind alle Inselgruppen sowie die Anzahl der zugehörigen Inseln für alle Inselgruppen mit mehr als einer Insel. [21] (d) Gesucht sind alle Flüsse mit mehr als zwei an ihnen liegenden Städten, sortiert nach dieser Anzahl. [21] (e) Gesucht sind alle Städte durch die mehr als einem Fluss fließt, sortiert nach dieser Anzahl. [8] (f) Gesucht sind alle Städte, in denen mehrere Organisationen ihren Sitz haben. [10] (g) Welche Länder haben mehr als 4 Millionenstädte? [7] M. Jakob (Gymnasium Pegnitz)
Datenbanken
20. Februar 2016
93 / 138
In diesem Abschnitt
Verknüpfung von Tabellen 5.1 Basisabfragen 5.2 Schema für Join-Abfragen 5
Verknüpfung von Tabellen
5
1
Basisabfragen
Bespiel Gesucht ist der Name des Klassenleiters der 5. Klasse.
M. Jakob (Gymnasium Pegnitz)
Datenbanken
20. Februar 2016
95 / 138
Verknüpfung von Tabellen
5
1
Basisabfragen
Joins
Joins Oft werden bei einer SQL-Anfrage Daten gewünscht, die aus verschiedenen Tabellen stammen. Dazu müssen die Tabellen verknüpft werden. Solche Verknüpfungen nennt man Joins. Die Verknüpfung der Tabellen erfolgt durch Angabe der beteiligten Tabellen in der From- Klausel. Bei gleichen Spaltennamen aus verschiedenen Tabellen muss in der Abfragen zusätzlich der Tabellenname angegeben werden. Man schreibt: Tabellenname.Attributname.
M. Jakob (Gymnasium Pegnitz)
Datenbanken
20. Februar 2016
96 / 138
Verknüpfung von Tabellen
5
1
Basisabfragen
Beispiel 1
M. Jakob (Gymnasium Pegnitz)
Datenbanken
20. Februar 2016
97 / 138
Verknüpfung von Tabellen
5
1
Basisabfragen
Beispiel 1
Die Spalte Name ist zweideutig (Lehrernamen, Klassenname). Es muss der Klassenname mit Klasse.Name und der Name der Lehrkraft mit Lehrkraft.Name angesprochen werden. M. Jakob (Gymnasium Pegnitz)
Datenbanken
20. Februar 2016
97 / 138
Verknüpfung von Tabellen
5
1
Basisabfragen
Select Anfrage Gewünscht ist eine Liste der Klassenleiter mit den jeweiligen Klassen. SELECT Klasse . Name, L e h r k r a f t . Name FROM L e h r k r a f t , Klasse WHERE PersNr = K l a s s e n l e i t u n g ;
M. Jakob (Gymnasium Pegnitz)
Datenbanken
20. Februar 2016
98 / 138
Verknüpfung von Tabellen
5
1
Basisabfragen
åBeispiel 1 (TERRA)
Gewünscht ist eine Liste welches Land zu welchem Kontinent gehört.
M. Jakob (Gymnasium Pegnitz)
Datenbanken
20. Februar 2016
99 / 138
Verknüpfung von Tabellen
5
1
Basisabfragen
åBeispiel 1 (TERRA)
Gewünscht ist eine Liste welches Land zu welchem Kontinent gehört. SELECT L_Name , K_Name FROM LAND, UMFASST WHERE LAND . L_ID = UMFASST. L_ID
M. Jakob (Gymnasium Pegnitz)
Datenbanken
20. Februar 2016
99 / 138
Verknüpfung von Tabellen
5
1
Basisabfragen
Joins Joins Lässt man die WHERE-Klausel bei Joins mit zwei Tabellen weg, werden in der Ergebnistabelle alle Zeilen der ersten Tabelle mit allen Zeilen der zweiten Tabelle kombiniert. Wir erhalten also eine Tabelle deren Zeilenzahl so groß ist, wie das Produkt der Zeilenzahlen der Ausgangstabelle. Die Verknüpfung der Tabellen erfolgt durch Angabe der beteiligten Tabellen in der From- Klausel. Bei gleichen Spaltennamen aus verschiedenen Tabellen muss in der Abfragen zusätzlich der Tabellenname angegeben werden. Man schreibt: Tabellenname.Attributname.
M. Jakob (Gymnasium Pegnitz)
Datenbanken
20. Februar 2016
100 / 138
Verknüpfung von Tabellen
5
1
Basisabfragen
Bespiel
SELECT Klasse . Name, L e h r k r a f t . Name FROM L e h r k r a f t , Klasse liefert also 7 ∗ 2 = 14 Zeilen und 5 + 3 Spalten. Viele davon sind unsinnig. M. Jakob (Gymnasium Pegnitz)
Datenbanken
20. Februar 2016
101 / 138
Verknüpfung von Tabellen
5
1
Basisabfragen
Bespiel
M. Jakob (Gymnasium Pegnitz)
Datenbanken
20. Februar 2016
102 / 138
Verknüpfung von Tabellen
5
1
Basisabfragen
åBeispiel (TERRA)
SELECT L_Name , K_Name FROM LAND, UMFASST Es werden alle Länder(190) mit allen UMFASST-Zeilen (188) kombiniert es entstehen 35720 Zeilen.
M. Jakob (Gymnasium Pegnitz)
Datenbanken
20. Februar 2016
103 / 138
5 1 åÜ 5.1: TERRA-Datenbank Verknüpfung von Tabellen
Basisabfragen
Gib die SQL-Querries an. (a) Gesucht ist eine Aufstellung der Länder mit ihren Landesteilen. [551] (b) Gesucht ist eine Aufstellung aller deutschen Städte. [114] (c) Gesucht ist eine Aufstellung aller Organisationen mit ihrem Hauptsitz. [55] (d) Gesucht ist eine Aufstellung aller Flüsse, mit ihren Ländern, durch die sie fließen. [185]
M. Jakob (Gymnasium Pegnitz)
Datenbanken
20. Februar 2016
104 / 138
5 1 åÜ 5.2: Bundesliga-Datenbank Verknüpfung von Tabellen
Basisabfragen
Gib die SQL-Querries an. (a) Gesucht ist die Vereinskader (Vereinsname, Spielername). (b) Gesucht ist die Größe der Vereinskader (c) Was liefert folgende Abfrage? Warum ist eine Abfrage über 3 Tabellen nötig? Select S p i e l t a g , h . Name as Heimmannschaft , g . Name as Gastmannschaft , Tore_Heim , Tore_Gast from V e r e i n as h , S p i e l , V e r e i n as g where g . V_ID = Gast and h . V_ID = Heim and h . L i g a = 1 and Tore_Heim = Tore_Gast Order By S p i e l t a g (d) Es soll für jeden Spieltag die Anzahl der Unentschieden in der ersten Liga angegeben werden. M. Jakob (Gymnasium Pegnitz)
Datenbanken
20. Februar 2016
105 / 138
In diesem Abschnitt
Verknüpfung von Tabellen 5.1 Basisabfragen 5.2 Schema für Join-Abfragen 5
5 Schema für Join-Abfragen åSchema für Joins (TERRA) Verknüpfung von Tabellen
Gewünscht ist eine Liste der Inseln samt Fläche, die größer als 50000 Quadratkilometer sind und die dazugehörigen Landesteile und Länder.
M. Jakob (Gymnasium Pegnitz)
Datenbanken
20. Februar 2016
107 / 138
5 Schema für Join-Abfragen åSchema für Joins (TERRA) Verknüpfung von Tabellen
1. Schritt: Welche Tabellen beinhalten die gewünschten Informationen? LAND (L_NAME, L_ID, EINWOHNER, FLAECHE, HAUPTSTADT, LT_ID) LANDTEIL (LT_NAME, LT_ID, L_ID, EINWOHNER, LAGE, HAUPTSTADT) INSEL(I_NAME, INSELGRUPPE, FLAECHE, LAENGE, BREITE) GEO_INSEL(LT_ID, L_ID, I_NAME)
M. Jakob (Gymnasium Pegnitz)
Datenbanken
20. Februar 2016
108 / 138
5 Schema für Join-Abfragen åSchema für Joins (TERRA) Verknüpfung von Tabellen
2. Schritt: Welche Spalten beinhalten die gewünschten Informationen? LAND (L_NAME, L_ID, EINWOHNER, FLAECHE, HAUPTSTADT, LT_ID) LANDTEIL (LT_NAME, LT_ID, L_ID, EINWOHNER, LAGE, HAUPTSTADT) INSEL(I_NAME, INSELGRUPPE, FLAECHE, LAENGE, BREITE) GEO_INSEL(LT_ID, L_ID, I_NAME)
M. Jakob (Gymnasium Pegnitz)
Datenbanken
20. Februar 2016
109 / 138
5 Schema für Join-Abfragen åSchema für Joins (TERRA) Verknüpfung von Tabellen
3. Schritt: Eine der Tabellen komplett ausgeben lassen SELECT * FROM LAND
M. Jakob (Gymnasium Pegnitz)
Datenbanken
20. Februar 2016
110 / 138
5 Schema für Join-Abfragen åSchema für Joins (TERRA) Verknüpfung von Tabellen
4. Schritt: Durch welche Spalte ist die Tabelle mit einer anderen verbunden? LAND (L_NAME, L_ID , EINWOHNER, FLAECHE, HAUPTSTADT, LT_ID) LANDTEIL (LT_NAME, LT_ID, L_ID , EINWOHNER, LAGE, HAUPTSTADT)
M. Jakob (Gymnasium Pegnitz)
Datenbanken
20. Februar 2016
111 / 138
5 Schema für Join-Abfragen åSchema für Joins (TERRA) Verknüpfung von Tabellen
5. Schritt: Tabellen verjoinen, d.h. zweite Tabelle in die from-Klausel Verknüpfungsspalten in die where-Klausel SELECT * FROM LAND as l , LANDTEIL as l t WHERE l . L_ID = l t . L_ID
M. Jakob (Gymnasium Pegnitz)
Datenbanken
20. Februar 2016
112 / 138
5 Schema für Join-Abfragen åSchema für Joins (TERRA) Verknüpfung von Tabellen
6. Schritt: Spalten einschränken SELECT L_Name , LT_NAME FROM LAND as l , LANDTEIL as l t WHERE l . L_ID = l t . L_ID
M. Jakob (Gymnasium Pegnitz)
Datenbanken
20. Februar 2016
113 / 138
5 Schema für Join-Abfragen åSchema für Joins (TERRA) Verknüpfung von Tabellen
7. Schritt: Nach dem gleichen Schema die nächste Tabelle dazunehmen nächste Tabelle in die from-Klausel Verknüpfungsspalten in die where-Klausel Spalten, die die Richtigkeit der Ausgabe anzeigen können in die select-Klausel SELECT L_Name , LT_NAME, g . LT_ID , g . L_ID , I_NAME FROM LAND as l , LANDTEIL as l t , GEO_INSEL as g WHERE l . L_ID = l t . L_ID and l . L_ID = g . L_ID and l t . LT_ID = g . LT_ID M. Jakob (Gymnasium Pegnitz)
Datenbanken
20. Februar 2016
114 / 138
5 Schema für Join-Abfragen åSchema für Joins (TERRA) Verknüpfung von Tabellen
8. Schritt: Letzte Tabelle dazunehmen LAND (L_NAME, L_ID, EINWOHNER, FLAECHE, HAUPTSTADT, LT_ID) LANDTEIL (LT_NAME, LT_ID, L_ID, EINWOHNER, LAGE, HAUPTSTADT) INSEL(I_NAME, INSELGRUPPE, FLAECHE, LAENGE, BREITE) GEO_INSEL(LT_ID, L_ID, I_NAME)
M. Jakob (Gymnasium Pegnitz)
Datenbanken
20. Februar 2016
115 / 138
5 Schema für Join-Abfragen åSchema für Joins (TERRA) Verknüpfung von Tabellen
8. Schritt: Letzte Tabelle dazunehmen SELECT L_Name , LT_NAME, g . LT_ID , g . L_ID , g . I_NAME , i . FLAECHE FROM LAND as l , LANDTEIL as l t , GEO_INSEL as g , INSEL as i WHERE l . L_ID = l t . L_ID and l . L_ID = g . L_ID and l t . LT_ID = g . LT_ID and g . I_NAME = i . I_NAME
M. Jakob (Gymnasium Pegnitz)
Datenbanken
20. Februar 2016
116 / 138
5 Schema für Join-Abfragen åSchema für Joins (TERRA) Verknüpfung von Tabellen
9. Schritt: Nur die benötigten Spalten und Zeilen ausgeben SELECT L_Name , LT_NAME, g . I_NAME , i . FLAECHE FROM LAND as l , LANDTEIL as l t , GEO_INSEL as g , INSEL as i WHERE l . L_ID = l t . L_ID and l . L_ID = g . L_ID and l t . LT_ID = g . LT_ID and g . I_NAME = i . I_NAME and i . FLACHE > 50000
M. Jakob (Gymnasium Pegnitz)
Datenbanken
20. Februar 2016
117 / 138
5 Schema für Join-Abfragen åÜ 5.3: TERRA-Datenbank Verknüpfung von Tabellen
Gib die SQL-Querries an. Achte auf eine möglichst kurze Anfrage ohne unnötige joins. (a) Gesucht ist eine Aufstellung aller Länder mit ihren Nachbarländern. (b) Gesucht ist eine Aufstellung aller Länder und der Anzahl ihrer Nachbarländer sortiert nach dieser Anzahl. (c) Gesucht ist eine Aufstellung aller Länder und ihrer Nachbarländer, die größer sind als das Land selbst. (d) Gesucht ist eine Aufstellung aller Länder und der Anzahl der Nachbarländer, die größer sind als das Land selbst.
M. Jakob (Gymnasium Pegnitz)
Datenbanken
20. Februar 2016
118 / 138
5 Schema für Join-Abfragen Ü 5.4: Eigene Abfragen formulieren Verknüpfung von Tabellen
Gib die SQL-Querries und Syntaxdiagramme von selbst gewählten Abfragen an, die sinnvoll sind und (a) Einen Join über zwei Tabellen enthält. (b) Einen Join über drei Tabellen enthält. (c) Einen Join über drei Tabellen enthält und alle Pfade eines SQL-Querrys enthält.
M. Jakob (Gymnasium Pegnitz)
Datenbanken
20. Februar 2016
119 / 138
Syntaxdiagramme
6
SQL-Querry
M. Jakob (Gymnasium Pegnitz)
Datenbanken
20. Februar 2016
120 / 138
Syntaxdiagramme
6
select- und From-Term
M. Jakob (Gymnasium Pegnitz)
Datenbanken
20. Februar 2016
121 / 138
6 Bedingungen in where- und having-Clause Syntaxdiagramme
M. Jakob (Gymnasium Pegnitz)
Datenbanken
20. Februar 2016
122 / 138
6 order by-, limit- und group bySyntaxdiagramme
M. Jakob (Gymnasium Pegnitz)
Datenbanken
20. Februar 2016
123 / 138
In diesem Abschnitt
Beziehungen zwischen Klassen 7.1 Wiederholung Abschnitt 1 7.2 Beziehungen und Kardinalitäten 7
7 1 Beispiel: Bibliotheksverwaltung Klassenbeziehungen
M. Jakob (Gymnasium Pegnitz)
Datenbanken
Wiederholung Abschnitt 1
20. Februar 2016
125 / 138
Wiederholung Abschnitt 1 7 1 Datentypen in SQL (unserer DB-Sprache) Klassenbeziehungen
Datentyp VARCHAR[n] CHAR[n] INT FLOAT DOUBLE DECIMAL[n;d] DATE TIME DATETIME
M. Jakob (Gymnasium Pegnitz)
Beschreibung Variable Zeichenfolge von max. n Zeichen Zeichenfolge von genau n Zeichen (Rest Leerzeichen) Ganze Zahlen (etwa von -2Mrd. Bis +2Mrd.) Kommazahlen mit 7 gültigen Ziffern Kommazahlen mit 15 gültigen Ziffern Kommazahl mit d Dezimalstellen und insgesamt n Ziffern Datumsangaben Zeitangaben Kombination aus Datums- und Zeitangabe
Datenbanken
20. Februar 2016
126 / 138
Wiederholung Abschnitt 1 7 1 Definition Tabellenschema und Schlüssel Klassenbeziehungen
Definition Tabellenschema und Schlüssel Jeder Datensatz muss eindeutig identifizierbar sein. Spalten(-kombination) die jeden Datensatz eindeutig festlegt, nennt man Schlüssel. Häufig verwendet man künstliche Schlüssel (z.B. EAN/Strichcode von Waren, Personalausweisnummer) Im Tabellenschema werden der Tabellenname, und die Attribute samt Datentypen aufgeführt und der Schlüssel unterstrichen. Tabellenschema für obige Tabelle: city(ID: INT; Name: VARCHAR[40], ContryCode: CHAR[3], Destrict: VARCHAR[40], Population: INT)
M. Jakob (Gymnasium Pegnitz)
Datenbanken
20. Februar 2016
127 / 138
Wiederholung Abschnitt 1 7 1 Gleicher Sachverhalt verschiedene Darstellungen Klassenbeziehungen
Tabellenschema und Klassenkarte sind nur zwei verschiedene Darstellungen des gleichen Sachverhalts.
BUCH(Titel: VARCHAR[99], Fachbereich: VARCHAR[40], Autor: VARCHAR[40], Verlag: VARCHAR[40], ISBN: VARCHAR[20], Preis: DECIMAL[4;2], Seitenzahl: INT, Erscheinungsjahr: DATE, Exemplaranzahl: INT)
M. Jakob (Gymnasium Pegnitz)
Datenbanken
20. Februar 2016
128 / 138
Wiederholung Abschnitt 1 7 1 ER-Diagramme — Noch ’ne andere Darstellung Klassenbeziehungen
Zur Verbesserung der Übersicht werden die Datentypen oft weggelassen. Gruppiert man die Attribute als Blasen um die Klassenkarte erhält man sogenannte Entity-Relationship-Darstellung.
BUCH(Titel, Fachbereich, Autor, Verlag, ISBN, Preis, Seitenzahl, Erscheinungsjahr, Exemplaranzahl)
M. Jakob (Gymnasium Pegnitz)
Datenbanken
20. Februar 2016
129 / 138
In diesem Abschnitt
Beziehungen zwischen Klassen 7.1 Wiederholung Abschnitt 1 7.2 Beziehungen und Kardinalitäten 7
7 Beziehungen (Relationen) Klassenbeziehungen
2
Beziehungen und Kardinalitäten
Klassen können in bestimmten Beziehungen zueinander stehen. Diese Relation wird auf die Verbindungslinie der Klassen geschrieben. Durch die Klassen ist die Beziehung noch nicht eindeutig festgelegt.
M. Jakob (Gymnasium Pegnitz)
Datenbanken
20. Februar 2016
131 / 138
Klassenbeziehungen
7
2
Beziehungen und Kardinalitäten
Kardinalitäten Die Kardinalität gibt an, wie viele Objekte der Nachbarklasse zu einem Objekt der Heimatklasse gehören. Wenn ich einen Schüler (Heimatklasse) herausgreife so kann er nur in einer Schulklasse (Nachbarklasse) sein. Also kommt ein 1 an die Schulklasse. Wenn ich eine Schulklasse (Heimatklasse) herausgreife so können dazu mehrere Schüler gehören. Also kommt ein Buchstabe (z.B. n) an die Klasse Schüler. M. Jakob (Gymnasium Pegnitz)
Datenbanken
20. Februar 2016
132 / 138
7
Klassenbeziehungen
2
Beziehungen und Kardinalitäten
Arten der Kardinalität
Art 1 n 0,1 1 .. n
M. Jakob (Gymnasium Pegnitz)
Beschreibung Genau ein Objekt Keines, eines oder mehrere Objekte Kein oder ein Objekt Ein oder mehrere Objekte
Datenbanken
20. Februar 2016
133 / 138
7 2 Klassendiagramme umfassen die Klassenbeziehungen
Beziehungen und Kardinalitäten
Klassenkarten mit Attributlisten und Datentypen, Schlüssel und Relationen mit Kardinalitäten.
M. Jakob (Gymnasium Pegnitz)
Datenbanken
20. Februar 2016
134 / 138
Beziehungen und Kardinalitäten 7 2 ER-Diagramm statt Klassendiagramm Klassenbeziehungen
M. Jakob (Gymnasium Pegnitz)
Datenbanken
20. Februar 2016
135 / 138
7 Ü 7.1: Schulverwaltung Klassenbeziehungen
2
Beziehungen und Kardinalitäten
In der Schulverwaltung gibt es folgende fünf Klassen Schueler, Schulklasse, Lehrer, Raum und Unterrichtsfach. elf Relationen Schüler hat (Lehrer, Unterrichtsfach), Lehrer unterrichtet (Unterrichtsfach, Schulklasse), ist_Klassenkamerad_von, ist_Fachbetreuer_von, ist_Klassensprecher_von, ist_Klassenleiter_von, hat_Klassenzimmer, hat_Fachraum, hat_Lieblingsfach. Erstelle ein übersichtliches(!) und kreuzungsfreies ER-Diagramm (Vorlage Schulverwaltung.graphml). Ergänze ggf. weitere Relationen.
M. Jakob (Gymnasium Pegnitz)
Datenbanken
20. Februar 2016
136 / 138
Klassenbeziehungen
7
2
Beziehungen und Kardinalitäten
Ü 7.2: Relationen (a) Welche Darstellungsarten werden bei den unten aufgeführten Datenbanken verwendet? Gib auch an, wenn in der Darstellung etwas fehlt und formatiere die Tabelle sinnvoll (Vorlage: Relationen_a.ods). (b) Verwandle das Klassendiagramm (guckst du gelber Link bei Bundesliga-Datenbank) in ein ER-Diagramm. Verwende dazu yEd. (Vorlage: keine) (c) Erstelle ein Klassendiagramm aus der TERRA-Datenbank, das die Tabellen LAND, LANDTEIL, KONTINENT und INSEL umfasst. Es gibt eine Relation von LAND zu LAND. Trage auch diese in das Klassendiagramm ein. (Vorlage: keine) åBundesliga / Wetter-Datenbank åTERRA-Datenbank åcia-Datenbank M. Jakob (Gymnasium Pegnitz)
Datenbanken
20. Februar 2016
137 / 138