Brauchen Datenbanken eine Struktur?

Slides:



Advertisements
Ähnliche Präsentationen
8. Termin Teil B: Wiederholung Begriffe Baum
Advertisements

ER-Datenmodell und Abfragen in SQL
Eine dynamische Menge, die diese Operationen unterstützt,
Folien 2-5, 7-8 © Prof. Dr. Manfred Rössle (FH Aalen)
spezielle Nutzersichten formale Ebene (deskriptive Regeln)
Objekt – Relationales – Modell Tomasz Makowski IN
System J – Compiler – Praktikum: Datenbanksystementwicklung Knut Stolze
MySQL.
R. Der - Vorlesung Algorithmen und Datenstrukturen (Magister)
10. Grundlagen imperativer Programmiersprachen
Bauinformatik II Softwareanwendungen 1
Systemüberblick Beispiele: Microsoft Access Oracle Ingres Informix
Kapitel 3: Das Relationenmodell
FH-Hof Extensible Markup Language Richard Göbel. FH-Hof Extensible Markup Language XML XML ist universeller Ansatz für die Strukturierung von Zeichenketten.
Strukturen. In einer Struktur kann eine beliebige Anzahl von Komponenten (Daten) mit unterschiedlichen Datentypen (im Gegensatz zu Feldern) zusammengefaßt.
Polymorphie (Vielgestaltigkeit)
Polymorphie (Vielgestaltigkeit)
Vorlesung Informatik 2 Algorithmen und Datenstrukturen (27 – Kürzeste Wege) Prof. Th. Ottmann.
Vorlesung Informatik 2 Algorithmen und Datenstrukturen (17 – Bäume: Grundlagen und natürliche Suchbäume) Prof. Th. Ottmann.
SQL als Abfragesprache
SQL als Abfragesprache
Datenbankdesign und Normalisierung
Daten bank St. Wiedemann.
IS: Datenbanken, © Till Hänisch 2000 CREATE TABLE Syntax: CREATE TABLE name ( coldef [, coldef] [, tableconstraints] ) coldef := name type [länge], [[NOT]NULL],
Otto-von-Guericke-Universität Magdeburg Gamal Kassem 1 Tabellenzeile mit READ lesen READ TABLE itab INDEX idx READ TABLE itab WITH KEY comp1 = f1.... Compn.
Otto-von-Guericke-Universität MagdeburgGamal Kassem Übung 7 Reports mit Datenbankzugriff.
Datenintegrität Referentielle Integrität create table
DVG Klassen und Objekte
Buch S73ff (Informatik I, Oldenbourg-Verlag)
Erhard Künzel für Info 9. Klasse: Digitale Schule Bayern© Erhard Künzel.
© Katharina Brachmann Normalformen Oldenbourg S137, Klett S117
Datenbanken 10: Einfügen, Ändern, Löschen
Abfragen – Tipps und Tricks Buch S102ff (Informatik I, Oldenbourg-Verlag) Nach einer Vorlage von Dieter Bergmann.
Buch S70ff (Informatik I, Oldenbourg-Verlag)
SQL-Datentypen INTEGER
Relationale Datenbankmodelle
Kakuro Regeln und Strategien
Datenbankentwicklung IV-LK
SQL PHP und MySQL Referat von Katharina Stracke und Carina Berning
Datenbankentwicklung IV-LK
Relationale Datenbanken III
Die Grundterminologie
Datenbanken?.
Effiziente Algorithmen
Access 2000 Willkommen im Access-Kurs Oliver Mochmann.
Betrieb von Datenbanken Marco Skulschus & Marcus Wiederstein Datenmanipulation Lehrbuch, Kapitel 4.
Effiziente Algorithmen
Effiziente Algorithmen Hartmut Klauck Universität Frankfurt SS
Datenbanken Dantenbanksystem Data Base System Datenbasis (Daten)
Datenbanken Datenstrukturen.
(D.h. „Hallo MausFans!“ auf Japanisch).
Datenbanksysteme für hörer anderer Fachrichtungen
Einführung in Datenbankmodellierung und SQL
Freiwillige Feuerwehr der Stadt Perg
Das relationale Modell
verstehen planen bearbeiten
Normalisierungsprozess
Structured Query Language
8 Erzeugen und Verwalten von Tabellen Ziele Kennenlernen der wichtigsten Datenbankobjekte Anlegen von Tabellen Datentypen zur Definition von Spalten.
(Syntax, Strings/Zahlen, Variablen, Arrays)
Datenbank für Skriptenverkauf
PHPmyadmin Maya Kindler 6c.
Datenbanken erstellen mit PostgreSQL
Datenbanken abfragen mit SQL
Pool Informatik, Sj 11/12 GZG FN W.Seyboldt 1 Pool Informatik 5 GZG FN Sj. 11/12 Kopieren, Daten, Programme.
BHAK/BHAS 1 Salzburg KIDM 2ASBS Schuljahr 2004/05
Pointer. Grundsätzliches: Im Arbeitsspeicher werden Daten gespeichert. Um auf die Daten eindeutig zugreifen zu können, werden diesen Daten Adressen zugeordnet.
15 Tabellen erstellen und Tabellenstruktur bearbeiten Grundlagen zu Tabellen l Tabelle l Enthält Daten zu einem bestimmten Thema l Beispiele:  Mitarbeiterdaten.
Sprachumfang von SQL Vier Kategorien DDL (Data Definition Language)
(Structured Query Language)
 Präsentation transkript:

