Datenbank - ias.uni

Werbung
Datenbank - Teil 3
Ziele:
€ Eine Datenbank anlegen mit SQL
€ Daten eingeben mit SQL
€ Abfragen stellen mit SQL und PHP
© IAS
Datenbanken 3
1
Datenbank - Teil 3
• Datenbankserver
• Entwickelt von der schwedischen Aktiengesellschaft MySQL
• Unter GNU General Public License (GPL) kostenlos verfügbar
• Weltweit der populärste Open-Source-Datenbankserver mit mehr als 4
Millionen Installationen
XAMPP
• Komplettpaket für Windows: Apache 2.0.53 + MySQL 4.1.11 + PHP 5.0.4 +
Perl 5.8.0 + Mail-Server + FTP-Server + …
• Freeware
• Kaum Installationsaufwand
© IAS
Datenbanken 3
2
Datenbank - Teil 3
1. Starten, Speichern und Beenden
XAMPP wird standardmäßig in
c:\programme\apachefriendes\xamppinstalliert (kopiert).
ÆStart des MySQL-Server:
c:\programme\apachefriendes\xampp \mysql_startup.bat
über den Explorer
Das Eingabefenster nie einfach schließen, sonst kommt es zu Datenverlusten.
Beenden des Servers immer über
c:\programme\apachefriendes\xampp \mysql_shutdown.bat
MySQL verfügt über grafische Oberflächen zur Verwaltung (z.B. phpMyAdmin) und
über einen MySQL-Monitor (Kommandozeile).
ÆStart des MYSQL-Monitors:
c:\programme\apachefriendes\xampp\mysql\bin\mysql.exe –u root
© IAS
Datenbanken 3
3
Datenbank - Teil 3
1. Starten, Speichern und Beenden
© IAS
Datenbanken 3
4
Datenbank - Teil 3
2. Neue Datenbank anlegen
Im Rahmen der Übungen soll eine Bibliotheks-Datenbank angelegt werden, die
Bücher (inkl. Sachgebiet und Ort), Benutzer und Ausleihvorgänge verwaltet.
Mit der SQL-Anweisung CREATE DATABASE dbname wird eine neue
Datenbank angelegt:
Æ CREATE DATABASE bib;
SQL-Anweisung immer mit Strichpunkt (;) abschließen
SQL-Anweisungen beziehen sich immer
auf eine bestimmte Datenbank. Damit
diese nicht bei jeder Anweisung angegeben
werden muss, kann zu der betreffenden
Datenbank mit USE dbname „gewechselt“
werden.
Æ USE bib;
© IAS
Datenbanken 3
5
Datenbank - Teil 3
3. Tabellen anlegen
Tabellen werden mit der SQL-Anweisung
CREATE TABLE tbname (fname datentyp null-Werte, default, …)
angelegt.
Zuerst soll eine Tabelle für die Bücher mit den Feldern Jahr, Buchnummer,
Verweis auf Sachgebiet, Signatur, Autoren, Titel, Verlag und Erscheinungsjahr
erstellt werden.
Æ CREATE TABLE buecher (jahr DECIMAL (4,0) NOT NULL,
bunr DECIMAL (4,0) NOT NULL,
sgk DECIMAL (2,0) NOT NULL,
sgnr DECIMAL (4,0) NOT NULL,
aut1 VARCHAR (20) NULL,
aut2 VARCHAR (20) NULL,
aut3 VARCHAR (20) NULL,
titel VARCHAR (20) NULL,
verlag VARCHAR (20) NULL,
esj DECIMAL (4,0) null,
PRIMARY KEY(jahr, bunr));
© IAS
Datenbanken 3
6
Datenbank - Teil 3
3. Tabellen anlegen (Forts.)
Weitere Tabellen enthalten die Sachgebiete und die Benutzer (mit
Mitgliedsnummer, Name, PLZ, Straße und Aufnahmedatum)
Æ CREATE TABLE sachgebiet (sgk DECIMAL (4,0) NOT NULL,
sachgb VARCHAR (30) NOT NULL,
PRIMARY KEY (sgk));
Æ CREATE TABLE benutzer (mitnr DECIMAL (4,0) NOT NULL,
name VARCHAR (30) NOT NULL,
plz DECIMAL (5,0) NULL,
stra VARCHAR (30) NULL,
datm DATE NOT NULL,
PRIMARY KEY(mitnr));
© IAS
Datenbanken 3
7
Datenbank - Teil 3
3. Tabellen anlegen (Forts.)
Weitere Tabellen enthalten die Orte (PLZ, Ort) und die Ausleihvorgänge
Æ CREATE TABLE orte
(plz DECIMAL (5,0) NOT NULL,
ort varchar (40) NOT NULL,
PRIMARY KEY (plz));
Æ CREATE TABLE entleihung
(jahr DECIMAL (4,0) NOT NULL,
bunr DECIMAL (4,0) NOT NULL,
mitnr DECIMAL (4,0) NOT NULL,
date DATE NOT NULL,
PRIMARY KEY (jahr, bunr));
Änderungen wirksam machen:
ÆCOMMIT;
MySQL benutzt i. d. R. den autocommit-Modus.
© IAS
Datenbanken 3
8
Datenbank - Teil 3
4. Daten eingeben
Daten werden mit der SQL-Anweisung
INSERT INTO tbname (fname, …) VALUES (wert, …) eingegeben.
Auf Grund der Fremdschlüssel (auch wenn MySQL keine referentielle Integrität
sicherstellt) zuerst für die Tabelle Sachgebiete:
Æ INSERT INTO sachgebiet (sgk, sachgb)
VALUES (1, ″Datenbanken″),
(2, ″Web-Technologien″);
Dann für die Tabelle Bücher:
ÆINSERT INTO buecher (jahr,bunr, sgk, sgnr, aut1, aut2,
aut3, titel, verlag, esj)
VALUES (2005, 1, 1, 1, ″konnertz″, ″strobel″,
NULL, ″MySQL″, ″IAS″, 1997),
(2005, 2, 1, 2, ″goehner″, NULL, NULL,
″PHP″, ″IAS″, 1998),
(2004, 1, 2, 1, ″konnertz″, ″biegert″,
″voeller″, ″Fussball″, ″DFB″, 1990);
© IAS
Datenbanken 3
9
Datenbank - Teil 3
4. Daten eingeben (Forts.)
Dann für die Tabelle Orte:
Æ INSERT INTO orte (plz, ort) VALUES (70550, ″Stuttgart″),
(70569, ″Vaihingen″);
Dann für die Tabelle Benutzer:
ÆINSERT INTO benutzer (mitnr, name, plz, stra, datm)
VALUES (1, ″student1″, 70550, ″Pfaffenwaldring 47″,
″2002-01-01″),
(2, ″student2″, 70569, ″Pfaffenwaldring 32″,
″2002-01-02″);
Dann für die Tabelle Einleihung:
ÆINSERT INTO entleihung
(jahr, bunr, mitnr, date)
VALUES (1999, 1, 1, ″2002-03-01″),
(2000, 1, 2, ″2002-03-03″),
(1999, 2, 2, ″2002-04-05″);
Änderungen wirksam machen:
Æ COMMIT;
© IAS
Datenbanken 3
10
Datenbank - Teil 3
4. Daten abfragen
Daten werden mit der SQL-Anweisung
SELECT projektion FROM join WHERE selektion ausgegeben.
Abfrage: Welche Bücher sind in der Datenbank?
Æ SELECT jahr, bunr, aut1, titel FROM buecher;
© IAS
Datenbanken 3
11
Datenbank - Teil 3
4. Daten abfragen (Forts.)
Abfrage: Welcher Benutzer kommt aus Vaihingen?
Æ SELECT benutzer.name
FROM benutzer, orte
WHERE benutzer.PLZ = orte.PLZ
AND orte.ort = ″Vaihingen″;
© IAS
Datenbanken 3
12
Datenbank - Teil 3
4. Daten abfragen (Forts.)
Abfrage: Welche Bücher hat das Mitglied mit dem Namen „student2“ ausgeliehen?
Æ SELECT buecher.titel
FROM buecher, entleihung, benutzer
WHERE buecher.jahr = entleihung.jahr
AND buecher.bunr = entleihung.bunr
AND entleihung.mitnr = benutzer.mitnr
AND benutzer.name = ‘student2‘;
© IAS
Datenbanken 3
13
Datenbank - Teil 3
4. Daten abfragen (Forts.)
Abfrage: Wie viele Bücher haben die Benutzer jeweils ausgeliehen?
Æ SELECT benutzer.name, count(entleihung.bunr) AS anzahl
FROM benutzer, entleihung
WHERE benutzer.mitnr = entleihung.mitnr
GROUP BY benutzer.name;
MySQL-Monitor verlassen:
Æ quit
© IAS
Datenbanken 3
14
Datenbank - Teil 3
1. Anzeigen von Daten in HTML-Seiten
Web-Server Apache über den Explorer starten (das integrierte PHP-Modul
wird automatisch mit gestartet):
Æ c:\programme\apachefriendes\xampp\mysql_startup.bat
Browser (Internet Explorer) über das Startmenü starten und folgende URL
eingeben: http://localhost/
© IAS
Datenbanken 3
15
Datenbank - Teil 3
1. Anzeigen von Daten in HTML-Seiten (Forts.)
Die HTML- und PHP-Dateien liegen im Verzeichnis
c:\programme\apachefriendes\xampp\htdocs
Dort erstellen Sie sich die Datei bib.php, die im Rahmen der Übung
modifiziert werden soll (s. Folie 17).
Führen Sie diese Datei aus, indem
Sie folgende URL im Browser
eingeben:
http://localhost/bib.php
© IAS
Datenbanken 3
16
Datenbank - Teil 3
1. Anzeigen von Daten in HTML-Seiten (Forts.)
bib.php
Sie können die PHP-Datei modifizien (im Editor öffnen), um die vorher im MySQLMonitor ausgeführten Abfragen auf der HTML-Seite anzeigen zu lassen.
<HTML>
<HEAD>
<TITLE>Uebung ST2: PHP Abfrage für MySQL</TITLE>
</HEAD>
<BODY>
Uebung ST2: PHP Abfrage fuer MySQL<br><br>
<SCRIPT LANGUAGE="php">
// zuerst erfolgt der Aufbau einer Verbindung zur Datenbank
// Dabei wird der Server (Localhost) angegeben. Normalerweise
// muss man hier auch Benutzername und Passwort mit angeben.
$connection=mysql_connect (″localhost″, root)
or die ("Keine Verbindung zum Server"); // bei einem Fehler
© IAS
Datenbanken 3
17
Datenbank - Teil 3
1. Anzeigen von Daten in HTML-Seiten (Forts.)
// Danach wird die zu verwendende Datenbank (st2) ausgewählt.
$db=mysql_select_db ("bib")
or die ("Keine Verbindung zur Datenbank"); // bei Fehler
$abfrage = "SELECT * FROM buecher";
echo "Folgende Abfrage wird ausgefuehrt: $abfrage<br><br>";
// Abfrage wird durchgeführt
$ergebnis = mysql_query ($abfrage)
or die ("SQL-Fehler"); // bei einem Fehler
// HTML-Tabelle zur Darstellung des Ergebnisses
echo "<table border=\"1\">";
echo "<tr>";
echo "<th>Jahr</th>";
echo "<th>Buchnr.</th>";
echo "<th>Titel</th>";
echo "</tr>";
© IAS
Datenbanken 3
18
Datenbank - Teil 3
1. Anzeigen von Daten in HTML-Seiten (Forts.)
// Alle gefundenen Zeilen der Abfrage werden durchlaufen
while ($zeile = mysql_fetch_array($ergebnis))
{
// Neue Zeile in der HTML-Tabelle
echo "<tr>";
// Attribute der gelesenen Zeile in Variablen speichern
$jahr=$zeile['jahr'];
$bunr=$zeile['bunr'];
$titel=$zeile['titel'];
echo "<td>$jahr</td>";
echo "<td>$bunr</td>";
echo "<td>$titel</td>";
echo "</tr>";
}
© IAS
Datenbanken 3
19
Datenbank - Teil 3
1. Anzeigen von Daten in HTML-Seiten (Forts.)
// Am Ende wird die Verbindung zur Datenbank wieder getrennt
mysql_close ();
// HTML-Tabelle abschließen
echo "</table>";
</SCRIPT>
</BODY>
</HTML>
Vorgehen:
1. Serverprogramm z. B. apache starten
2. Php Skript st2.php in Serverordner (z.B. htdocs)
3. Start des Skripts über localhost/st2.php
© IAS
Datenbanken 3
20
Herunterladen