12
Relationale Datenbanken III Mit SQL Datenbanken erzeugen und Daten in eine Datenbank eintragen

Relationale Datenbanken III Mit SQL Datenbanken erzeugen und Daten in eine Datenbank eintragen

Embed Size (px)

Citation preview

Page 1: Relationale Datenbanken III Mit SQL Datenbanken erzeugen und Daten in eine Datenbank eintragen

Relationale Datenbanken III

Mit SQL Datenbanken erzeugen und Daten in eine Datenbank eintragen

Page 2: Relationale Datenbanken III Mit SQL Datenbanken erzeugen und Daten in eine Datenbank eintragen

Beispiel Tabellen ReisebüroPerson: {[PersNr, Name, Adresse]}

Kunde: {[PersNr, Kaufkraft, GebDatum]}

Mitarbeiter: {[PersNr, Gehalt]}

Transportmedium: {[MedienNr, Bezeichnung, Preis]}

Land: {[LandNr, Name, Sprache, Währung, Vorwahl]}

Reiseziel: {[ZielNr, LandNr, Name, Preis]}

Beratung: {[KundeNr, MitarbeiterNr]}

Buchung: {[KundeNr, MitarbeiterNr, MedienNr, ZielNr, Datum]}

Page 3: Relationale Datenbanken III Mit SQL Datenbanken erzeugen und Daten in eine Datenbank eintragen

Datentypen?PersNr : INT (ganze Zahl)

ebenso: MedienNr, LandNr, ZielNr, MitarbeiterNr

Name : VARCHAR(256) (Zeichenkette, maximal 256 Zeichen)

ähnlich: Sprache : VARCHAR(32)Währung : VARCHAR(3)Vorwahl : VARCHAR(6)

Adresse : TINYTEXT (kleiner Textblock)

Kaufkraft : ENUM('sehr gross','gross','mittel','gering') (Auswahl)

ähnlich: Bezeichnung : ENUM('Zug',

'Flugzeug','Bus','Schiff','Auto','anderes')

GebDatum : DATE (Datum)

ebenso: Datum

Gehalt : DECIMAL(10,2) (Dezimalzahl mit max. 10 Vor- und 2 Nachkommastellen)

ebenso: Preis

Page 4: Relationale Datenbanken III Mit SQL Datenbanken erzeugen und Daten in eine Datenbank eintragen

Datenbank erzeugen und benutzen

DROP DATABASE reisebuero;

CREATE DATABASE reisebuero;

USE reisebuero;

falls eine alte, missratene Version dieser Datenbank vorher gelöscht werden muss:

CREATE DATABASE reisebuero;

USE reisebuero;

Page 5: Relationale Datenbanken III Mit SQL Datenbanken erzeugen und Daten in eine Datenbank eintragen

Tabellen erzeugenCREATE TABLE Person (

PersNr INT NOT NULL auto_increment, Name VARCHAR(256) COLLATE latin1_german1_ci default NULL, Adresse tinytext COLLATE latin1_german1_ci,

PRIMARY KEY (PersNr)

) ENGINE=InnoDB DEFAULT CHARSET=latin1 COLLATE=latin1_german1_ci;NOT NULL: leere Werte sind verbotendefault NULL: standardmässig auf NULL setzen

auto_increment: jeder neue Eintrag bekommt automatisch eine um 1 höhere Nummer als der letzte Eintrag

PRIMARY KEY (PersNr): PersNr darf nicht leer (NULL) sein, muss eindeutig sein

DEFAULT CHARSET: welche Zeichencodierung verwendet wird

COLLATE: welche Textsortierreihenfolge verwendet wird

ENGINE: welche Datenbankmaschine zugrunde gelegt wurde.

Page 6: Relationale Datenbanken III Mit SQL Datenbanken erzeugen und Daten in eine Datenbank eintragen

Weitere Tabellen erzeugenCREATE TABLE Kunde (

PersNr INT NOT NULL,

Kaufkraft enum('sehr gross','gross','mittel','gering') default NULL, GebDatum date default '0000-00-00',

PRIMARY KEY (PersNr),

FOREIGN KEY (PersNr) REFERENCES Person (PersNr) ON DELETE CASCADE

) ENGINE=InnoDB DEFAULT CHARSET=latin1 COLLATE=latin1_german1_ci;

FOREIGN KEY: Fremdschlüssel

REFERENCES: bezieht sich auf Tabelle (Element)

ON DELETE CASCADE: lösche diesen Eintrag, falls der Bezug nicht mehr existiert (wird die Person gelöscht, löscht man damit auch den entsprechenden Kunden)

Page 7: Relationale Datenbanken III Mit SQL Datenbanken erzeugen und Daten in eine Datenbank eintragen

Weitere Tabellen erzeugenCREATE TABLE Mitarbeiter (

PersNr INT NOT NULL, Gehalt decimal(10,2) NOT NULL default '0.00',

PRIMARY KEY (PersNr),

FOREIGN KEY (PersNr) REFERENCES Person (PersNr) ON DELETE CASCADE

) ENGINE=InnoDB DEFAULT CHARSET=latin1 COLLATE=latin1_german1_ci;