Brauchen Datenbanken eine Struktur? Wichtige Daten, die vor 20 Jahren noch auf Papier standen, wurden 10 Jahre später in Excel-Tabellen gespeichert. Und weil sich da ganz schön viel ansammelte, wurden daraus einige Jahre später Datenbanken. Aber was macht eine Sammlung von Tabellen zu einer Datenbank? Die Verknüpfungen zwischen diesen Tabellen! Es ist heute nicht mehr schwer, an ein wirklich leistungsfähiges Datenbanksystem zu kommen. Aber bevor dies sinnvoll eingesetzt werden kann sollte man jedoch zunächst mal einiges an Zeit und Mühe in die Planung und das Datenbank-Design investieren. Sicher, man kann auch einfach mal so loslegen und sich dann irgendwie "durchwursteln". Dass man damit Zeit und Energie spart ist allerdings ein weit verbreiteter Irrtum. Warum Datenbanken ordentlich geplant sein wollen, möchte ich im Folgenden an einem Beispiel zeigen. Lektorat Dirk Nielsen

Betrachten wir zur Illustration also die Datenhaltung eines Online-Buchhändlers. Nehmen wir auch schon mal an, dass dieser Buchhändler nicht mehr so naiv ist, alles in eine einzige Tabelle schreiben zu wollen. Schließlich hat er sich einige Gedanken gemacht und präsentiert stolz drei Tabellen mit folgender Struktur. Lektorat Dirk Nielsen

Lektorat Dirk Nielsen

Ist dieser Ansatz überzeugend Ist dieser Ansatz überzeugend? Höchstens auf den ersten Blick, auf Dauer kann das nicht funktionieren. Um nur auf einige Probleme hinzuweisen: Bei jeder Bestellung eines bestimmten Kunden müssen alle seine Kundendaten (Name, Ort, ...) erneut gespeichert werden! Bei jeder Bestellung muss man in der gesamten Tabelle Bestellung nachsehen, ob der Kunde bereits erfasst ist und welche "KdNr" er hat. Wer kontrolliert, ob die "ISBN" der Tabelle Bestellung auch in Buch enthalten ist? Kann es zu einer "BestNr" nur eine "ISBN" geben? Sicherlich möchten wir dem Kunden ermöglichen, gleichzeitig zwei verschiedene Bücher zu bestellen, dafür soll er jedoch nur eine Rechnung erhalten. Was ist dann aber das identifizierende Merkmal (der "Primärschlüssel") in der Tabelle Bestellung? Lektorat Dirk Nielsen

