Die Präsentation wird geladen. Bitte warten

Die Präsentation wird geladen. Bitte warten

12.12.01MySQL Übung1 OnLine Datenbanken MySQL Übung Datenbank für Skriptenverkauf Beim AStA.

Ähnliche Präsentationen


Präsentation zum Thema: "12.12.01MySQL Übung1 OnLine Datenbanken MySQL Übung Datenbank für Skriptenverkauf Beim AStA."—  Präsentation transkript:

1 12.12.01MySQL Übung1 OnLine Datenbanken MySQL Übung Datenbank für Skriptenverkauf Beim AStA

2 12.12.01MySQL Übung2 OnLine Datenbanken Für die Durchführung der Übung wird xampplite eingesetzt. Es beinhaltet folgende Programme: Apache (Web Server) MySQL (Datenbank Server) phpMyAdmin (Werkzeug zum Erstellen und bearbeiten von Datenbanken) Sie können diese Software downloaden von: http://www.apachefriends.org

3 12.12.01MySQL Übung3 Aufagabenbeschreibung Der Verkauf von Skripten beim AStA soll mit Hilfe einer Datenbank erfasst werden. Folgende Vorgänge müssen in der Datenbank abgebildet werden: 1. Erstmalige Lieferung von Skripten 2. Verkauf von Skripten 3. Nachlieferung von Skripten

4 12.12.01MySQL Übung4 Benötigte Tabellen 1. skripte: enthält Informationen über die Skripte (Autor, Name, Preis, Anzahl, Restbestand) 2. lieferung: enthält Informationen über die Lieferung von Skripten 3. verkauf: enthält Informationen über den Verkauf von Skripten

5 12.12.01MySQL Übung5 Tabelle skripte Struktur der Tabelle "skripte"

6 12.12.01MySQL Übung6 Hinweise zur Tabelle Skripte Das Feld "id" ist der Primärschlüssel in dieser Tabelle. Das Attribut "autoincrement" bedeutet, dass es von MySQL automatisch weiter gezählt wird bei jedem neuen Datensatz Das Feld "name" hat das Attribut "Unique". Es darf nur einmal in der Tabelle vorkommen Das Feld "autor" ist ein index-Feld. Das beschleunigt die Suche nach Autoren

7 12.12.01MySQL Übung7 Hinweise zur Tabelle Skripte Aus der Sicht einer optimalen Auslegung der Datenbank (Normalisierung) müsste eine extra Tabelle "Autoren" angelegt werden. Aus Gründen der Vereinfachung wird jedoch darauf verzichtet.

8 12.12.01MySQL Übung8 Tabelle Skripte erstellen

9 12.12.01MySQL Übung9 Tabelle Skripte erstellen SQL-Befehl zur Erstellung der Tabelle Skripte: CREATE TABLE skripte ( id SMALLINT NOT NULL AUTO_INCREMENT PRIMARY KEY, name VARCHAR( 255 ) NOT NULL, autor VARCHAR( 100 ) NOT NULL, preis DECIMAL( 5, 2 ) NOT NULL, beschreibung TEXT NOT NULL, restbestand SMALLINT NOT NULL, INDEX (autor), UNIQUE (name) ) ENGINE = MYISAM CHARACTER SET latin1 COLLATE latin1_german2_ci;

10 12.12.01MySQL Übung10 Tabelle Lieferung Struktur der Tabelle "lieferung"

11 12.12.01MySQL Übung11 Hinweis zur Tabelle Lieferung Das Feld "skript_id" ist ein Sekundärschlüssel und bildet die Verknüpfung zur Tabelle "skripte"

12 Tabelle Lieferung erstellen 12.12.01MySQL Übung12

13 12.12.01MySQL Übung13 Tabelle Lieferung SQL-Befehl: CREATE TABLE lieferung ( skript_id SMALLINT UNSIGNED NOT NULL, datum DATE NOT NULL DEFAULT '0000-00-00', anzahl SMALLINT UNSIGNED NOT NULL, preis DECIMAL( 5, 2 ) UNSIGNED ZEROFILL NOT NULL ) ENGINE = MYISAM ;

