Preview only show first 10 pages with watermark. For full document please download

Datenbanken

   EMBED


Share

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