Angenommen, ein Verlag ändert seinen Namen und der Eintrag in Tabelle Bestellung wird aktualisiert. Wenn dies in der Büchertabelle nicht ebenso angepasst wird, können einzelne Bücher nicht mehr zugeordnet werden! Kundendaten können erst dann gespeichert werden wenn auch eine Bestellung vorliegt. Schickt ein Kunde nach seiner ersten Bestellung das Buch zurück und wird deshalb der Datensatz dieser Bestellung gelöscht, sind damit auch die Kundendaten verloren. Bei einem Tippfehler im Kundennamen erscheinen zwei scheinbar unterschiedliche Kunden mit derselben Kundennummer. Muss der Rechnungsbetrag wirklich gespeichert werden? Schließlich kann man ihn aus den übrigen Daten berechnen. Und was ist, wenn sich die Buchpreise ändern? Will ich wirklich zu einer konkreten PLZ jedesmal den Ortsnamen neu speichern? Dies betrifft sowohl die Daten der Verlage als auch der Kunden. Lektorat Dirk Nielsen

Diese Auflistung ließe sich leicht noch erweitern Diese Auflistung ließe sich leicht noch erweitern. Wenn man solche Mängel erst beheben will wenn die Datenbank bereits implementiert ist, hat man nicht nur viel Ärger. Man investiert in eine solche Reparatur wesentlich mehr Zeit als in eine solide Planungsphase! Lektorat Dirk Nielsen

Planungsphase: Lektorat Dirk Nielsen

Logisches Lösungsmodell: Lektorat Dirk Nielsen

FAZIT Lektorat Dirk Nielsen

DAS "IEV" MODELL Lektorat Dirk Nielsen Sütő Gergely

Dies sind jeweils Individuen MITARBEITER 2 690315 4567 Managerin 1 521107 5469 Sylvia Blume Wächter 9.600 € Hans Müller 2.500 € 2 590315 4567 1 680115 1234 Sekretärin Direktor Anita Bach Volker Klein 3.800 € 14.500 € Dies sind jeweils Individuen Lektorat Dirk Nielsen

INDIVIDUEN EIGENSCHAFT VERBINDUNG Objekte des Wirtschaftssystems, die mit Daten beschrieben werden. Alle Faktoren des Wirtschaftssystems (Sachen, Menschen, Ereignisse, Erscheinungen) Objekt EIGENSCHAFT Die Daten, mit denen die Individuen beschrieben werden VERBINDUNG Verbindungen zwischen den Daten Lektorat Dirk Nielsen

INDIVIDUUM Individuumtyp MITARBEITER Vorkommen des Individuums 2 690315 4567 Managerin Sylvia Blume 1 521107 5469 Wächter 9.600 € Hans Müller Individuumtyp 2.500 € 2 590315 4567 1 680115 1234 Sekretärin Direktor Vorkommen des Individuums Anita Bach Volker Klein 3.800 € 14.500 € MITARBEITER Lektorat Dirk Nielsen

EIGENSCHAFT Lektorat Dirk Nielsen Vorkommen einer Eigenschaft (Wert) 2 690315 4567 Eigenschafts typ Managerin 1 521107 5469 NAME DES MITARBEITERS Wächter Sylvia Blume Hans Müller 9.600 € Volker Klein 2.500 € Anita Bach 2 590315 4567 1 680115 1234 Sekretärin Direktor 3.800 € 14.500 € EIGENSCHAFT Lektorat Dirk Nielsen

Vorkommen der Verbindung ORGANISATION Betrieb X Zentrale Hamburg 32 22 Kiel Vorkommen der Verbindung Verbindungstyp MITARBEITER 22 32 22 22 22 Lektorat Dirk Nielsen

im Computer gespeichert sind miteinander in Verbindung stehen DATENBANK System der Daten, die im Computer gespeichert sind miteinander in Verbindung stehen enthält auch die Datenstrukturbeschreibung und die Datenverwaltungsprozeduren Lektorat Dirk Nielsen

Beispiel - Relation MITARBEITER <Identifizierungsnummer, Name, Vorname, Personalausweisnummer, Geschlecht, Sozialversicherungsnummer, Führerscheinnummer, ggf. Geburtsname, Gehalt, Adresse, Betriebscode, Betriebsname, Kinder, Kindername(n), Sprachcode, Sprache(n), Sprachprüfungsdatum, etc.> Lektorat Dirk Nielsen Sütő Gergely