14 12.12.01MySQL Übung14 Tabelle Verkauf Struktur der Tabelle "verkauf"

15 12.12.01MySQL Übung15 Tabelle verkauf erstellen

16 12.12.01MySQL Übung16 Tabelle Verkauf erstellen SQL-Befehl zur Erstellung der Tabelle Verkauf CREATE TABLE verkauf (skript_id SMALLINT UNSIGNED NOT NULL, datum DATE NOT NULL DEFAULT '0000-00-00', anzahl SMALLINT UNSIGNED NOT NULL, erloes DECIMAL( 7, 2 ) UNSIGNED ZEROFILL NOT NULL ) ENGINE = MYISAM ;

17 Beziehung zwischen Tabellen erstellen Wählen Sie In phpMyAdmin die Registerkarte Design. verknüpfen Sie das Feld id in der Tabelle Skripte mit dem Feld skript_id in der Tabelle "lieferung". verknüpfen Sie das Feld id in der Tabelle Skripte mit dem Feld skript_id in der Tabelle "verkauf". s. Abbildung auf der nächsten Folie 12.12.01MySQL Übung17

18 Beziehung zwischen Tabellen erstellen 12.12.01MySQL Übung18

19 12.12.01MySQL Übung19 Lieferung von Skripten Man muss 2 Vorgänge unterscheiden 1. Erstmalige Lieferung: Je ein Datensatz wird in die Tabellen lieferung und skripte eingefügt. 2. Nachlieferung von vorhandenen Skripten: Ein Datensatz wird in die Tabelle lieferung eingefügt. In der Tabelle skripte wird nur der restbestand und evtl. der Preis geändert

20 12.12.01MySQL Übung20 Verkauf von Skripten Folgende Aktionen werden durchgeführt: 1. Ein neuer Datensatz wird in die Tabelle verkauf eingefügt. 2. In der Tabelle skripte wird der Restbestand um die Anzahl der verkauften Skripte vermindert

21 12.12.01MySQL Übung21 Datensatz in Tabelle Skripte einfügen INSERT INTO skripte (name, autor, preis, beschreibung, restbestand ) VALUES ('Einführung in die Agrarinformatik', 'Doluschitz, R.', '15.00', 'Daten- und Informationsbereitstellung sowie deren Verarbeitung und Nutzung auf unterschiedlichen Einsatzebenen in der Agrarwirtschaft.', 100 )

22 12.12.01MySQL Übung22 Datensatz in Tabelle Skripte einfügen INSERT INTO skripte (name, autor, preis, beschreibung, restbestand) VALUES ('Einführung in das Agrarrecht', 'Turner, G.; Werner, K.', '12.00', 'Besondere Kapitel des Agrarrechts: Landwirtschaftliches Eigentum, Erbrecht mit Landw. Sondererbrecht, Gebrauchsüberlassungsverträge, Sicherung von Krediten Landwirtschaftliches Arbeits-, Sozial- und Steuerrecht, Agrarrecht in Europa.', 150)

23 12.12.01MySQL Übung23 Datensatz in Tabelle Skripte einfügen INSERT INTO skripte (name, autor, preis, beschreibung, restbestand) VALUES ('Einführung in Javascript', 'RRZN', '6.00', 'Programmieren von dynamischen HTML- Seiten mit JavaScript.', 100)

24 12.12.01MySQL Übung24 Datensatz in Tabelle Skripte einfügen INSERT INTO skripte (name, autor, preis, beschreibung, restbestand) VALUES ('Einführung in SPSS', 'RRZN', '7.50', 'Das Statistikpaket SPSS für Anfänger.', 80)

25 12.12.01MySQL Übung25 Datensatz in Tabelle Skripte einfügen INSERT INTO skripte( name, autor, preis, beschreibung, restbestand ) VALUES ('Word 2002 für Fortgeschrittene', 'RRZN', '6.00', 'Dokument- und Formatvorlagen, Verzeichnisse, Grafiken einfügen und bearbeiten,..', 100 )

