Datenbanken Energiewirtschaft 3. Semester Tillman Swinke Organisatorisches l Vorlesung am 25.11.2011 fällt aus! l Senden Sie mir zusätzliche Themen für den Abschluß Agenda Agenda • Lokale und zentrale Datenhaltung Agenda • Lokale und zentrale Datenhaltung • Unterschied Datenbank und Dateisystem Agenda • Lokale und zentrale Datenhaltung • Unterschied Datenbank und Dateisystem • AuJau Datenbanksystem Agenda • Lokale und zentrale Datenhaltung • Unterschied Datenbank und Dateisystem • AuJau Datenbanksystem • Normalformen Agenda • Lokale und zentrale Datenhaltung • Unterschied Datenbank und Dateisystem • AuJau Datenbanksystem • Normalformen • Entity-­‐Relationship-­‐Modelle Agenda • Lokale und zentrale Datenhaltung • Unterschied Datenbank und Dateisystem • AuJau Datenbanksystem • Normalformen • Entity-­‐Relationship-­‐Modelle • SQL Lokale Datenhaltung Lokale Datenhaltung Lokale Datenhaltung Lokale Datenhaltung Lokale Datenhaltung Lokale Datenhaltung Mehrbenutzer Mehrbenutzer Mehrbenutzer Mehrbenutzer Mehrbenutzer Mehrbenutzer Mehrbenutzer ? Probleme Mehrbenutzer Probleme Mehrbenutzer 1. Redundante Speicherung Probleme Mehrbenutzer 1. Redundante Speicherung 2. Selten aktuelle Daten Probleme Mehrbenutzer 1. Redundante Speicherung 2. Selten aktuelle Daten 3. Daten stets abhängig von Dateiformat Probleme Mehrbenutzer 1. Redundante Speicherung 2. Selten aktuelle Daten 3. Daten stets abhängig von Dateiformat 4. Nur mit viel Aufwand von mehreren Benutzern verwendbar Probleme Mehrbenutzer 1. Redundante Speicherung 2. Selten aktuelle Daten 3. Daten stets abhängig von Dateiformat 4. Nur mit viel Aufwand von mehreren Benutzern verwendbar 5. Mangelnde Datensicherheit Beispiel Beispiel • Zugriffe auf ein gemeinsames Konto A zahlt 100 € ein, • B hebt 300 € ab. • Ergebnis: neuer Konto-­‐Stand: ‘+100’ -­‐ statt ‘-­‐200’ Beispiel • Zugriffe auf ein gemeinsames Konto A zahlt 100 € ein, • B hebt 300 € ab. • Kunde A Kunde B Zeit Read Read Konto = Konto + 100 € Konto = Konto – 300 € Write Write Ergebnis: neuer Konto-­‐Stand: ‘+100’ -­‐ statt ‘-­‐200’ Datenbanken Datenbanken • MS Access Datenbanken • MS Access • SQLite Datenbanken • MS Access • SQLite • mySQL Datenbanken • MS Access • SQLite • mySQL • Oracle Datenbanken • MS Access • SQLite • mySQL • Oracle • DB2 Datenbanken • MS Access • SQLite • mySQL • Oracle • DB2 • ... Zentrale Datenhaltung Zentrale Datenhaltung Zentrale Datenhaltung Zentrale Datenhaltung Zentrale Datenhaltung Zentrale Datenhaltung Zentrale Datenhaltung Zentrale Datenhaltung DB besser als Dateien? DB besser als Dateien? Warum ist jetzt eine zentrale Datenbank besser als ein normales Dateisystem? Datenbank-­‐ Datenbank-­‐ Datenbank (DB) Vorteile von DB-­‐Systemen Vorteile von DB-­‐Systemen 1. Redundanzfreie Speicherung Vorteile von DB-­‐Systemen 1. Redundanzfreie Speicherung 2. Stets aktuelle Daten Vorteile von DB-­‐Systemen 1. Redundanzfreie Speicherung 2. Stets aktuelle Daten 3. Vielseitige Anwendungen Vorteile von DB-­‐Systemen 1. Redundanzfreie Speicherung 2. Stets aktuelle Daten 3. Vielseitige Anwendungen 4. Datenunabhängigkeit Vorteile von DB-­‐Systemen 1. Redundanzfreie Speicherung 2. Stets aktuelle Daten 3. Vielseitige Anwendungen 4. Datenunabhängigkeit 5. Mehrbenutzersystem Vorteile von DB-­‐Systemen 1. Redundanzfreie Speicherung 2. Stets aktuelle Daten 3. Vielseitige Anwendungen 4. Datenunabhängigkeit 5. Mehrbenutzersystem 6. Datensicherheit Vorteile von DB-­‐Systemen 1. Redundanzfreie Speicherung 2. Stets aktuelle Daten 3. Vielseitige Anwendungen 4. Datenunabhängigkeit 5. Mehrbenutzersystem 6. Datensicherheit 7. Datenintegrität Vorteile von DB-­‐Systemen 1. Redundanzfreie Speicherung 2. Stets aktuelle Daten 3. Vielseitige Anwendungen 4. Datenunabhängigkeit 5. Mehrbenutzersystem 6. Datensicherheit 7. Datenintegrität 8. Datenschutz Vorteile von DB-­‐Systemen 1. Redundanzfreie Speicherung 2. Stets aktuelle Daten 3. Vielseitige Anwendungen 4. Datenunabhängigkeit 5. Mehrbenutzersystem 6. Datensicherheit 7. Datenintegrität 8. Datenschutz 9. Benutzerfreundliche Sprache DB-­‐Verwaltungssystem DB-­‐Verwaltungssystem • Verhinderung von Konflikten bei mindestens einem Schreibzugriff auf das gleiche Element Read-­‐Write-­‐Konflikt • Write-­‐Read-­‐Konflikt • Write-­‐Write-­‐Konflikt • Beispiel Kunde A Kunde B Zeit Read Read Konto = Konto + 100 € Konto = Konto – 300 € Write Write Beispiel • Zugriffe auf ein gemeinsames Konto A zahlt 100 € ein, • B hebt 300 € ab. • Kunde A Kunde B Zeit Read Read Konto = Konto + 100 € Konto = Konto – 300 € Write Write Ergebnis: neuer Konto-­‐Stand: ‘+100’ -­‐ statt ‘-­‐200’ Transaktion Transaktion • Eine Transaktion ist eine Folge von elementaren Aktionen auf Datenobjekten, die als eine ‘atomare’ Einheit aufgefasst wird: • Sie soll entweder vollständig oder überhaupt nicht ausgeführt werden. Beispiel Beispiel Kunde A Transaktion Read Zeit Konto = Konto + 100 € T1 Write Kunde B Read Konto = Konto – 300 € Write T2 Beispiel Kunde A Transaktion Read Zeit Konto = Konto + 100 € T1 Write Kunde B Read Konto = Konto – 300 € Write Systema usfall T2 Beispiel Kunde A Transaktion Read Zeit Konto = Konto + 100 € T1 Write Kunde B Read Konto = Konto – 300 € Write Systema usfall T2 Beispiel Kunde A Transaktion Read Zeit Konto = Konto + 100 € T1 Write Kunde B Read Konto = Konto – 300 € Write Systema usfall T2 Beispiel Kunde A Transaktion Read Zeit Konto = Konto + 100 € T1 Write Kunde B Read Konto = Konto – 300 € Write Systema usfall T2 Rollback Datenbankmodelle Datenbankmodelle • Netzwerkmodell Datenbankmodelle • Netzwerkmodell • Relationales Modell Datenbankmodelle • Netzwerkmodell • Relationales Modell • Semantische Datenmodelle Datenbankmodelle • Netzwerkmodell • Relationales Modell • Semantische Datenmodelle • Objekt-­‐orientierte Modelle Relationales Datenbankmodell Relationales Datenbankmodell E.F. Codd 1970 Relationales Datenbankmodell E.F. Codd 1970 Beschreibung der Informationen in der Form von Tabellen Relationales Datenbankmodell E.F. Codd 1970 Beschreibung der Informationen in der Form von Tabellen Einteilung in Struktur und Daten. Relationales Datenbankmodell E.F. Codd 1970 Beschreibung der Informationen in der Form von Tabellen Einteilung in Struktur und Daten. Tabelle: Relationales Datenbankmodell E.F. Codd 1970 Beschreibung der Informationen in der Form von Tabellen Einteilung in Struktur und Daten. Tabelle: Daten werden als Zeilen dargestellt Relationales Datenbankmodell E.F. Codd 1970 Beschreibung der Informationen in der Form von Tabellen Einteilung in Struktur und Daten. Tabelle: Daten werden als Zeilen dargestellt Attribute werden als Spalten dargestellt Beispiel Beispiel Vorname Nachname Abteilung Michael Ende Marketing Sabine Sell Verkauf Johnny Controletti Controlling Karl Kannix Management Daniel Datenbank IT Sabine Kannix Controlling Beispiel Vorname Nachname Abteilung Michael Ende Marketing Sabine Sell Verkauf Johnny Controletti Controlling Karl Kannix Management Daniel Datenbank IT Sabine Kannix Controlling Tabelle Beispiel Vorname Nachname Abteilung Michael Ende Marketing Sabine Sell Verkauf Johnny Controletti Controlling Karl Kannix Management Daniel Datenbank IT Sabine Kannix Controlling Beispiel Vorname Nachname Abteilung Michael Ende Marketing Sabine Sell Verkauf Johnny Controletti Controlling Karl Kannix Management Daniel Datenbank IT Sabine Kannix Controlling Attribut Beispiel Vorname Nachname Abteilung Michael Ende Marketing Sabine Sell Verkauf Johnny Controletti Controlling Karl Kannix Management Daniel Datenbank IT Sabine Kannix Controlling Beispiel Vorname Nachname Abteilung Michael Ende Marketing Sabine Sell Verkauf Johnny Controletti Controlling Karl Kannix Management Daniel Datenbank IT Sabine Kannix Controlling Tupel (Datensatz) Relationales Datenbankmodell Relationales Datenbankmodell • Tabellen für die Informationsgegenstände (Kauoaus: Abteilung, Mitarbeiter, Artikel) Relationales Datenbankmodell • Tabellen für die Informationsgegenstände (Kauoaus: Abteilung, Mitarbeiter, Artikel) • Tabellen für die Beziehungen (z.T.) zwischen den Gegenständen (Kauoaus: Abteilung -­‐ Artikel). Relationales Datenbankmodell • Tabellen für die Informationsgegenstände (Kauoaus: Abteilung, Mitarbeiter, Artikel) • Tabellen für die Beziehungen (z.T.) zwischen den Gegenständen (Kauoaus: Abteilung -­‐ Artikel). • Beziehungen werden mit Hilfe identifizierender Attribute abgebildet! Identifikation Identifikation • Einzelne Tupel werden zunächst über Ihre Attribute identifiziert. Identifikation • Einzelne Tupel werden zunächst über Ihre Attribute identifiziert. • Nicht immer ist ein Attribut ausreichend. Identifikation • Einzelne Tupel werden zunächst über Ihre Attribute identifiziert. • Nicht immer ist ein Attribut ausreichend. • Gefahr von Doppeldeutigkeiten Beispiel Vorname Nachname Abteilung Michael Ende Marketing Sabine Sell Verkauf Johnny Controletti Controlling Karl Kannix Management Daniel Datenbank IT Sabine Kannix Controlling Attribute Attribute • Jedes Attribut hat einen festgelegten Datentyp • • • • • • • • • • • • • INT FLOAT DOUBLE DECIMAL DATE DATETIME TIME YEAR CHAR VARCHAR BLOB TEXT ENUM 3 3,5 3,5 +3,50 31.12.2012. 2012-­‐05-­‐03 12:23:57 12:23:57 2012 C (feste Länge) CC (variable Länge) 011001 asdlualsdf {1,2,Apfel} Primärschlüssel Primärschlüssel • Um gleiche Datensätze zu vermeiden können Primärschlüssel vergeben werden Primärschlüssel • Um gleiche Datensätze zu vermeiden können Primärschlüssel vergeben werden • Primärschlüssel können automatisch unique vergeben werden. D.h.: Das DBMS vergibt automatisch beim anlegen eine eindeutige ID Primärschlüssel • Um gleiche Datensätze zu vermeiden können Primärschlüssel vergeben werden • Primärschlüssel können automatisch unique vergeben werden. D.h.: Das DBMS vergibt automatisch beim anlegen eine eindeutige ID • Gelöschte IDs werden NICHT neu vergeben Beispiel ID Vorname Nachname Abteilung 1 Michael Ende Marketing 2 Sabine Sell Verkauf 3 Johnny Controletti Controlling 4 Karl Kannix Management 5 Daniel Datenbank IT 6 Sabine Kannix Controlling 7 8 ... Normalformen • 1. Normalform • 2. Normalform • 3. Normalform • Boyce-­‐Codd-­‐Normalform (BCNF) • 4. Normalform • 5. Normalform Normalformen • 1. Normalform • 2. Normalform • 3. Normalform • Boyce-­‐Codd-­‐Normalform (BCNF) • 4. Normalform • 5. Normalform Normalformen • 1. Normalform • 2. Normalform • 3. Normalform • Boyce-­‐Codd-­‐Normalform (BCNF) • 4. Normalform • 5. Normalform Für uns interessant 1. Normalform 1. Normalform • Eine Relation befindet sich in der ersten Normalform, wenn jedes Attribut (nur) über elementare Ausprägungen verfügt. 1. Normalform • Eine Relation befindet sich in der ersten Normalform, wenn jedes Attribut (nur) über elementare Ausprägungen verfügt. • D.h.: keine Wiederholungsgruppen • keine Feldgruppen • Beispiel 1. NF Entspricht NICHT der 1. Normalform Beispiel 1. NF Bankverbindung KdNr KdName 1334 Postbank Essen (36010043) 10001 Tempelmann 4398 SEB Essen (36010111) 10001 Tempelmann 4665 SEB Dortmund (44010111) 10006 COLO AG 7596 SEB Dortmund (44010111) 10006 COLO AG Entspricht NICHT der 1. Normalform Beispiel 1. NF Entspricht der 1. Normalform Beispiel 1. NF KtoNr Bank BLZ KdNr KdName 1334 Postbank Essen 36010043 10001 Tempelmann 4398 SEB Essen 36010111 10001 Tempelmann 4665 SEB Dortmund 44010111 10006 COLO AG 7596 SEB Dortmund 44010111 10006 COLO AG Entspricht der 1. Normalform 2.Normalform 2.Normalform • Eine Relation ist genau dann in zweiter Normalform, wenn sie in der ersten Normalform ist und • Kein Attribut der Relation von einem anderen Attribut abgängig ist. • Beispiel 2.NF Entspricht NICHT der 2. Normalform Beispiel 2.NF KtoNr Bank BLZ KdNr KdName 1334 Postbank Essen 36010043 10001 Tempelmann 4398 SEB Essen 36010111 10001 Tempelmann 4665 SEB Dortmund 44010111 10006 COLO AG 7596 SEB Dortmund 44010111 10006 COLO AG Entspricht NICHT der 2. Normalform Beispiel 2.NF Entspricht der 2. Normalform Beispiel 2.NF KtoNr BLZ KdNr KdName 1334 36010043 10001 Tempelmann 4398 36010111 10001 Tempelmann 4665 44010111 10006 COLO AG 7596 44010111 10006 COLO AG Entspricht der 2. Normalform Beispiel 2.NF KtoNr BLZ KdNr KdName 1334 36010043 10001 Tempelmann 4398 36010111 10001 Tempelmann 4665 44010111 10006 COLO AG 7596 44010111 10006 COLO AG BLZ Bank 36010043 Postbank Essen 36010111 SEB Essen 44010111 SEB Dortmund Entspricht der 2. Normalform 3.Normalform 3.Normalform • Eine Relation ist genau dann in dritterNormalform, wenn sie sich in der 2NF befindet, und • jedes Attribut von keinem Attribut transitiv abhängt. (transitiv abhängig = über Umwege abhängig) • Beispiel 3. NF Entspricht NICHT der 3. Normalform Beispiel 3. NF KtoNr BLZ KdNr KdName 1334 36010043 10001 Tempelmann 4398 36010111 10001 Tempelmann 4665 44010111 10006 COLO AG 7596 44010111 10006 COLO AG Entspricht NICHT der 3. Normalform Beispiel 3. NF KtoNr BLZ KdNr KdName 1334 36010043 10001 Tempelmann 4398 36010111 10001 Tempelmann 4665 44010111 10006 COLO AG 7596 44010111 10006 COLO AG BLZ Bank 36010043 Postbank Essen 36010111 SEB Essen 44010111 SEB Dortmund Entspricht NICHT der 3. Normalform Beispiel 3. NF Entspricht der 3. Normalform Beispiel 3. NF KtoNr BLZ KdNr 1334 36010043 10001 4398 36010111 10001 4665 44010111 10006 7596 44010111 10006 Entspricht der 3. Normalform Beispiel 3. NF KtoNr KdNr BLZ KdNr 1334 36010043 10001 4398 36010111 10001 4665 44010111 10006 7596 44010111 10006 KdName 10001 Tempelmann 10006 COLO AG Entspricht der 3. Normalform Beispiel 3. NF KtoNr KdNr BLZ KdNr 1334 36010043 10001 4398 36010111 10001 4665 44010111 10006 7596 44010111 10006 KdName BLZ Bank 10001 Tempelmann 36010043 Postbank Essen 10006 COLO AG 36010111 SEB Essen 44010111 SEB Dortmund Entspricht der 3. Normalform Übung Übung • Bringen Sie die folgende Tabelle in die 2.NF Welche Datentypen würden Sie wählen? Übung • Bringen Sie die folgende Tabelle in die 2.NF Welche Datentypen würden Sie wählen? Filmtitel Spr. Szene Länge Szenentitel Schauspieler Over the Top E 1 13 min Intro S.Stallone Gladiator D 2 9 min Für Rom R. Crowe La Vita é bella IT 5 23 min Im Lager R. Begnini Terminator E 2 46 min At the bar A. Schwarzeneg. Gladiator D 24 15 min Hochzeit J. Aniston Over the Top E 9 16 min Crazy Heart E 13 10 min Walk in the park Credits S. Stallone, J.Bridges Lösung ID Filmtitel Spr. 1 Over the Top E 2 Gladiator D 3 La Vita é bella IT 4 Terminator E 5 Crazy Heart E ID Schauspieler 1 R. Crowe 2 R. Begnini 3 A. Schwarzeneg. 4 J. Aniston 5 J.Bridges 6 S.Stallone ID Sz.nr Sz. Titel Länge Film Sch. 1 1 Intro 13 min 1 6 2 2 Für Rom 9 min 2 1 3 5 Im Lager 23 min 3 2 4 2 At the bar 46 min 4 3 5 24 Hochzeit 15 min 2 4 6 9 Walk in the park 16 min 1 5 7 9 Walk in the park 16 min 1 6 8 13 Credits 10 min 5 NULL Lösung Lösung • ID Integer Lösung • ID Integer • Filmtitel Text Lösung • ID Integer • Filmtitel Text • Sprache Text Lösung • ID Integer • Filmtitel Text • Sprache Text • Szene Text Lösung • ID Integer • Filmtitel Text • Sprache Text • Szene Text • Länge Integer Lösung • ID Integer • Filmtitel Text • Sprache Text • Szene Text • Länge Integer • Szenentitel Text Lösung • ID Integer • Filmtitel Text • Sprache Text • Szene Text • Länge Integer • Szenentitel Text • Schauspieler Text Entity Relationship Modell (ERM) Entity Relationship Modell (ERM) • Charakterisierung der Informationen als • Entities (Informationsobjekte) und Entity-­‐ Mengen • Beziehungen (Relationships) zwischen Entities zweier Klassen. Entity Relationship Modell (ERM) • Charakterisierung der Informationen als • Entities (Informationsobjekte) und Entity-­‐ Mengen Entity • Beziehungen (Relationships) zwischen Entities zweier Klassen. Entity Relationship Modell (ERM) • Charakterisierung der Informationen als • Entities (Informationsobjekte) und Entity-­‐ Mengen Entity • Beziehungen (Relationships) zwischen Entities zweier Klassen. Relationship Beispiel Beispiel Abteilu Beispiel Abteilu Artikel Beispiel Abteilu Mitarbe Artikel Beispiel Abteilu Mitarbe verkauft Artikel Beispiel Abteilu arbeitet für Mitarbe verkauft Artikel 1:n Beziehung 1:n Beziehung • Ein Tupel einer Entity enspricht eine oder mehreren Tupel der zweiten Entity 1:n Beziehung • Ein Tupel einer Entity enspricht eine oder mehreren Tupel der zweiten Entity • Beispiel: • Ein Mitarbeiter ist normalerweise einer Abteilung (Kostenstelle) zugeordnet. Für eine Abteilung arbeiten aber mehrere Mitarbeiter. 1:n Beziehung • Ein Tupel einer Entity enspricht eine oder mehreren Tupel der zweiten Entity • Beispiel: • Ein Mitarbeiter ist normalerweise einer Abteilung (Kostenstelle) zugeordnet. Für eine Abteilung arbeiten aber mehrere Mitarbeiter. Abteilu arbeitet für Mitarbe 1:n Beziehung • Ein Tupel einer Entity enspricht eine oder mehreren Tupel der zweiten Entity • Beispiel: • Ein Mitarbeiter ist normalerweise einer Abteilung (Kostenstelle) zugeordnet. Für eine Abteilung arbeiten aber mehrere Mitarbeiter. Abteilu 1 arbeitet für Mitarbe 1:n Beziehung • Ein Tupel einer Entity enspricht eine oder mehreren Tupel der zweiten Entity • Beispiel: • Ein Mitarbeiter ist normalerweise einer Abteilung (Kostenstelle) zugeordnet. Für eine Abteilung arbeiten aber mehrere Mitarbeiter. Abteilu 1 arbeitet für n Mitarbe n:m Beziehung n:m Beziehung • Ein oder mehrere Tupel einer Entity ensprechen einem oder mehreren Tupel der zweiten Entity n:m Beziehung • Ein oder mehrere Tupel einer Entity ensprechen einem oder mehreren Tupel der zweiten Entity • Beispiel: • Ein Artikel kann von mehreren Abteilungen verkauft werden. Und jede Abteilung verkauft mehrere Artikel n:m Beziehung • Ein oder mehrere Tupel einer Entity ensprechen einem oder mehreren Tupel der zweiten Entity • Beispiel: • Ein Artikel kann von mehreren Abteilungen verkauft werden. Und jede Abteilung verkauft mehrere Artikel Abteilu verkauft Artikel n:m Beziehung • Ein oder mehrere Tupel einer Entity ensprechen einem oder mehreren Tupel der zweiten Entity • Beispiel: • Ein Artikel kann von mehreren Abteilungen verkauft werden. Und jede Abteilung verkauft mehrere Artikel Abteilu n verkauft Artikel n:m Beziehung • Ein oder mehrere Tupel einer Entity ensprechen einem oder mehreren Tupel der zweiten Entity • Beispiel: • Ein Artikel kann von mehreren Abteilungen verkauft werden. Und jede Abteilung verkauft mehrere Artikel Abteilu n verkauft m Artikel Beispiel n 1 n m Beispiel Abteilu 1 n n m Beispiel Abteilu 1 n n m Artikel Beispiel Abteilu 1 n Mitarbe n m Artikel Beispiel Abteilu 1 n Mitarbe n verkauft m Artikel Beispiel Abteilu 1 arbeitet für n Mitarbe n verkauft m Artikel Übung • • Entwerfen Sie ein einfaches ERM für eine Klausurverwaltung mit den Entities: Student(Mat.Nr, Vorname, Nachname, ...) Professor(Pers.Nr, Vorname, Nachname,...) Klausur(Fach, Semester, ...) Raum(Nr, Personenanzahl, ...) Ergänzen Sie sinnvoll Entities und Attribute! Lösung Studen Profess n schreibt 1 m Klausur 1 Wird geschrieben in n Raum n hält SQL SQL • Structured Query Language SQL • Structured Query Language • Abfrage-­‐ oder auch Manipilationssprache für Datenbanken SQL • Structured Query Language • Abfrage-­‐ oder auch Manipilationssprache für Datenbanken • Kleine Unterschiede je nach DBMS Operationen Operationen Tabellenfunktionen Operationen Tabellenfunktionen • Anlegen Create Operationen Tabellenfunktionen • Anlegen Create • Benutzen Use Operationen Tabellenfunktionen • Anlegen Create • Benutzen Use • Ändern Alter Operationen Tabellenfunktionen • Anlegen Create • Benutzen Use • Ändern Alter • Löschen Drop Operationen Tabellenfunktionen • Anlegen Create • Benutzen Use • Ändern Alter • Löschen Drop Datensatzfunktionen Operationen Tabellenfunktionen • Anlegen Create • Benutzen Use • Ändern Alter • Löschen Drop Datensatzfunktionen • Kombinieren Join Operationen Tabellenfunktionen Datensatzfunktionen • Anlegen Create • Kombinieren Join • Benutzen Use • Gruppieren Group • Ändern Alter • Löschen Drop Operationen Tabellenfunktionen Datensatzfunktionen • Anlegen Create • Kombinieren Join • Benutzen Use • Gruppieren Group • Ändern Alter • Sortieren Order • Löschen Drop Operationen Tabellenfunktionen Datensatzfunktionen • Anlegen Create • Kombinieren Join • Benutzen Use • Gruppieren Group • Ändern Alter • Sortieren Order • Löschen Drop • Einfügen Insert Operationen Tabellenfunktionen Datensatzfunktionen • Anlegen Create • Kombinieren Join • Benutzen Use • Gruppieren Group • Ändern Alter • Sortieren Order • Löschen Drop • Einfügen Insert • Suchen Select Operationen Tabellenfunktionen Datensatzfunktionen • Anlegen Create • Kombinieren Join • Benutzen Use • Gruppieren Group • Ändern Alter • Sortieren Order • Löschen Drop • Einfügen Insert • Suchen Select • Löschen Delete Operationen Tabellenfunktionen Datensatzfunktionen • Anlegen Create • Kombinieren Join • Benutzen Use • Gruppieren Group • Ändern Alter • Sortieren Order • Löschen Drop • Einfügen Insert • Suchen Select • Löschen Delete • Updaten Udate CREATE CREATE • Create legt eine Tabelle an. CREATE • Create legt eine Tabelle an. CREATE • Create legt eine Tabelle an. CREATE TABLE My_table( my_field1 INT, my_field2 VARCHAR(50), my_field3 DATE NOT NULL, PRIMARY KEY (my_field1, my_field2) ); USE USE • Mit USE legt man fest welche Datenbank man mit den nächsten Befehlen benutzen möchte USE • Mit USE legt man fest welche Datenbank man mit den nächsten Befehlen benutzen möchte USE • Mit USE legt man fest welche Datenbank man mit den nächsten Befehlen benutzen möchte USE database_name ALTER ALTER • Mit ALTER kann man eine Tabelle ändern. Z.B. ein Feld hinzufügen ALTER • Mit ALTER kann man eine Tabelle ändern. Z.B. ein Feld hinzufügen ALTER • Mit ALTER kann man eine Tabelle ändern. Z.B. ein Feld hinzufügen ALTER • Mit ALTER kann man eine Tabelle ändern. Z.B. ein Feld hinzufügen ALTER TABLE My_table ADD my_field4 NUMBER(3) NOT NULL; DROP DROP • Mit Drop wird eine komplette Tabelle gelöscht. DROP • Mit Drop wird eine komplette Tabelle gelöscht. DROP • Mit Drop wird eine komplette Tabelle gelöscht. DROP TABLE My_table; INSERT INSERT • Mit Insert wird in einer angegebenen Tabelle mit den mitgelieferten Daten ein neues Tupel (Datensatz) angelegt. INSERT • Mit Insert wird in einer angegebenen Tabelle mit den mitgelieferten Daten ein neues Tupel (Datensatz) angelegt. INSERT • Mit Insert wird in einer angegebenen Tabelle mit den mitgelieferten Daten ein neues Tupel (Datensatz) angelegt. INSERT INTO My_table (field1, field2, field3) VALUES ('test', 'N', NULL); UPDATE UPDATE • Mit Update wird in einer angegebener Tabell ein spezifisches Attribut mit dem mitgeliefertem Wert überschrieben. UPDATE • Mit Update wird in einer angegebener Tabell ein spezifisches Attribut mit dem mitgeliefertem Wert überschrieben. UPDATE • Mit Update wird in einer angegebener Tabell ein spezifisches Attribut mit dem mitgeliefertem Wert überschrieben. UPDATE My_table SET field1 = 'updated value' WHERE field2 = 'N'; DELETE DELETE • Mit Delete wird von der angegebenen Tabelle ein oder mehrere Datensätze gelöscht. DELETE • Mit Delete wird von der angegebenen Tabelle ein oder mehrere Datensätze gelöscht. DELETE • Mit Delete wird von der angegebenen Tabelle ein oder mehrere Datensätze gelöscht. DELETE FROM My_table WHERE field2 = 'N'; SELECT SELECT • Mit einem SELECT wählt man ganze Tabellen oder einzelne Attribute aus. SELECT • Mit einem SELECT wählt man ganze Tabellen oder einzelne Attribute aus. SELECT • Mit einem SELECT wählt man ganze Tabellen oder einzelne Attribute aus. SELECT * FROM Book WHERE title = ‘Der Schatten des Windes‘; SELECT SELECT • Zwecks einfacherem Handling können beim Select Attributnamen oder Tabellennamen umbenannt werden SELECT • Zwecks einfacherem Handling können beim Select Attributnamen oder Tabellennamen umbenannt werden SELECT • Zwecks einfacherem Handling können beim Select Attributnamen oder Tabellennamen umbenannt werden SELECT title_book as booktitle FROM Book WHERE title = ‘Der Schatten des Windes‘; WHERE WHERE • Im where-­‐Teil der Abfrage wird spezifiziert welche Datensätze gebraucht werden. WHERE • Im where-­‐Teil der Abfrage wird spezifiziert welche Datensätze gebraucht werden. • Hierzu stehen mehrere Operatoren zur Verfügung: (=, !=, >, <, >=,<=) WHERE • Im where-­‐Teil der Abfrage wird spezifiziert welche Datensätze gebraucht werden. • Hierzu stehen mehrere Operatoren zur Verfügung: (=, !=, >, <, >=,<=) WHERE • Im where-­‐Teil der Abfrage wird spezifiziert welche Datensätze gebraucht werden. • Hierzu stehen mehrere Operatoren zur Verfügung: (=, !=, >, <, >=,<=) SELECT * FROM Book WHERE price > 100.00 Funktionen Funktionen • Neben Grundrechenarten können innerhalb von Abfragen auch einige vordefinierte Funktionen verwendet werden: Funktionen • Neben Grundrechenarten können innerhalb von Abfragen auch einige vordefinierte Funktionen verwendet werden: • COUNT zählt die Vorkommen zusammen Funktionen • Neben Grundrechenarten können innerhalb von Abfragen auch einige vordefinierte Funktionen verwendet werden: • COUNT zählt die Vorkommen zusammen • SUM addiert die Werte zusammen Funktionen • Neben Grundrechenarten können innerhalb von Abfragen auch einige vordefinierte Funktionen verwendet werden: • COUNT zählt die Vorkommen zusammen • SUM addiert die Werte zusammen • AVG bildet den Durchschnitt der Werte Funktionen • Neben Grundrechenarten können innerhalb von Abfragen auch einige vordefinierte Funktionen verwendet werden: • COUNT zählt die Vorkommen zusammen • SUM addiert die Werte zusammen • AVG bildet den Durchschnitt der Werte • MAX gibt das Maximum der Werte zurück Funktionen • Neben Grundrechenarten können innerhalb von Abfragen auch einige vordefinierte Funktionen verwendet werden: • COUNT zählt die Vorkommen zusammen • SUM addiert die Werte zusammen • AVG bildet den Durchschnitt der Werte • MAX gibt das Maximum der Werte zurück • MIN gibt das Minimum der Werte zurück Wildcards Wildcards • Auch „Wildcards“ können verwendet werden um Ausdrücke zu bilden: Wildcards • Auch „Wildcards“ können verwendet werden um Ausdrücke zu bilden: • * Alles Wildcards • Auch „Wildcards“ können verwendet werden um Ausdrücke zu bilden: • * Alles • Like ähnlich wie Wildcards • Auch „Wildcards“ können verwendet werden um Ausdrücke zu bilden: • * Alles • Like ähnlich wie • *en alles das mit „en“ endet Wildcards • Auch „Wildcards“ können verwendet werden um Ausdrücke zu bilden: • * Alles • Like ähnlich wie • *en alles das mit „en“ endet • BETWEEN x AND y alles zwischen x und y Beispiele Beispiele SELECT rechnungsnr, sum(rechnungswert) AS Umsatz FROM Rechnungen GROUP BY Book.title; Beispiele SELECT rechnungsnr, sum(rechnungswert) AS Umsatz FROM Rechnungen GROUP BY Book.title; SELECT price, price * 0.19 AS sales_tax FROM Book WHERE price > 100.00 ORDER BY title; ORDER BY ORDER BY • Mit order by werden die Ergebnisse sortiert ORDER BY • Mit order by werden die Ergebnisse sortiert • Es wird angegeben nach welchem/welchen Attribut(en) sortiert werden soll ASC • DESC • (Ascending = Aufsteigend) (Descending = Absteigend) ORDER BY • Mit order by werden die Ergebnisse sortiert • Es wird angegeben nach welchem/welchen Attribut(en) sortiert werden soll ASC • DESC • (Ascending = Aufsteigend) (Descending = Absteigend) SELECT * FROM Book WHERE price > 100.00 ORDER BY title DESC; JOIN JOIN • Mit Join werden vor der Selektion mehrere Tabellen zusammengeführt (Kreuzprodukt!) JOIN • Mit Join werden vor der Selektion mehrere Tabellen zusammengeführt (Kreuzprodukt!) • Es muss hierbei angegeben werden an welchem Punkt die beiden Tabellen miteinander übereinstimmen müssen GROUP GROUP • Mit Group werden die Ergebnisse mit nach dem angegebenen Attribut gruppiert. GROUP • Mit Group werden die Ergebnisse mit nach dem angegebenen Attribut gruppiert. • Alle Datensätze die dieses Attribut gleich haben werden zusammengefasst. GROUP • Mit Group werden die Ergebnisse mit nach dem angegebenen Attribut gruppiert. • Alle Datensätze die dieses Attribut gleich haben werden zusammengefasst. • !! Hier können Datensätze rausfallen!! Transaktionen Transaktionen START TRANSACTION; UPDATE Account SET amount=amount-200 WHERE account_number=1234; UPDATE Account SET amount=amount+200 WHERE account_number=2345; IF ERRORS=0 COMMIT; IF ERRORS<>0 ROLLBACK; Geschachtelte Ausdrücke Geschachtelte Ausdrücke • SQL-­‐Abfragen lassen sich auch schachteln und beispielsweise als Bedingung einfügen Geschachtelte Ausdrücke • SQL-­‐Abfragen lassen sich auch schachteln und beispielsweise als Bedingung einfügen • „Nested Querries“ werden von aussen nach innen abgearbeitet. Äußere Attribute können in inneren Abfragen verwendet werden. Geschachtelte Ausdrücke • SQL-­‐Abfragen lassen sich auch schachteln und beispielsweise als Bedingung einfügen • „Nested Querries“ werden von aussen nach innen abgearbeitet. Äußere Attribute können in inneren Abfragen verwendet werden. SELECT Model FROM Product WHERE ManufacturerID = (SELECT ManufacturerID FROM Manufacturer WHERE Manufacturer = 'Dell') Zusammenfassung • Lokale und zentrale Datenhaltung • Unterschied Datenbank und Dateisystem • AuJau Datenbanksystem • Normalformen • Entity-­‐Relationship-­‐Modelle • SQL Fragen? • T. Swinke • tillman.swinke@h-­‐da.de • http://www.swinke.net/standardsoftware