Innere Rolle der Eigenschaften Identifizierungsfeld: in seiner Spalte kommt jeder Wert nur einmal vor Beschreibungsfeld: in seiner Spalte kann ein Wert mehrmals vorkommen Sütő Gergely

Wie soll ein guter Identifizierer sein? Kriterien: stark charakteristisch stabil feste Länge möglichst kurz benutzt möglichst wenig Zeichen Lektorat Dirk Nielsen Sütő Gergely

Identifizierer-Alternativen Innerer Identifizierer: nur innerhalb des Systems bekannt Aussenidentifizierer: ausserhalb des Systems wird bestimmt Primärschlüssel Lektorat Dirk Nielsen Sütő Gergely

Funktionale Abhängigkeit da bestimmt eindeutig df d.h. df  da da df ? Paul Klein Lektorat Dirk Nielsen Sütő Gergely

Gegenseitige Abhängigkeit da bestimmt eindeutig dj und umgekehrt auch, d.h. da dj da dj Lektorat Dirk Nielsen Sütő Gergely

Funktionale Unabhängigkeit da bestimmt dn nicht und dn bestimmt da nicht, d.h. dn da da dn EN Lektorat Dirk Nielsen Sütő Gergely

Einzeln, darf nicht gleich sein! Umgekehrte Abhängigkeit dr bestimmt da, umgekehrt aber nicht, d.h. dr  da da dr Einzeln, darf nicht gleich sein! Lektorat Dirk Nielsen Sütő Gergely

Unbestimmte Relation Normalisieren Aus Werten einiger Felder müssen mehrere zu einer Zeile zugeordnet werden, deswegen lässt sich die Relation nicht auf eine zweidimensionale Tabelle abbilden. Was ist das Problem? Normalisieren Lektorat Dirk Nielsen Sütő Gergely

Verbindungsgrad Mögliche Werte: ein zu eins (1:1) ein zu mehr (1:n) Die Verbindung zwischen den Relationen bedeutet die Zuordnung der Zeilen zu den einzelnen Relationen. Der Verbindungsgrad zeigt an, wie viele Zeilen einer Relation zu einer beliebigen Zeile einer anderen Relation verbunden sein können oder sind. Mögliche Werte: ein zu eins (1:1) ein zu mehr (1:n) mehr zu mehr (m:n) Lektorat Dirk Nielsen Sütő Gergely

1:1 Verbindung Lektorat Dirk Nielsen Sütő Gergely

1:n Verbindung Lektorat Dirk Nielsen Sütő Gergely

m:n Verbindung Lektorat Dirk Nielsen Sütő Gergely

Datenstruktur Organisation Führers. FNr Mitarbeiter Betr.code IdNr Betr.code Betr.name Mitarbeiter Sprache IdNr PANr Name Betr.code Sc Sprache Kinder Sprachkenntnis Kind_SVNr IdNr Kindname Sprachcode IdNr Sprachprüfung Lektorat Dirk Nielsen Sütő Gergely

Begriffsentsprechungen reelles System IEV Modell relationelles Modell Datenbank Individuum- Typ Relation Tabelle Individuum- Vorkommen Tupel Rekord (Zeile) Name Eigenschaft- Typ Feld Feld Paul Klein Eigenschaft- Vorkommen Element (Feld)Wert Verbindungs- Typ Verbindung Verbindungs- Beschreibung Verbindungs- Vorkommen Menge der Zeilen Verbundene Rekords Lektorat Dirk Nielsen Sütő Gergely

Konstruktion der SGM Lektorat Dirk Nielsen Sütő Gergely

Bezeichnungen der SGM  Identifizierer  Teilidentifizierer  Funktionale Abhängigkeit  Gegenseitige Abhängigkeit  Standardwert  Kriterium  Schwach charakteristische Eigenschaft  Untermatrix Berufung  Mnemonic Lektorat Dirk Nielsen Sütő Gergely

