Datenbanken Inhaltsverzeichnis

Werbung
Datenbanken
M. Jakob
Gymnasium Pegnitz
22. Januar 2017
Inhaltsverzeichnis
Grundlagen eines Datenbankmanagementsystems (DBMS)
Grundlegende Datenbankabfragen ohne verknüpfte
Selektionen
Erweiterte Abfragen an eine Tabelle
Gruppieren und Zusammenfassen von Datensätzen
Verknüpfung von Tabellen
Syntaxdiagramme
Beziehungen zwischen Klassen
In diesem Abschnitt
Grundlagen eines Datenbankmanagementsystems (DBMS)
Speichern großer Datenmengen
Klassendiagramme und Datentypen
Aufbau von Datentabellen
Datenbanken
1
Grundlagen
1
Speichern großer Datenmengen
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.
4 / 137
Datenbanken
1
Grundlagen
1
Speichern großer Datenmengen
Verwendung von Datenbanken
Heutige tägliche Kommunikationsabläufe sind ohne
Datenbanken nicht mehr denkbar.
I
Alle möglichen Internetseiten (CD-Datenbanken,
Datenbank für Online-Spiele)
I
Kundenverwaltung der Telekom
I
Flugbuchungssysteme von Reisebüros
I
Personendaten Einwohnermeldeämter
I
Jede Form der Lagerverwaltung (Kaufhäuser,
Supermärkte, Materiallager)
5 / 137
Datenbanken
1
Grundlagen
1
Speichern großer Datenmengen
Anforderungen an eine Datenbank
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.
6 / 137
Datenbanken
1
Grundlagen
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
DBMS
Daten
Datenbank
7 / 137
Datenbanken
1
Grundlagen
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.
8 / 137
Datenbanken
1
Grundlagen
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.
9 / 137
In diesem Abschnitt
Grundlagen eines Datenbankmanagementsystems (DBMS)
Speichern großer Datenmengen
Klassendiagramme und Datentypen
Aufbau von Datentabellen
Datenbanken
1
Grundlagen
2
Klassendiagramme und Datentypen
Beispiel Bibliotheksverwaltung
Jedes Attribut einer Klasse besitzt einen bestimmten Datentyp.
Nur so kann das DBMS wissen, wie die Daten interpretiert
werden sollen.
11 / 137
Datenbanken
1
Grundlagen
2
Klassendiagramme und Datentypen
Datentypen in SQL (unserer DB-Sprache)
Datentyp
VARCHAR[n]
CHAR[n]
INT
FLOAT
DOUBLE
DECIMAL[n;d]
DATE
TIME
DATETIME
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
12 / 137
Datenbanken
1
Grundlagen
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.
13 / 137
Datenbanken
1
Grundlagen
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?
14 / 137
Datenbanken
1
Grundlagen
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?
15 / 137
In diesem Abschnitt
Grundlagen eines Datenbankmanagementsystems (DBMS)
Speichern großer Datenmengen
Klassendiagramme und Datentypen
Aufbau von Datentabellen
Datenbanken
1
Grundlagen
3
Aufbau von Datentabellen
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.
17 / 137
Datenbanken
1
Grundlagen
3
Aufbau von Datentabellen
Definition Tabellenschema und Schlüssel
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)
18 / 137
Datenbanken
1
Grundlagen
3
Aufbau von Datentabellen
Übung
• Ü 1.6: TERRA-Datenbank erforschen
https://www.sachsen.schule/~terra2014/index.php
Die Datenbank TERRA enthält geographische Informationen über der Erde. Besuche die
Seite
• https://www.sachsen.schule/ terra2014/index.php
https://www.sachsen.schule/~terra2014/index.php
(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?
(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) Erstelle mit yEd je eine Klassenkarte der Tabellen LAND und STADT und lege eine
sinnvolle Relation fest.
19 / 137
Datenbanken
1
Grundlagen
3
Aufbau von Datentabellen
Übung
• Ü 1.7: Datenbank Bundesliga erforschen
http://dbup2date.uni-bayreuth.de
Die Datenbank Bundesliga enthält Informationen über die Fußball Bundesliga.
Besuche die Seite
• http://dbup2date.uni-bayreuth.de/
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 und lege
sinnvolle Relationen fest.
20 / 137
Datenbanken
1
Grundlagen
3
Aufbau von Datentabellen
Übung
• Ü 1.8: Datenbank Wetter in Deutschland erforschen
http://dbup2date.uni-bayreuth.de
Die Datenbank Wetter enthält Informationen über das Wetter in Deutschland. Besuche
die Seite
• http://dbup2date.uni-bayreuth.de/
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 und lege
sinnvolle Relationen fest.
21 / 137
In diesem Abschnitt
Grundlegende Datenbankabfragen ohne verknüpfte
Selektionen
Seletion und Projektion
Beispiele aus der TERRA-Datenbank
Datenbanken
2
Grundlegende Datenbankabfragen
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.
23 / 137
Datenbanken
2
Grundlegende Datenbankabfragen
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
24 / 137
Datenbanken
2
Grundlegende Datenbankabfragen
1
Seletion und Projektion
Bespiel: Selektion und Projektion
25 / 137
Datenbanken
2
Grundlegende Datenbankabfragen
1
Seletion und Projektion
SQL-Syntax einer Tabellenanfrage
Bisher
SELECT( Spalten ; Tabellen ; Bedingung)
Jetzt
SELECT S p a l t e n
FROM T a b e l l e n
WHERE Bedingung
26 / 137
In diesem Abschnitt
Grundlegende Datenbankabfragen ohne verknüpfte
Selektionen
Seletion und Projektion
Beispiele aus der TERRA-Datenbank
Datenbanken
Grundlegende Datenbankabfragen
2
2
Beispiele
Beispiele aus der TERRA-Datenbank
Alle nachfolgenden Beispiele sind aus der
• TERRA-Datenbank
https://www.sachsen.schule/~terra2014/index.php
entnommen.
Dort sind auch die Tabellenschemata zu finden. Wir verwenden zunächst nur die
Tabelle
BERG (B_NAME, GEBIRGE, HOEHE, JAHR, LAENGE, BREITE)
28 / 137
Datenbanken
2
Grundlegende Datenbankabfragen
2
Beispiele
Beispiel 1
Es soll die gesamte Tabelle Berg ausgegeben werden.
SELECT *
FROM BERG
I
Der Asterix „*“ ist eine Abkürzung,
wenn alle Spalten selektiert werden
sollen.
I
WHERE kann entfallen, wenn keine
speziellen Zeilen ausgewählt werden
sollen.
• TERRA
https://www.sachsen.schule/~terra2014/index.php
29 / 137
Datenbanken
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
https://www.sachsen.schule/~terra2014/index.php
30 / 137
Datenbanken
2
Grundlegende Datenbankabfragen
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 "
I
Name und Höhe der Berge
sind Projektionen (Spalten)
I
Himalaya ist eine Selektion
zur Auswahl der Zeilen, die
als Gebirge den Eintrag
“Himalaya“ haben
I
Datentypen die
Zeichenfolgen enthalten
(Strings) müssen in doppelte
Hochkommata gesetzt
werden.
• TERRA
https://www.sachsen.schule/~terra2014/index.php
31 / 137
Datenbanken
2
Grundlegende Datenbankabfragen
2
Beispiele
Vergleichsoperatoren für die Selektion WHERE, 1. Teil
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.
32 / 137
Datenbanken
2
Grundlegende Datenbankabfragen
2
Beispiele
Beispiel 4
Gesucht sind alle Berge, die mindestens 7000 Meter hoch sind.
SELECT *
FROM
BERG
WHERE HOEHE >= 7000
33 / 137
Datenbanken
2
Grundlegende Datenbankabfragen
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
34 / 137
Datenbanken
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"
35 / 137
Datenbanken
Grundlegende Datenbankabfragen
2
2
Beispiele
Bisherige SQL-Syntax einer Tabellenanfrage
Für bedingung gilt folgende Syntax:
36 / 137
Datenbanken
Grundlegende Datenbankabfragen
2
2
Beispiele
Übung
• Ü 2.1: TERRA-Datenbank
https://www.sachsen.schule/~terra2014/index.php
Bearbeite die Aufgaben 1-4b der Terra-Datenbank
37 / 137
Datenbanken
Grundlegende Datenbankabfragen
2
2
Beispiele
• Ü 2.2: Bundesliga-Datenbank
http://dbup2date.uni-bayreuth.de/
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.
38 / 137
Datenbanken
Grundlegende Datenbankabfragen
2
2
Beispiele
• Ü 2.3: Wetter-Datenbank
http://dbup2date.uni-bayreuth.de/
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?
39 / 137
Datenbanken
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
http://www.imoodle.de/sqltutorial/index.html
• TERRA-Datenbank
https://www.sachsen.schule/~terra2014/index.php
• Bundesliga-Datenbank
http://dbup2date.uni-bayreuth.de/
• Wetter-Datenbank
http://dbup2date.uni-bayreuth.de/
40 / 137
In diesem Abschnitt
Erweiterte Abfragen an eine Tabelle
Bedingungen verbinden
Zeichenfolgen suchen
Ausgaben Sortieren und begrenzen
Vollständiger select-Term
Datenbanken
3
Erweiterte Abfragen an eine Tabelle
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 ’
42 / 137
Datenbanken
3
Erweiterte Abfragen an eine Tabelle
1
Bedingungen verbinden
Beispiel 2
Gesucht sind alle Berge des Himalaya und der Anden.
SELECT *
FROM
BERG
WHERE Gebirge = ’Anden ’
OR Gebirge = ’Himalaya ’
43 / 137
Datenbanken
3
Erweiterte Abfragen an eine Tabelle
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 ’ )
44 / 137
Datenbanken
3
Erweiterte Abfragen an eine Tabelle
1
Bedingungen verbinden
Logische Operatoren für die Selektion WHERE
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.
45 / 137
Datenbanken
3
Erweiterte Abfragen an eine Tabelle
1
Bedingungen verbinden
Erweiterte Syntaxdiagramme der WHERE-Clause
Für bedingung ist das Syntaxdiagramm noch unverändert:
46 / 137
In diesem Abschnitt
Erweiterte Abfragen an eine Tabelle
Bedingungen verbinden
Zeichenfolgen suchen
Ausgaben Sortieren und begrenzen
Vollständiger select-Term
Datenbanken
3
Erweiterte Abfragen an eine Tabelle
2
Zeichenfolgen suchen
Zeichenfolgen Selektieren
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.
48 / 137
Datenbanken
Erweiterte Abfragen an eine Tabelle
2
3
Zeichenfolgen suchen
Erweitertes Syntaxdiagramm der Bedingung
Unverändertes Syntaxdiagramm der WHERE-Clause
Erweitertes Syntaxdiagramm der bedingung
49 / 137
Datenbanken
Erweiterte Abfragen an eine Tabelle
2
3
Zeichenfolgen suchen
Beispiel 1
Gesucht sind alle Berge der Alpen.
SELECT *
FROM BERG
WHERE GEBIRGE l i k e ’% Alpen%’
50 / 137
Datenbanken
3
Erweiterte Abfragen an eine Tabelle
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%’
51 / 137
Datenbanken
3
Erweiterte Abfragen an eine Tabelle
2
Zeichenfolgen suchen
Übung
• Ü 3.1: TERRA-Datenbank
http://www.sn.schule.de/~reimegym/terra/index.html
(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.
52 / 137
Datenbanken
3
Erweiterte Abfragen an eine Tabelle
2
Zeichenfolgen suchen
• Ü 3.2: cia-Datenbank
http://www.imoodle.de/sqltutorial/index.html
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)
53 / 137
Datenbanken
3
Erweiterte Abfragen an eine Tabelle
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
http://www.imoodle.de/sqltutorial/index.html
• TERRA-Datenbank
http://www.sn.schule.de/~reimegym/terra/index.html
• Bundesliga-Datenbank
http://dbup2date.uni-bayreuth.de/
• Wetter-Datenbank
http://dbup2date.uni-bayreuth.de/
54 / 137
In diesem Abschnitt
Erweiterte Abfragen an eine Tabelle
Bedingungen verbinden
Zeichenfolgen suchen
Ausgaben Sortieren und begrenzen
Vollständiger select-Term
Datenbanken
3
Erweiterte Abfragen an eine Tabelle
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.
56 / 137
Datenbanken
3
Erweiterte Abfragen an eine Tabelle
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.
57 / 137
Datenbanken
3
Erweiterte Abfragen an eine Tabelle
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
http://www.sn.schule.de/~reimegym/terra/a00.html
58 / 137
Datenbanken
3
Erweiterte Abfragen an eine Tabelle
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
http://www.sn.schule.de/~reimegym/terra/a00.html
59 / 137
Datenbanken
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
http://www.sn.schule.de/~reimegym/terra/a00.html
60 / 137
Datenbanken
3
Erweiterte Abfragen an eine Tabelle
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
http://www.sn.schule.de/~reimegym/terra/a00.html
61 / 137
Datenbanken
3
Erweiterte Abfragen an eine Tabelle
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
http://www.sn.schule.de/~reimegym/terra/a00.html
62 / 137
Datenbanken
3
Erweiterte Abfragen an eine Tabelle
3
Ausgaben Sortieren und begrenzen
Syntaxdiagramm: order by-Term (vollständig)
63 / 137
Datenbanken
3
Erweiterte Abfragen an eine Tabelle
3
Ausgaben Sortieren und begrenzen
Syntaxdiagramm: limit-Term (vollständig)
64 / 137
Datenbanken
3
Erweiterte Abfragen an eine Tabelle
3
Ausgaben Sortieren und begrenzen
Übung
• Ü 3.4: Wetter-Datenbank
http://dbup2date.uni-bayreuth.de/
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.
65 / 137
Datenbanken
3
Erweiterte Abfragen an eine Tabelle
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
http://www.imoodle.de/sqltutorial/index.html
• TERRA-Datenbank
http://www.sn.schule.de/~reimegym/terra/index.html
• Bundesliga-Datenbank
http://dbup2date.uni-bayreuth.de/
66 / 137
In diesem Abschnitt
Erweiterte Abfragen an eine Tabelle
Bedingungen verbinden
Zeichenfolgen suchen
Ausgaben Sortieren und begrenzen
Vollständiger select-Term
Datenbanken
3
Erweiterte Abfragen an eine Tabelle
4
Vollständiger select-Term
Mehrfachnennungen vermeiden
Gesucht sind alle Gebirge die in der Tabelle Berg enthalten
sind.
SELECT GEBIRGE
FROM BERG
Erzeugt Mehrfachnennungen.
• TERRA
http://www.sn.schule.de/~reimegym/terra/a00.html
68 / 137
Datenbanken
3
Erweiterte Abfragen an eine Tabelle
4
Vollständiger select-Term
Mehrfachnennungen vermeiden
Das Schlüsselwort DISTINCT
nach dem Schlüsselwort SELECT vermeidet
Mehrfachnennungen
69 / 137
Datenbanken
3
Erweiterte Abfragen an eine Tabelle
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
http://www.sn.schule.de/~reimegym/terra/a00.html
70 / 137
Datenbanken
3
Erweiterte Abfragen an eine Tabelle
4
Vollständiger select-Term
Ausdrücke in Spalten
In Spalten können Rechenausdrücke mit den üblichen
Rechenzeichen angegeben werden.
71 / 137
Datenbanken
3
Erweiterte Abfragen an eine Tabelle
4
Vollständiger select-Term
Umbenennen von Spalten
Gib der Spalte der vollständigen Tausender den Name
„Tausender“
SELECT BERG, HOEHE, round (HOEHE / 1000) AS ’
Tausender ’
FROM BERG
• TERRA
http://www.sn.schule.de/~reimegym/terra/a00.html
72 / 137
Datenbanken
3
Erweiterte Abfragen an eine Tabelle
4
Vollständiger select-Term
Umbenennen von Spalten
Mit dem Schlüsselwort AS lassen sich Spalten umbenennen.
73 / 137
Datenbanken
Erweiterte Abfragen an eine Tabelle
4
3
Vollständiger select-Term
Übung
• Ü 3.6: cia-Datenbank
http://www.imoodle.de/sqltutorial/index.html
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
74 / 137
alphabetisch nach der Region und innerhalb einer Region
Datenbanken
3
Erweiterte Abfragen an eine Tabelle
4
Vollständiger select-Term
Übung
• Ü 3.7: Bundesliga-Datenbank
http://dbup2date.uni-bayreuth.de/
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 75 / 137
Formel am torgefährlichsten sind, und ihre Torgefährlichkeit
sortiert aus.
Datenbanken
3
Erweiterte Abfragen an eine Tabelle
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
http://www.imoodle.de/sqltutorial/index.html
• TERRA-Datenbank
http://www.sn.schule.de/~reimegym/terra/index.html
• Bundesliga-Datenbank
http://dbup2date.uni-bayreuth.de/
76 / 137
Datenbanken
3
Erweiterte Abfragen an eine Tabelle
4
Vollständiger select-Term
Übung
• Ü 3.9: TERRA-Datenbank
http://www.sn.schule.de/~reimegym/terra/index.html
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
In diesem Abschnitt
Gruppieren und Zusammenfassen von Datensätzen
Aggregatfunktionen
Grupierungen
Auswahl von Gruppen
77 / 137
Datenbanken
4
Gruppieren und Zusammenfassen von Datensätzen
1
Aggregatfunktionen
• Beispiel 1 (TERRA)
http://www.sn.schule.de/~reimegym/terra/a00.html
Wie viele Flüsse sind in der Datenbank
SELECT count ( * ) as ’Anzahl der Flüsse ’
FROM FLUSS
79 / 137
Datenbanken
4
Gruppieren und Zusammenfassen von Datensätzen
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
80 / 137
In diesem Abschnitt
Gruppieren und Zusammenfassen von Datensätzen
Aggregatfunktionen
Grupierungen
Auswahl von Gruppen
Datenbanken
Gruppieren und Zusammenfassen von Datensätzen
2
4
Gruppierungen
• Beispiel 1 (TERRA)
http://www.sn.schule.de/~reimegym/terra/a00.html
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
82 / 137
Datenbanken
4
Gruppieren und Zusammenfassen von Datensätzen
2
Gruppierungen
• Beispiel 2 (TERRA)
http://www.sn.schule.de/~reimegym/terra/a00.html
Liste die Anzahl der Wüsten, gruppiert nach der Wüstenart auf
SELECT WUESTENART, count ( * )
FROM WUESTE
Group by WUESTENART
83 / 137
Datenbanken
4
Gruppieren und Zusammenfassen von Datensätzen
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.
84 / 137
Datenbanken
Gruppieren und Zusammenfassen von Datensätzen
2
4
Gruppierungen
• Beispiel 3 (TERRA)
http://www.sn.schule.de/~reimegym/terra/a00.html
Liste die Gesamtfläche der Wüstenarten
SELECT WUESTENART, sum(FLAECHE) AS
Gesamtflaeche
FROM WUESTE
group by WUESTENART
ORDER BY Gesamtflaeche
85 / 137
In diesem Abschnitt
Gruppieren und Zusammenfassen von Datensätzen
Aggregatfunktionen
Grupierungen
Auswahl von Gruppen
Datenbanken
4
Gruppieren und Zusammenfassen von Datensätzen
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.
87 / 137
Datenbanken
4
Gruppieren und Zusammenfassen von Datensätzen
3
Auswahl von Gruppen
• Beispiel 1 (TERRA)
http://www.sn.schule.de/~reimegym/terra/a00.html
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
88 / 137
Datenbanken
4
Gruppieren und Zusammenfassen von Datensätzen
3
Auswahl von Gruppen
• Ü 4.1: cia-Datenbank (analog Übg 2 cia)
http://www.imoodle.de/sqltutorial/index.html
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.
89 / 137
Datenbanken
4
Gruppieren und Zusammenfassen von Datensätzen
3
Auswahl von Gruppen
• Ü 4.2: cia-Datenbank (analog Übg 4 Aufg 1-5 cia)
http://www.imoodle.de/sqltutorial/index.html
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.
90 / 137
Datenbanken
4
Gruppieren und Zusammenfassen von Datensätzen
3
Auswahl von Gruppen
• Ü 4.3: WM-Titel-Datenbank (analog Übg 4 Aufg 6-10 WMTitel)
http://www.imoodle.de/sqltutorial/index.html
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.
91 / 137
(e) Ermittle ab 1995 in geordneter Reihenfolge die Gesamtzahl
der Team-Punkte für Teams mit mindestens 200 Punkten.
Datenbanken
4
Gruppieren und Zusammenfassen von Datensätzen
3
Auswahl von Gruppen
• Ü 4.4: TERRA-Datenbank
http://www.sn.schule.de/~reimegym/terra/index.html
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:
92 / 137
Datenbanken
Gruppieren und Zusammenfassen von Datensätzen
3
4
Auswahl von Gruppen
• Ü 4.5: TERRA-Datenbank
http://www.sn.schule.de/~reimegym/terra/index.html
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]
93 / 137
(g) Welche Länder haben mehr als 4 Millionenstädte? [7]
In diesem Abschnitt
Verknüpfung von Tabellen
Basisabfragen
Schema für Join-Abfragen
Datenbanken
5
Verknüpfung von Tabellen
1
Basisabfragen
Bespiel
Gesucht ist der Name des Klassenleiters der 5. Klasse.
95 / 137
Datenbanken
5
Verknüpfung von Tabellen
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.
I
Die Verknüpfung der Tabellen erfolgt durch Angabe der
beteiligten Tabellen in der From- Klausel.
I
Bei gleichen Spaltennamen aus verschiedenen Tabellen
muss in der Abfragen zusätzlich der Tabellenname
angegeben werden. Man schreibt:
Tabellenname.Attributname.
96 / 137
Datenbanken
5
Verknüpfung von Tabellen
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.
97 / 137
Datenbanken
5
Verknüpfung von Tabellen
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 ;
98 / 137
Datenbanken
5
Verknüpfung von Tabellen
1
Basisabfragen
• Beispiel 1 (TERRA)
http://www.sn.schule.de/~reimegym/terra/a00.html
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
99 / 137
Datenbanken
5
Verknüpfung von Tabellen
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.
I
Die Verknüpfung der Tabellen erfolgt durch Angabe der
beteiligten Tabellen in der From- Klausel.
I
Bei gleichen Spaltennamen aus verschiedenen Tabellen
muss in der Abfragen zusätzlich der Tabellenname
angegeben werden. Man schreibt:
Tabellenname.Attributname.
100 / 137
Datenbanken
5
Verknüpfung von Tabellen
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.
101 / 137
Datenbanken
Verknüpfung von Tabellen
1
5
Basisabfragen
Bespiel
102 / 137
Datenbanken
5
Verknüpfung von Tabellen
1
Basisabfragen
• Beispiel (TERRA)
http://www.sn.schule.de/~reimegym/terra/a00.html
SELECT L_Name , K_Name
FROM LAND, UMFASST
Es werden alle Länder(190) mit allen UMFASST-Zeilen (188)
kombiniert es entstehen 35720 Zeilen.
103 / 137
Datenbanken
5
Verknüpfung von Tabellen
1
Basisabfragen
• Ü 5.1: TERRA-Datenbank
http://www.sn.schule.de/~reimegym/terra/index.html
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]
104 / 137
Datenbanken
5
Verknüpfung von Tabellen
1
Basisabfragen
• Ü 5.2: Bundesliga-Datenbank
http://dbup2date.uni-bayreuth.de/
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.
In diesem Abschnitt
Verknüpfung von Tabellen
Basisabfragen
Schema für Join-Abfragen
105 / 137
Datenbanken
Verknüpfung von Tabellen
5
Schema für Join-Abfragen
• Schema für Joins (TERRA)
http://www.sn.schule.de/~reimegym/terra/a00.html
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.
107 / 137
Datenbanken
Verknüpfung von Tabellen
5
Schema für Join-Abfragen
• Schema für Joins (TERRA)
http://www.sn.schule.de/~reimegym/terra/a00.html
1. Schritt: Welche Tabellen beinhalten die gewünschten
Informationen?
I
LAND (L_NAME, L_ID, EINWOHNER, FLAECHE,
HAUPTSTADT, LT_ID)
I
LANDTEIL (LT_NAME, LT_ID, L_ID, EINWOHNER, LAGE,
HAUPTSTADT)
I
INSEL(I_NAME, INSELGRUPPE, FLAECHE, LAENGE,
BREITE)
I
GEO_INSEL(LT_ID, L_ID, I_NAME)
108 / 137
Datenbanken
Verknüpfung von Tabellen
5
Schema für Join-Abfragen
• Schema für Joins (TERRA)
http://www.sn.schule.de/~reimegym/terra/a00.html
2. Schritt: Welche Spalten beinhalten die gewünschten
Informationen?
I
LAND (L_NAME, L_ID, EINWOHNER, FLAECHE,
HAUPTSTADT, LT_ID)
I
LANDTEIL (LT_NAME, LT_ID, L_ID, EINWOHNER, LAGE,
HAUPTSTADT)
I
INSEL(I_NAME, INSELGRUPPE, FLAECHE, LAENGE,
BREITE)
I
GEO_INSEL(LT_ID, L_ID, I_NAME)
109 / 137
Datenbanken
Verknüpfung von Tabellen
5
Schema für Join-Abfragen
• Schema für Joins (TERRA)
http://www.sn.schule.de/~reimegym/terra/a00.html
3. Schritt: Eine der Tabellen komplett ausgeben lassen
SELECT *
FROM LAND
110 / 137
Datenbanken
5
Verknüpfung von Tabellen
Schema für Join-Abfragen
• Schema für Joins (TERRA)
http://www.sn.schule.de/~reimegym/terra/a00.html
4. Schritt: Durch welche Spalte ist die Tabelle mit einer anderen
verbunden?
I
LAND (L_NAME, L_ID , EINWOHNER, FLAECHE,
HAUPTSTADT, LT_ID)
I
LANDTEIL (LT_NAME, LT_ID, L_ID , EINWOHNER, LAGE,
HAUPTSTADT)
111 / 137
Datenbanken
Verknüpfung von Tabellen
5
Schema für Join-Abfragen
• Schema für Joins (TERRA)
http://www.sn.schule.de/~reimegym/terra/a00.html
5. Schritt: Tabellen verjoinen, d.h.
I
zweite Tabelle in die from-Klausel
I
Verknüpfungsspalten in die where-Klausel
SELECT *
FROM LAND as l , LANDTEIL as l t
WHERE l . L_ID = l t . L_ID
112 / 137
Datenbanken
Verknüpfung von Tabellen
5
Schema für Join-Abfragen
• Schema für Joins (TERRA)
http://www.sn.schule.de/~reimegym/terra/a00.html
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
113 / 137
Datenbanken
Verknüpfung von Tabellen
5
Schema für Join-Abfragen
• Schema für Joins (TERRA)
http://www.sn.schule.de/~reimegym/terra/a00.html
7. Schritt: Nach dem gleichen Schema die nächste Tabelle
dazunehmen
I nächste Tabelle in die from-Klausel
I Verknüpfungsspalten in die where-Klausel
I 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
114 / 137
and
l . L_ID = g . L_ID
Datenbanken
Verknüpfung von Tabellen
5
Schema für Join-Abfragen
• Schema für Joins (TERRA)
http://www.sn.schule.de/~reimegym/terra/a00.html
8. Schritt: Letzte Tabelle dazunehmen
I
LAND (L_NAME, L_ID, EINWOHNER, FLAECHE,
HAUPTSTADT, LT_ID)
I
LANDTEIL (LT_NAME, LT_ID, L_ID, EINWOHNER, LAGE,
HAUPTSTADT)
I
INSEL(I_NAME, INSELGRUPPE, FLAECHE, LAENGE,
BREITE)
I
GEO_INSEL(LT_ID, L_ID, I_NAME)
115 / 137
Datenbanken
Verknüpfung von Tabellen
5
Schema für Join-Abfragen
• Schema für Joins (TERRA)
http://www.sn.schule.de/~reimegym/terra/a00.html
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
116 / 137
Datenbanken
Verknüpfung von Tabellen
5
Schema für Join-Abfragen
• Schema für Joins (TERRA)
http://www.sn.schule.de/~reimegym/terra/a00.html
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
117 / 137
Datenbanken
Verknüpfung von Tabellen
5
Schema für Join-Abfragen
• Ü 5.3: TERRA-Datenbank
http://www.sn.schule.de/~reimegym/terra/index.html
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.
118 / 137
Datenbanken
Verknüpfung von Tabellen
5
Schema für Join-Abfragen
• Ü 5.4: Eigene Abfragen formulieren
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.
119 / 137
Datenbanken
Syntaxdiagramme
6
SQL-Querry
120 / 137
Datenbanken
Syntaxdiagramme
6
select- und From-Term
121 / 137
Datenbanken
Syntaxdiagramme
6
Bedingungen in where- und having-Clause
122 / 137
Datenbanken
Syntaxdiagramme
6
order by-, limit- und group by-
123 / 137
In diesem Abschnitt
Beziehungen zwischen Klassen
Wiederholung Abschnitt 1
Beziehungen und Kardinalitäten
Datenbanken
7
Klassenbeziehungen
1
Wiederholung Abschnitt 1
Beispiel: Bibliotheksverwaltung
125 / 137
Datenbanken
7
Klassenbeziehungen
1
Wiederholung Abschnitt 1
Datentypen in SQL (unserer DB-Sprache)
Datentyp
VARCHAR[n]
CHAR[n]
INT
FLOAT
DOUBLE
DECIMAL[n;d]
DATE
TIME
DATETIME
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
126 / 137
Datenbanken
7
Klassenbeziehungen
1
Wiederholung Abschnitt 1
Definition Tabellenschema und Schlüssel
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)
127 / 137
Datenbanken
7
Klassenbeziehungen
1
Wiederholung Abschnitt 1
Gleicher Sachverhalt verschiedene Darstellungen
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)
128 / 137
Datenbanken
7
Klassenbeziehungen
1
Wiederholung Abschnitt 1
ER-Diagramme — Noch ’ne andere Darstellung
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)
129 / 137
In diesem Abschnitt
Beziehungen zwischen Klassen
Wiederholung Abschnitt 1
Beziehungen und Kardinalitäten
Datenbanken
7
Klassenbeziehungen
2
Beziehungen und Kardinalitäten
Beziehungen (Relationen)
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.
131 / 137
Datenbanken
7
Klassenbeziehungen
2
Beziehungen und Kardinalitäten
Kardinalitäten
Die Kardinalität gibt an, wie viele Objekte der Nachbarklasse zu
einem Objekt der Heimatklasse gehören.
I
Wenn ich einen Schüler
(Heimatklasse)
herausgreife so kann er
nur in einer Schulklasse
(Nachbarklasse) sein. Also
kommt ein 1 an die
Schulklasse.
I
Wenn ich eine Schulklasse
(Heimatklasse)
herausgreife so können
dazu mehrere Schüler
gehören. Also kommt ein
Buchstabe (z.B. n) an die
132 / 137
Datenbanken
7
Klassenbeziehungen
2
Beziehungen und Kardinalitäten
Arten der Kardinalität
Art
1
n
0,1
1 .. n
Beschreibung
Genau ein Objekt
Keines, eines oder mehrere Objekte
Kein oder ein Objekt
Ein oder mehrere Objekte
133 / 137
Datenbanken
Klassenbeziehungen
2
7
Beziehungen und Kardinalitäten
Klassendiagramme umfassen die
I
Klassenkarten
mit
Attributlisten
und
Datentypen,
I
Schlüssel und
I
Relationen mit
Kardinalitäten.
134 / 137
Datenbanken
7
Klassenbeziehungen
2
Beziehungen und Kardinalitäten
ER-Diagramm statt Klassendiagramm
135 / 137
Datenbanken
7
Klassenbeziehungen
2
Beziehungen und Kardinalitäten
• Ü 7.1: Schulverwaltung
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
136 / 137
Datenbanken
7
Klassenbeziehungen
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)
137 / 137
• Bundesliga / Wetter-Datenbank
http://dbup2date.uni-bayreuth.de/
• TERRA-Datenbank
http://www.sn.schule.de/~reimegym/terra/index.html
• cia-Datenbank
http://www.imoodle.de/sqltutorial/index.html
Herunterladen