26 12.12.01MySQL Übung26 Datensätze in Tabelle skripte

27 12.12.01MySQL Übung27 Datensätze in Tabelle lieferung einfügen INSERT INTO lieferung (skript_id, datum, anzahl, preis) VALUES ('1', '2006-06-12', 100, '15'), ('2', '2006-06-12', 150, '12'), ('3', '2006-06-12', 100, '6'), ('4', '2006-06-12', 80, '7.50'), ('5', '2006-06-12', 100, '6')

28 Tabelle lieferung 12.12.01MySQL Übung28

29 12.12.01MySQL Übung29 Datensatz in Tabelle verkauf einfügen INSERT INTO verkauf (skript_id, datum, anzahl, erloes) VALUES ('2', '2006-06-13', '10', '120'); UPDATE skripte SET restbestand = restbestand - 10 where id = 2

30 12.12.01MySQL Übung30 Datensatz in Tabelle verkauf einfügen INSERT INTO verkauf (skript_id, datum, anzahl, erloes) VALUES ('1', '2006-06-13', '4', '60'); UPDATE skripte SET restbestand = restbestand - 4 where id = 1

31 12.12.01MySQL Übung31 Datensatz in Tabelle verkauf einfügen INSERT INTO verkauf (skript_id, datum, anzahl, erloes) VALUES ('3', '2005-12-13', '20', '120'); UPDATE skripte SET restbestand = restbestand - 20 where id = 3

32 12.12.01MySQL Übung32 Datensatz in Tabelle verkauf einfügen INSERT INTO verkauf (skript_id, datum, anzahl, erloes) VALUES ('3', '2006-12-13', '10', '60'); UPDATE skripte SET restbestand = restbestand - 10 where id = 3

33 12.12.01MySQL Übung33 Auswahl von Datensätzen Beispiele für die SELECT-Anweisung: Ausgabe aller Skripte: SELECT * FROM skripte ORDER BY name

34 12.12.01MySQL Übung34 Auswahl von Datensätzen Ausgabe von Verkaufszahlen und Erlös: (Skript-ID, Name, Anzahl und Erloes) SELECT skripte.id, skripte.name, verkauf.anzahl, verkauf.erloes FROM skripte, verkauf WHERE skripte.id = verkauf.skript_id ORDER BY skripte.name

35 12.12.01MySQL Übung35 Auswahl von Datensätzen Alternative Formulierung: (Verknüpfung der Tabellen mit JOIN) SELECT skripte.id, skripte.name, verkauf.anzahl, verkauf.erloes FROM skripte JOIN verkauf WHERE skripte.id = verkauf.skript_id ORDER BY skripte.id

36 12.12.01MySQL Übung36 Auswahl von Datensätzen Weitere Alternative Formulierung: SELECT s.id, s.name, v.anzahl, v.erloes FROM skripte as s, verkauf as v WHERE s.id = v.skript_id ORDER BY s.id Anmerkung: in diesem Beispiel werden Aliase (Kürzel) für die Tabellennamen benutzt

37 Ergebnis der Abfrage Ausgabe von Verkaufszahlen und Erlös: 12.12.01MySQL Übung37

38 12.12.01MySQL Übung38 Auswahl von Datensätzen Ausgabe der verkauften Skripte in 2005 select s.id, s.name, s.autor, v.anzahl, v.datum, v.erloes from skripte as s, verkauf as v where s.id = v.skript_id AND v.datum LIKE '2005%' ORDER BY s.id Ergebnis der Abfrage:

39 12.12.01MySQL Übung39 Auswahl von Datensätzen Ausgabe der Summe von Verkaufszahlen und Erlös: SELECT s.id, s.name, SUM(v.anzahl), SUM(v.erloes) FROM skripte AS s, verkauf AS v WHERE s.id = v.skript_id GROUP BY s.id

40 12.12.01MySQL Übung40 Auswahl von Datensätzen Ergebnis der Abfrage: Verkaufszahlen und Erlös werden pro Skript zusammengefasst