Charakteristik der SGM Reihe: Individuum Spalte: Eigenschaft Zelle: Zusammenhang In eine Spalte kommt immer nur ein Identifizierer. Identifizierer kann sein: einfach: ein Stern  zusammengesetzt: zwei oder mehr Kreise  In einer Spalte darf gleichzeitig kein Identifizierer (Stern) und Teilidentifizierer (Kreis) stehen! Lektorat Dirk Nielsen Sütő Gergely

BEDINGTE ABHÄNGIGKEIT STARKE LOGISCHE REDUNDANZ Lösung       BEDINGTE ABHÄNGIGKEIT    Bezeichnungen: Identifizierer  Teilidentifizierer  Funktionale Abhängigk.  Gegenseitige Abhängigk.  Kriterium  Schwach charakteristisch              STARKE LOGISCHE REDUNDANZ    Lektorat Dirk Nielsen  Sütő Gergely

Elementare Daten Kleinste Daten mit selbständiger Bedeutung und selbständigen Namen, die nicht weiter zerlegt werden können, sind der Datensatz oder Datenfeld Elementare Daten sind nach ihrem Typ: (ganze und reelle) Zahlen Charakter Logische Werte Zeiger Aufgezählte Werte Lektorat Dirk Nielsen

Elementare Datentypen Ganze Zahlen: die Menge der ganzen Zahlen Reelle Zahlen: rationelle Zahlen in Binärzahlensystem Logische Werte: Wahr oder Falsch Charakter: Werte aus der ASCII -Zeichencodetabelle Lektorat Dirk Nielsen

Elementare Datentypen Zeiger: (pointer) Datentyp, der nicht Daten beinhaltet, sondern ihre Adresse im (Haupt-) Speicher Aufgezählter Typ: Datentyp, der durch Aufzählung seiner mögliche Werte angegeben wird. Die möglichen Werte (Konstanten) sind beliebige Datentypen. Lektorat Dirk Nielsen

Elementare Datenstrukturen Sequenz / Feld / Block: (array) Folge von Daten, deren Anzahl bestimmt ist und jedes Element durch einen Index (Nummer) erreichbar ist Tupel: (record) Sammlung von verschiedenen Daten(typen), die irgendwie zusammenhängen Datei: (file) Datenbestand, geordnete Menge irgendwie zusammenhängender Informationen Lektorat Dirk Nielsen

Abstrakte Datenstrukturen Ihr Ziel ist die Abbildung reeller Datenstrukturen auf eine logische Struktur, die unter gegebenen Umständen und gegebenen Mitteln physisch zu verwirklichen ist In der Praxis unterschieden sich die logischen und die physischen Datenstrukturen voneinander Der physische Datenbestand ist die Menge der gespeicherten Daten, die eigene Namen hat Lektorat Dirk Nielsen

Abstrakte Datenstrukturen Verlauf der Abbildung: logischer Datensatz  physische Datenfeld logischer Tupel  physischer Tupel in der logischen Datenstruktur gespeicherte Daten  physische Datenbestand Strukturierung physischer Bestände: seriell direkt zufällig indiziert sequenziell Lektorat Dirk Nielsen

Abstrakte Datenstrukturen Block: Folge von Daten, deren Anzahl bestimmt ist und jedes Element durch einen Index (Nummer) erreichbar ist Charakterkette: unbestimmte (veränderbare) Anzahl von Charakteren Stapel: (stack) Datenstruktur, wo eine Operation nur mit dem letzten Element durchgeführt werden kann und ein neues Element nur nach dem letzten Element eingefügt werden kann (LIFO) Lektorat Dirk Nielsen

Stapel Elemente können reingetan und rausgenommen werden Nur das letzte Element ist erreichbar Leerheit ist abfragbar Unterteil Oberteil Lektorat Dirk Nielsen

Abstrakte Datenstrukturen Schlange: (queue) Reihenfolge von Daten, bei der an einem Ende Daten angefügt und am anderen Ende weggenommen werden können (FIFO) Liste: Datenstruktur, die sagt, welches Element - logisch gesehen - dem anderen folgt. Tupel: zusammengesetzte Datenstruktur, die aus Feldern besteht, die eigenen Namen haben und durch diesen Namen erreichbar sind Lektorat Dirk Nielsen