CREATE TABLE Transportmedium (

MedienNr INT NOT NULL auto_increment, Bezeichnung enum('Zug','Flugzeug','Bus','Schiff','Auto','anderes') default NULL, Preis decimal(10,2) NOT NULL,

PRIMARY KEY (MedienNr),

UNIQUE (Bezeichnung)

) ENGINE=InnoDB DEFAULT CHARSET=latin1 COLLATE=latin1_german1_ci;

UNIQUE: Gleicher Wert darf nicht mehrfach vorkommen

Page 8: Relationale Datenbanken III Mit SQL Datenbanken erzeugen und Daten in eine Datenbank eintragen

Weitere Tabellen erzeugenCREATE TABLE Land (

LandNr INT NOT NULL auto_increment,

Name VARCHAR(256) collate latin1_german1_ci NOT NULL, Sprache VARCHAR(32) collate latin1_german1_ci NOT NULL, Waehrung VARCHAR(3) collate latin1_german1_ci NOT NULL, Vorwahl VARCHAR(6) collate latin1_german1_ci NOT NULL,

PRIMARY KEY (LandNr), UNIQUE (Name)

) ENGINE=InnoDB DEFAULT CHARSET=latin1 COLLATE=latin1_german1_ci;

CREATE TABLE Reiseziel (

ZielNr INT NOT NULL auto_increment, Name VARCHAR(256) collate latin1_german1_ci default NULL, Preis decimal(10,2) NOT NULL default '0.00', LandNr INT NOT NULL default '0',

PRIMARY KEY (ZielNr),

FOREIGN KEY (LandNr) REFERENCES Land (LandNr) ON DELETE RESTRICT

) ENGINE=InnoDB DEFAULT CHARSET=latin1 COLLATE=latin1_german1_ci;ON DELETE RESTRICT: Ein Land darf nicht gelöscht werden, solange es dort noch ein Reiseziel gibt

Page 9: Relationale Datenbanken III Mit SQL Datenbanken erzeugen und Daten in eine Datenbank eintragen

CREATE TABLE Beratung (

KundeNr INT NOT NULL, MitarbeiterNr INT NOT NULL,

PRIMARY KEY (KundeNr, MitarbeiterNr),

FOREIGN KEY (KundeNr) REFERENCES Kunde(PersNr) ON DELETE CASCADE, FOREIGN KEY (MitarbeiterNr) REFERENCES Mitarbeiter(PersNr) ON DELETE CASCADE

) ENGINE=InnoDB DEFAULT CHARSET=latin1 COLLATE=latin1_german1_ci;

CREATE TABLE Buchung (

KundeNr INT NOT NULL, MitarbeiterNr INT NOT NULL, MedienNr INT NOT NULL, ZielNr INT NOT NULL,

PRIMARY KEY (KundeNr, MitarbeiterNr, MedienNr, ZielNr),

FOREIGN KEY (KundeNr) REFERENCES Kunde(PersNr) ON DELETE CASCADE, FOREIGN KEY (MitarbeiterNr) REFERENCES Mitarbeiter(PersNr) ON DELETE CASCADE, FOREIGN KEY (MedienNr) REFERENCES Transportmedium(MedienNr) ON DELETE CASCADE FOREIGN KEY (ZielNr) REFERENCES Reiseziel(ZielNr) ON DELETE CASCADE) ENGINE=InnoDB DEFAULT CHARSET=latin1 COLLATE=latin1_german1_ci;

Weitere Tabellen erzeugen

Page 10: Relationale Datenbanken III Mit SQL Datenbanken erzeugen und Daten in eine Datenbank eintragen

Wie gibt man das jetzt wirklich ein? Internet Explorer starten Seite https://www.gymmuenchenstein.ch/phpMyAdmin

aufrufen Benutzername test, Passwort mp1abe2013 eingeben Tab SQL wählen Eingeben: CREATE DATABASE test_Ihr-Vorname auf OK klicken 2. Browserfenster oder 2. Browsertab öffnen auf www.gymmuenchenstein.ch/weiss gehen Aktuell-Link MP 1ABe folgen Datei reisebuero.txt ansehen gesamten Dateiinhalt in die Zwischenablage kopieren zurück ins phpMyAdmin-Fenster Datenbank mit ihrem Namen wählen, Tab SQL wählen Inhalt der Zwischenablage einfügen, OK klicken. aktualisieren (mit )

Page 11: Relationale Datenbanken III Mit SQL Datenbanken erzeugen und Daten in eine Datenbank eintragen

Damit wir alle an einer DB arbeiten Bei phpMyAdmin abmelden (mit ) Auf die Seite

www.gymmuenchenstein.ch/weiss/SQL.php gehen Benutzername reisebuero, Passwort mp1abe2013

eingeben Tabelle "reisebuero" wählen

Page 12: Relationale Datenbanken III Mit SQL Datenbanken erzeugen und Daten in eine Datenbank eintragen

Datensätze in Tabellen einfügenINSERT INTO Person (Name, Adresse) VALUES ('Bruno

Buess', 'Baselstrasse 33, 4142 Münchenstein');

Das Feld PersNr wird automatisch eingefüllt, weil es die Eigenschaft auto_increment hat!

INSERT INTO Mitarbeiter (PersNr, Gehalt) VALUES (1, 6395.15);

Aufgabe:

Füllen Sie gemeinsam die verschiedenen Tabellen der Datenbank!