41 12.12.01MySQL Übung41 Auswahl von Datensätzen Übersicht über verkaufte Skripte im Jahr 2006: SELECT s.id, s.name, s.autor, v.datum, SUM( v.anzahl ), SUM( v.erloes ) FROM skripte AS s, verkauf AS v WHERE s.id = v.skript_id AND v.datum LIKE '2006%' GROUP BY s.id

42 12.12.01MySQL Übung42 Auswahl von Datensätzen Ergebnis der Abfrage:.

43 12.12.01MySQL Übung43 Auswahl von Datensätzen Verknüpfung der Tabellen mit "LEFT OUTER JOIN": SELECT s.id, s.name, v.anzahl, v.erloes FROM skripte as s LEFT OUTER JOIN verkauf as v ON s.id = v.skript_id ORDER BY s.id

44 12.12.01MySQL Übung44 Ergebnis der Abfrage Hinweis: Ergebnis der Abfrage enthält auch Skripte Für die es keinen Eintrag in der Tabelle verkauf gibt (s. Zeilen 4+5)

45 12.12.01MySQL Übung45 Auswahl von Datensätzen Ausgabe von Skripten, für die kein Eintrag in der Verkaufstabelle existiert: SELECT s.id, s.name, s.autor, v.skript_id FROM skripte as s LEFT OUTER JOIN verkauf as v ON s.id = v.skript_id WHERE v.skript_id is NULL ORDER BY s.id

46 12.12.01MySQL Übung46 Ergebnis der Abfrage Ergebnis enthält nur Datensätze von nicht verkauften Skripten

47 12.12.01MySQL Übung47 Auswahl von Datensätzen Ausgabe von Verkaufszahlen: SELECT s.id, s.name, v.skript_id, v.anzahl, v.erloes FROM verkauf as v LEFT OUTER JOIN skripte as s ON s.id = v.skript_id ORDER BY s.id

48 12.12.01MySQL Übung48 Ergebnis der Abfrage Ergebnis der Abfrage enthält auch Einträge in der Tabelle verkauf Für die es keinen passenden Eintrag in der Tabelle skripte gibt Konsistenzprobleme in der DB. Evtl. Fehler bei der Eingabe der skript_id (s. Abb. Auf der nächsten Folie)

49 12.12.01MySQL Übung49 Ergebnis der Abfrage

50 12.12.01MySQL Übung50 Auswahl von Datensätzen Ausgabe von Datensätzen aus Skripten- Tabelle, mit Restbestand < 100 SELECT id, name, autor, restbestand FROM skripte WHERE restbestand < 100 ORDER BY name

51 12.12.01MySQL Übung51 Ergebnis der Abfrage

52 12.12.01MySQL Übung52 Nachlieferung von Skripten INSERT INTO lieferung (skript_id, datum, anzahl, preis) VALUES ('1', '2006-06-13', '50', '15.50'); UPDATE skripte SET restbestand = restbestand + 50, Preis = 15.50 where id = 1 Hinweis: Preis hat sich um 50 Cent erhöht!

53 12.12.01MySQL Übung53 Auswahl von Datensätzen Ausgabe aller Liefervorgänge: SELECT s.id, s.name, s.autor, l.datum, l.anzahl, l.preis, l.anzahl*l.preis FROM skripte as s, lieferung as l WHERE s.id = l.skript_id ORDER BY s.id

54 12.12.01MySQL Übung54 Auswahl von Datensätzen Ergebnis der Abfrage:

55 12.12.01MySQL Übung55 Auswahl von Datensätzen Ausgabe aller Liefervorgänge mit Gesamtlieferkosten pro Skript: SELECT s.id, s.name, s.autor, l.datum, sum(l.anzahl), sum(l.anzahl*l.preis) FROM skripte as s, lieferung as l WHERE s.id = l.skript_id GROUP BY s.id ORDER BY s.id

56 12.12.01MySQL Übung56 Auswahl von Datensätzen Ergebnis der Abfrage:


Herunterladen ppt "12.12.01MySQL Übung1 OnLine Datenbanken MySQL Übung Datenbank für Skriptenverkauf Beim AStA."

Ähnliche Präsentationen


Google-Anzeigen