Schlange Elemente können reingetan und rausgenommen werden Nur das erste Element ist erreichbar Leerheit ist abfragbar Ende Anfang Lektorat Dirk Nielsen

Liste Elemente können reingetan und rausgenommen werden Über die Zeigerkette ist jedes beliebiges Element erreichbar Leerheit ist abfragbar Lektorat Dirk Nielsen

Tupel (record) Innerhalb eines Tupels ist jedes Feld erreichbar – sonst kann nur der Tupel erreicht werden Die elementaren Datentypen der Felder und ihre Eingangsformate sind veränderbar Abfrage der Leerheit ist sinnlos Grösse ist nur indirekt veränderbar, falls die Grösse der Felder geändert wird Lektorat Dirk Nielsen

Tupel Lektorat Dirk Nielsen

Datei Nach dem Öffnen ist in ihr jedes beliebige Element erreichbar – physisch ist sie aber nur als cluster lesbar In der Datei gespeicherte Menge kann aus Kombination von beliebigen elementaren Datentypen bestehen Die Abfrage der Leerheit ist sinnlos Die Grösse ist von den gespeicherten Daten abhängig Lektorat Dirk Nielsen

Sequentielle Datei Besteht aus gleichen Datentypen Nimmt auf dem Hintergrundspeicher Platz Maximale Grösse ist vom freien Speicherplatz abhängig Ihre Elemente sind nur nach der Aufschreib-Reihenfolge erreichbar Lektorat Dirk Nielsen

Indizierte Datei Besteht aus gleichen Datentypen Nimmt auf dem Hintergrundspeicher Platz Maximale Grösse ist vom freien Speicherplatz abhängig Ihre Elemente sind beliebig erreichbar Lektorat Dirk Nielsen

Tupel-Datei Besteht aus verschiedenen Datentypen Name und Typ der Elemente (Felder) müssen angegeben werden Die Tupel-Elemente sind auch einzeln erreichbar Ein Tupel ist eine Einheit, aus der Block, Stapel, Schlange oder Liste gebaut werden können Lektorat Dirk Nielsen

Datei Wie kann eine Datei erstellt werden? Mit dem entsprechenden Programm Durch den entsprechenden Algorithmus Lektorat Dirk Nielsen

Zusammengesetzte Datenstrukturen Aus abstrakten Datenstrukturen vom gleichen Typ können zusammengesetzte Datenbestände aufgebaut werden: hierarchische Strukturen (Bäume) relationelle Strukturen (Tabellen) Netzstrukturen (Graphen, Netzwerke) Lektorat Dirk Nielsen

Operationen für zusammen-gesetzten Datenstrukturen Benutzen eines Elements: erstes, letztes, nächstes, beliebiges Einfügen eines neuen Elements: am Anfang, am Ende, an einer beliebigen Stelle Entfernen eines Elements: erstes, letztes, beliebiges Prüfung der Existenz (leer oder doppelt?) Lektorat Dirk Nielsen

Verkettete Stapel, Schlange, Liste Für im Block gespeicherten Daten müssen festgelegte Speicherplätze reserviert werden, die entweder zu klein oder zu groß sein können In der verketteten Datenstruktur werden die Daten einzeln gespeichert und dadurch wird nur genau soviel Speicherplatz benutzt, wie nötig ist Lektorat Dirk Nielsen

SQL Structured Query Language Die relationelle Datenbankverwaltungssprache Lektorat Dirk Nielsen Sütő Gergely

Die Charakteristik der SQL Normalisiert, transportierbar (zwischen Systemen und Computern) Selbstständige Sprache, aber sie kann in andere Programmiersprachen eingefügt werden Lektorat Dirk Nielsen

Allgemeine Datentypen SMALLINT kurze ganze Zahl (2 byte) -32 767 < x < 32 768 INTEGER ganze Zahl (4 byte) -2 147 483 647 < x < 2 147 483 648 DECIMAL(e,t) festpünktliche Zahl FLOAT schwebepünktliche Zahl CHAR(n) Charakterkette (Text) n 255 byte DATE Datum LOGICAL Logik (ja/nein) MONEY Währung SERIAL AutoWert VARCHAR(n) langer Text n>255 Lektorat Dirk Nielsen

Datenbankstrukturbehandlung I. Datenbank erstellen: CREATE DATABASE Datenbankname; Datenbank öffnen: {START} DATABASE Datenbankname; Datenbank schliessen: CLOSE DATABASE; Datenbank löschen: DROP DATABASE Datenbankname; Lektorat Dirk Nielsen

Datenbankstrukturbehandlung II. (Tabellen) Neue Tabelle erstellen: CREATE TABLE Tabellenname (Spalte1{, Spalte2, …}); Neue Spalte einfügen: ALTER TABLE Tabellenname ADD (Spalte1{, Spalte2, …}); Tabelle löschen: DROP TABLE Tabellenname; Lektorat Dirk Nielsen Spaltei  SpaltennameiDatentypi{NOT NULL}

Dateninstandhaltung (Diese Operationen beziehen sich auf die Reihen!) Einfügen: INSERT INTO Tabellenname {(Spaltenliste)} VALUES(Konstant|NULL); Ändern: UPDATE Tabellenname SET Spaltenname=Ausdruck|NULL {WHERE Bedingung}; Löschen: DELETE FROM Tabellenname {WHERE Bedingung}; Lektorat Dirk Nielsen

Abfrage (die SELECT Anweisung) Auswählen von in der Anweisung definierten Kriterien aus einer oder mehreren Tabellen Lektorat Dirk Nielsen

Abfrage Syntax SELECT {ALL|DISTINCTROW} *| Ausdruckliste FROM Tabellenliste {WHERE Bedingung} {GROUP BY Spaltenliste} {HAVING Gruppen_Bedingung} {ORDER BY Schlüssel_Ausdruck}; Lektorat Dirk Nielsen

Abfrage weitere Komponente Tabellen Verknüpfen (JOIN) Starke Verbindung: INNER JOIN…ON „Lockere” Verbindung LEFT|RIGHT JOIN Vereinigen (UNION) Lektorat Dirk Nielsen

Datenschutz Zugriffsrechte übergeben: GRANT Liste der Rechte {ON Tabellenname} TO PUBLIC|Benutzerliste {WITH GRANT OPTION}; Datenbankrechte: CONNECT RESOURCE DBA Zugriffsrechte aufheben: REVOKE Liste der Rechte {ON Tabellenname} TO PUBLIC|Benutzerliste; Lektorat Dirk Nielsen

Anfangen einer Transaktion: BEGIN WORK; Gültigmachen einer Transaktion: COMMIT WORK; Ungültigmachen einer Transaktion: ROLLBACK WORK; Wiederherstellen einer Datenbank: ROLLFORWARD DATABASE; Lektorat Dirk Nielsen

BEISPIELAUFGABEN 0-3 SELECT * FROM WAREN; 1. Listen wir die Tabelle WAREN auf SELECT * FROM WAREN; 2. Listen wir Name, Code und Preis aus der Tabelle WAREN SELECT NAME, CODE, PREIS FROM WAREN; Ergänzen wir die letzte Aufgabe so, daß wir nur die Waren auslisten, die mehr als 100 € kosten SELECT NAME, CODE, PREIS FROM WAREN WHERE PREIS>100; Lektorat Dirk Nielsen 0-3

BEISPIELAUFGABEN 3. Setzen wir die letzte Aufgabe so fort, daß wir die Waren nach Namen geordnet auslisten SELECT NAME, CODE, PREIS FROM WAREN WHERE PREIS>100 ORDER BY NAME; 4. In der nächsten Aufgabe listen wir die Waren so auf, daß neben dem Code auch Bezeichnung, Geschäftscode, Steuerschlüssel und Preis der Ware erscheint. Dazu müssen wir die Tabellen WAREN und BESTAND verknüpfen! Lektorat Dirk Nielsen 0-3

ON WAREN.CODE = BESTAND.CODE VERKNÜPFUNG IN SQL WAREN 1. WAREN Tabelle 2. verknüpft mit der Tabelle BESTAND BESTAND 3. in den Zeilen, wo die Codes in den beiden Tabellen über- einstimmen INNER JOIN BESTAND WAREN ON WAREN.CODE = BESTAND.CODE Lektorat Dirk Nielsen 9

BEISPIELAUFGABEN Die vollständige SQL Anweisung der 4. Aufgabe: SELECT WAREN.CODE,NAME,GCODE,MWST,PREIS FROM WAREN INNER JOIN BESTAND ON WAREN.CODE = BESTAND.CODE; Lektorat Dirk Nielsen 4-5

BEISPIELAUFGABEN 5. Ergänzen wir die letzte Aufgabe so, daß wir auch den Bestandswert berechnen und die Liste mit der Kopfzeile „Wert des Bestandes” versehen SELECT WAREN.CODE,NAME,GCODE,MWST, PREIS,BSTD, PREIS*BSTD AS [Wert des Bestandes] FROM WAREN INNER JOIN BESTAND ON WAREN.CODE = BESTAND.CODE; Den Text „Wert des Bestandes” müssen wir in [ ] schreiben, da er Leerzeichen enthält! Lektorat Dirk Nielsen 4-5

BEISPIELAUFGABEN 6. Ergänzen wir die letzte Aufgabe damit, daß wir anstelle des Geschäftscodes die Adresse des Geschäfts anzeigen! Zur Lösung der Aufgabe müssen wir zur letzten Stuktur die Tabelle GESCHÄFT verknüpfen so, daß die Tabelle BESTAND mehrmals vorkommt, d.h. wir bilden eine Netzstruktur in SQL. Lektorat Dirk Nielsen 9

NETZSTRUKTUR IN SQL GESCHÄFT WAREN BESTAND INNER JOIN BESTAND (WAREN GESCHÄFT INNER JOIN ON WAREN.CODE = BESTAND.CODE) Lektorat Dirk Nielsen ON GESCHÄFT.GCODE = BESTAND.GCODE 9

BEISPIELAUFGABEN 9 SELECT WAREN.CODE, NAME AS [Name der Ware], Die vollständige Lösung der Aufgabe 6. in SQL: SELECT WAREN.CODE, NAME AS [Name der Ware], GADR AS [Adresse des Geschäfts], PREIS*BSTD AS [Wert des Bestandes] FROM GESCHÄFT INNER JOIN (WAREN INNER JOIN BESTAND ON WAREN.CODE = BESTAND.CODE) ON GESCHÄFT.GCODE = BESTAND.GCODE; Lektorat Dirk Nielsen 9

BEISPIELAUFGABEN 7. Summieren wir die Bestandswerte der Waren SELECT WAREN.CODE, First(NAME) AS Bezeichnung, Sum(PREIS*BSTD) AS Bestandswert FROM WAREN INNER JOIN BESTAND ON WAREN.CODE = BESTAND.CODE GROUP BY WAREN.CODE; Lektorat Dirk Nielsen 6

BEISPIELAUFGABEN 8. Ergänzen wir die letzte Aufgabe so, daß wir nur die Daten anzeigen, wo der Bestandswert über 2.000 € liegt! SELECT WAREN.CODE, First(WAREN.NAME) AS [First:NAME], Sum([PREIS]*[BSTD]) AS Bestandswert FROM WAREN INNER JOIN BESTAND ON WAREN.CODE = BESTAND.CODE GROUP BY BESTAND.CODE HAVING (((Sum([PREIS]*[BSTD]))>2000)); Lektorat Dirk Nielsen 7

BEISPIELAUFGABEN Aus der letzten Lösung können wir einiges entfernen: SELECT WAREN.CODE, First(NAME) AS Bezeichnung, Sum(PREIS*BSTD) AS Bestandswert FROM WAREN INNER JOIN BESTAND ON WAREN.CODE = BESTAND.CODE GROUP BY WAREN.CODE HAVING Sum(PREIS*BSTD)>2000; Lektorat Dirk Nielsen 7

ENDE Lektorat Dirk Nielsen