Datenbanken und Internet

Werbung
Datenbanken und Internet
Robert Krah
Robert Krah
Datenbanken und Internet
Einführung in SQL
Apache-Server
MySQL
PHPMyADMIN
Lehrgang:
Medizinische Dokumentation
1
Datenbanken und Internet
Robert Krah
Inhaltsverzeichnis
1
1.1
1.2
1.3
1.4
1.5
1.6
1.7
1.7.1
1.8
1.8.1
1.9
1.10
1.11
1.11.1
1.12
1.13
1.14
Die mysql-Eingabeaufforderung .................................................................34
Rechte vergeben ........................................................................................34
SQL-Befehle: Datenbanken und Tabellen anlegen ....................................35
Datenbank anlegen:....................................................................................35
Datenbank wechseln ..................................................................................35
Tabelle erstellen (create table) ...................................................................35
Daten eingeben, ändern und löschen.........................................................36
Daten eingeben (insert into) .......................................................................36
Einzelne Felder eingeben ...........................................................................37
Werte in Feldern ändern (update)...............................................................37
Mehrere Felder mit einem SQL-Befehl eintragen: ......................................38
Daten in andere Tabellen schreiben...........................................................39
Löschen von Datensätzen ..........................................................................39
Löschen von Datenbanken und Tabellen ...................................................40
Löschen von Tabellen.................................................................................41
Tabellen ändern: alter table ........................................................................41
Umbenennen ..............................................................................................43
Kurzreferenz der mysql-Befehle .................................................................44
2
2.1
2.2
Einleitung: PHPMyAdmin............................................................................60
Verwendung von PHPMyAdmin .................................................................60
Datenbank mit PHPMyAdmin erstellen.......................................................61
3
3.1
3.2
3.3
3.4
3.5
3.6
Einlesen von Tabellen ................................................................................65
Übungen zur Datenbank Metallwaren: .......................................................68
Dump erzeugen ..........................................................................................71
Dump als Datei speichern...........................................................................72
Dump der kompletten Datenbank ...............................................................73
Dump einlesen............................................................................................73
Einlesen einer größeren Tabelle: ICD-10 Diagnosenthesaurus .................74
4
4.1
4.2
4.3
4.4
4.5
4.6
PHP als serverseitige Skriptsprache ..........................................................78
PHP in HTML-Dateien ................................................................................80
Das Hallo-Welt-Skript .................................................................................80
Kommentare ...............................................................................................81
die Funktion phpinfo() .................................................................................81
Variablen und Berechnungen in PHP .........................................................81
Arrays .........................................................................................................87
2
Datenbanken
Die mysql-Eingabeaufforderung
1 Die mysql-Eingabeaufforderung
MYSQL ist ein leistungsfähiges, relationales Client-Server-Datenbanksystem. Es wird vor
allem für Internet-Datenbanken viel verwendet und bietet für den Anwender eine Reihe von
Vorteilen, z. B. die, dass es im Rahmen der nicht-kommerziellen Verwendung frei verfügbar
ist (GPL=GNU Public License im Sinne der Open Source-Idee wie bei Linux). GPL-Software
ist frei verfügbar, aber daraus entwickelte Programme müssen ebenfalls wieder der Öffentlichkeit frei zugänglich gemacht werden. Für kommerzielle Anwendungen ist das ein wenig
komplizierter (vgl. dazu. http://www.gnu.org/copyleft/gpl.html).
Die Befehlseingabe am MYSQL-Prompt (Bereitschaftszeichen) ist „SQL pur“ und lässt sich
deshalb besonders gut zum Üben von SQL-Befehlen verwenden1. Sie gelangen zum
MYSQL-Prompt, indem Sie entweder
a) Im Windows-Explorer im Ordner C:\apachefriends\xampp\mysql\bin die Datei
mysql.exe per Doppelklick aktivieren, oder
b) eine Verknüpfung auf dem Desktop einrichten, die den bei a) genannten Pfad als Ziel der
Verknüpfung hat.
So sieht die mysqlEingabeaufforderung aus:
Drücken Sie
Alt Return,
um von der Fensterdarstellung zum Vollbild zu wechseln!
MySQL verlassen Sie mit dem Befehl:
mysql> exit;
MYSQL verabschiedet sich
Bye
1.1 Rechte vergeben
Verlassen Sie dazu mysql.
Geben Sie den Befehl: Start Ausführen
Geben Sie ein: cmd (=command)
Windows zeugt jetzt die Eingabeaufforderung an.
Wechseln Sie in das Verzeichnis mysql\bin
1
Bei der Beispieltabelle Sammlung und den beschriebenen Übungen orientiere ich mich zum Teil an:
SQL in 21 Tagen, ISBN: 3-8272-2020-3
34
Datenbanken
Die mysql-Eingabeaufforderung
Starten Sie jetzt mysql mit dem folgenden Befehl explitzit als root-user:
C:\mysql\bin>mysql -u root –p
u steht für user, p für Passwort
Sie sehen:
Enter password:
Geben Sie ein:taw
Jetzt sind Sie als der Root-User mit Passwort taw in der Datenbank MySQL mit allen Rechten (die vorher in PHPMyadmin vergeben wurden).
1.2 SQL-Befehle: Datenbanken und Tabellen anlegen
Am Mysql-Prompt werden Befehle eingegeben. Sie können (müssen aber nicht) die ReturnTaste drücken, um die Eingabe auf mehrere Zeilen zu verteilen. Der Befehl wird mit einem ;
(Semikolon) abgeschlossen – zwar funktionieren einige Befehle auch ohne Semikolon, aber
besser ist es, sich generell daran zu gewöhnen.
1.3 Datenbank anlegen:
Datenbanken werden mit dem Befehl CREATE DATABASE Datenbankname angelegt.
Aufgabe: Legen Sie die Datenbank mit dem Namen UEBUNG an!
create database uebung
Geben Sie anschließend am Prompt-Zeichen den Befehl
mysql> show databases;
Sie sehen zum Beispiel folgendes Ergebnis:
+-----------+
| Database |
MYSQL zeigt an, welche Datenbanken existieren
+-----------+
| uebung
|
| test
|
+-----------+
1.4 Datenbank wechseln
Mit dem Befehl use Datenbankname wird die aktuelle Datenbank gewechselt.
Aufgabe: Geben Sie ein:
mysql>use mysql;
Database changed
Aufgabe: Lassen Sie die Tabellen anzeigen:
mysql> show tables;
+-----------------+
| Tables_in_mysql |
+-----------------+
In MYSQL gibt es eine Systemdatenbank mit dem
| columns_priv
|
Namen mysql. Sie enthält alle Einstellungen ein| db
|
schließlich der Zugriffsrechte.
| host
|
| tables_priv
|
| user
|
+-----------------+
5 rows in set (0.00 sec)
Aufgabe: Wechseln Sie wieder zur Datenbank UEBUNG.
1.5 Tabelle erstellen (create table)
In der Datenbank UEBUNG soll jetzt die erste Tabelle angelegt werden. Der Name der Tabelle soll Sammlung sein. (Beispiel aus: SQL in 21 Tagen, Kap. 8)
35
Datenbanken
Die mysql-Eingabeaufforderung
mysql> create table sammlung(
-> stueck varchar(30) NOT NULL,
-> wert double,
-> text varchar(50)
-> );
Query OK, 0 rows affected (0.06 sec)
Diese Tabelle wird eingerichtet:
Aufgabe: Geben Sie jetzt den Befehl:
mysql> show tables;
+------------------+
| Tables_in_uebung |
+------------------+
| sammlung
|
+------------------+
1 row in set (0.05 sec)
MYSQL zeigt an, dass die Tabelle existiert
1.6 Daten eingeben, ändern und löschen
Daten über SQL-Befehle einzugeben ist zugegebenermaßen etwas mühselig. Niemand wird
in der Praxis Tausende Datensätze über den Befehl insert into einfügen. Dennoch ist im
sinnvoll für das verständnis von SQL, wenn man diese Befehlseingabe beherrscht. Sie werden später Möglichkeiten kennenlernen, auch im Rahmen von MYSQL mit sogenannten
Frontends zu arbeiten, also Benutzeroberflächen, die „an vordester Front“ stehen. Es ist
zum Beispiel auch möglich, Access als Eingabehilfe für MYSQL zu nutzen, indem ein ODBCTreiber eingerichtet wird.
1.7 Daten eingeben (insert into)
Jetzt sollen Daten in die Tabelle eingegeben werden. Dies geschieht mit dem Befehl
insert into. Die Syntax der Anweisung lautet:
INSERT INTO Tabellenname
(Spalte1, Spalte2...)
VALUES (Wert1, Wert2...)
Aufgabe: Geben Sie ein:
mysql> insert into sammlung(
-> stueck,wert,text)
-> values(
-> 'Wegweiser',300,'fehlt jetzt in Koeln'
-> );
Query OK, 1 row affected (0.06 sec)
Aufgabe: Lassen Sie jetzt die Tabelle anzeigen:
mysql> select * from sammlung;
+-----------+------+----------------------+
| stueck
| wert | text
|
+-----------+------+----------------------+
| Wegweiser | 300 | fehlt jetzt in Koeln |
+-----------+------+----------------------+
Man kann mit dem insert-Befehl auch Daten einfügen, ohne die Spalten dabei anzugeben.
Dabei werden die Daten in der Reihenfolge, wie man sie schreibt, in die Spalten eingefügt:
Aufgabe: Nehmen Sie den Datensatz auf:
mysql> insert into sammlung
-> values ('Kronleuchter',2000.00,'antikes Stück');
Query OK, 1 row affected (0.11 sec)
Aufgabe: Schauen Sie nach, ob das Ergebnis stimmt:
36
Datenbanken
Die mysql-Eingabeaufforderung
mysql> select * from sammlung;
+--------------+------+----------------------+
| stueck
| wert | text
|
+--------------+------+----------------------+
| Kronleuchter | 2000 | antikes Stück
|
| Wegweiser
| 300 | fehlt jetzt in Koeln |
+--------------+------+----------------------+
2 rows in set (0.05 sec)
Aufgabe: Nehmen Sie zwei weitere Datensätze auf. Die Syntax ist wie vorher beschrieben.
Das Ergebnis soll hinterher sein:
mysql> select * from sammlung;
+--------------+------+----------------------+
| stueck
| wert | text
|
+--------------+------+----------------------+
| Kronleuchter | 2000 | antikes Stück
|
| Wegweiser
| 300 | fehlt jetzt in Koeln |
| Kette
| 200 | Erbstueck
|
| Barbie
| 250 | Geschenk von Susi
|
+--------------+------+----------------------+
4 rows in set (0.00 sec)
1.7.1 Einzelne Felder eingeben
Es ist auch möglich, einzelne Werte in einzelne Felder einzugeben, z. B. dann, wenn noch
nicht alle Informationen vorliegen. Angenommen, in die Tabelle Sammlung soll ein Armband
aufgenommen werden, es wird also zunächst nur die Spalte stueck mit Inhalt gefüllt:
mysql> insert into sammlung
-> (stueck)
-> values('Armband');
Query OK, 1 row affected (0.17 sec)
MYSQL zeigt dann an:
mysql> select * from sammlung;
+--------------+------+----------------------+
| stueck
| wert | text
|
+--------------+------+----------------------+
| Kronleuchter | 2000 | antikes Stück
|
....
| Armband
| NULL | NULL
|
+--------------+------+----------------------+
Aufgabe: Fügen Sie noch einen Datensatz an. Der Eintrag in die Spalte stueck soll nur
‚Uhr’ betragen’.
Wenn später die anderen Felder eingegeben werden, dann muss mit dem update-Befehl und
einer Where-Klausel gearbeitet werden, denn der Datenbank muss ja mitgeteilt werden, um
welchen Datensatz es sich bei der Eingabe handelt.
1.8 Werte in Feldern ändern (update)
Um Änderungen an den Daten vorzunehmen, brauchen Sie den Befehl update. Die Syntax
lautet:
UPDATE Tabellenname
SET Spaltenname1 = Wert1
[, Spaltenname2 = Wert2]...
WHERE Suchbedingung
Beispiel:
37
Datenbanken
Die mysql-Eingabeaufforderung
UPDATE SAMMLUNG
SET WERT = 900
WHERE STUECK = 'KETTE';
In der Tabelle Sammlung wird der
Wert der Kette auf 900 erhöht
Aufgabe: Führen Sie diese Änderung durch!
Vorsicht: ohne where-Klausel werden alle Werte ersetzt:
UPDATE SAMMLUNG
alle Spalten hätten dann den Wert
555
SET WERT = 555;
Aufgabe: 1) Ändern Sie den Wert der Barbie auf 350
2) Ändern Sie den Text (drittes Feld) im Datensatz, der die Kette beschreibt, auf:
Kauf in Lissabon
3) Ändern Sie die Bezeichnung im Feld Stueck von Wegweiser auf
Verkehrszeichen
Aufgabe: Lassen Sie die Daten wieder anzeigen.
mysql> select * from sammlung;
+----------------+------+----------------------+
| stueck
| wert | text
|
+----------------+------+----------------------+
| Kronleuchter
| 2000 | antikes Stück
|
| Verkehrszeichen| 300 | fehlt jetzt in Koeln |
| Kette
| 900 | Kauf in Lissabon
|
| Barbie
| 350 | Geschenk von Susi
|
| Armband
|
| NULL
|
| Uhr
|
| NULL
|
+----------------+------+----------------------+
5 rows in set (0.00 sec)
NULL steht bekanntlich nicht für den Zahlenwert 0, sondern für „Nicht vorhanden“. Wenn die
Eintragung NULL als störend empfunden wird, dann kann man die Felder stattdessen mit
einem Leerzeichen füllen.
Jetzt sollen auch die fehlenden Einträge beim Armband und der Kette ersetzt werden.
Aufgabe: Setzen Sie mit dem folgenden Befehl den Wert des Armbands auf 1000 fest.
mysql> update sammlung
-> set wert=1000
-> where stueck='Armband';
Query OK, 1 row affected (0.00 sec)
Aufgabe: Beim Datensatz ‚Armband’ soll der text als ‚Gold mit Halbedelsteinen’ eingetragen werden.
1.8.1 Mehrere Felder mit einem SQL-Befehl eintragen:
Im Datensatz, der Informationen zur Uhr aufnehmen sollte, sind noch Felder unausgefüllt.
Diese sollen mit dem folgenden Befehl gefüllt werden:
mysql> update sammlung
-> set wert=600,text='geerbt von Onkel Heinz'
-> where stueck='Uhr';
Query OK, 1 row affected (0.00 sec)
Die zweite Zeile - -> set wert=600,text='geerbt von Onkel Heinz' zeigt, wie die Felder
nacheinander, getrennt durch Kommas, gefüllt werden können.
38
Datenbanken
Die mysql-Eingabeaufforderung
1.9 Daten in andere Tabellen schreiben
Die Syntax, um alle Daten von einer Originaltabelle z. B. in eine Sicherungstabelle zu schreben, lautet:
insert into sicherungstabelle
select * from originaltabelle;
Wenn also alle Felder der Tabelle Sammlung in die Tabelle Sicherung geschrieben werden
sollen, lautet der Befehl also:
insert into sicherung
select * from sammlung;
Dazu muss allerdings die Tabelle Sicherung erst angelegt worden sein. Sie soll dieselben
Felder mit denselben Datentypen wie die Originaltabelle bekommen.
Aufgabe: Legen Sie zunächst die Tabelle Sicherung an:
mysql> create table sicherung(
-> stueck varchar(30) not null,
-> wert double,
-> text varchar(50)
-> );
Query OK, 0 rows affected (0.06 sec)
Aufgabe: Lassen Sie jetzt die Daten in die Tabelle schreiben:
mysql> insert into sicherung
-> select * from sammlung;
Query OK, 6 row affected (0.06 sec)
Aufgabe: Sehen Sie jetzt nach, ob sich die Daten in der Tabelle Sicherung befinden:
mysql> select * from sicherung;
+--------------+------+--------------------------+
| stueck
| wert | text
|
+--------------+------+--------------------------+
| Kronleuchter | 2000 | antikes Stück
|
| Wegweiser
| 300 | fehlt jetzt in Koeln
|
| Kette
| 900 | Kauf in Lissabon
|
| Barbie
| 350 | Geschenk von Susi
|
| Armband
| 1000 | Gold mit Halbedelsteinen |
| Uhr
| 600 | geerbt von Onkel Heinz
|
+--------------+------+--------------------------+
1.10 Löschen von Datensätzen
Die Syntax des Befehls, mit dem Sie Datensätze aus einer Tabelle löschen können, lautet:
DELETE FROM Tabellenname
WHERE Bedingung
Aufgabe: Löschen Sie mit dem folgenden Befehl den Kronleuchter aus der Tabelle
Sammlung:
delete from sammlung
where stueck=’Kronleuchter’;
Aufgabe: Löschen Sie außerdem alle Daten, deren Wert unter 500 liegt:
delete from sammlung
where wert<500;
39
Datenbanken
Die mysql-Eingabeaufforderung
Jetzt ist das Ergebnis:
mysql> select * from sammlung;
+--------------+------+--------------------------+
| stueck
| wert | text
|
+--------------+------+--------------------------+
| Kette
| 900 | Kauf in Lissabon
|
| Armband
| 1000 | Gold mit Halbedelsteinen |
| Uhr
| 600 | geerbt von Onkel Heinz
|
+--------------+------+--------------------------+
Damit die Daten wieder vorliegen, sollen sie nun aus der Sicherungstabelle zurückgeschrieben werden. Dabei würden allerdings Duplikate angelegt, also die zwei Datensätze, die noch
vorhanden sind, wären anschließend doppelt vorhanden. Der Einfachheit halber löschen wir
die beiden Datensätze und schreiben dann die Sicherungstabelle zurück.
Aufgabe: Geben Sie zunächst ein:
mysql> delete from sammlung;
Query OK, 3 rows affected (0.05 sec)
Sie sehen, dass ohne Angabe von where-Kriterien alles gelöscht wird.
Aufgabe: Testen Sie:
mysql> select * from sammlung;
Empty set (0.00 sec)
Aufgabe: Geben Sie zum „Zurückschreiben“ den Befehl ein:
mysql> insert into sammlung
select * from sicherung;
Aufgabe: Sehen Sie dann mit dem select-Befehl nach, ob alle Daten in der Tabelle Sammlung und in der Tabelle Sicherung wieder da sind (5 Datensätze)
1.11 Löschen von Datenbanken und Tabellen
Mit dem Befehl
drop database <name>
löschen Sie eine komplette Datenbank.
Aufgabe: Erzeugen Sie eine Datenbank mit dem Namen Med_doku.
create database Med_doku
Schauen Sie jetzt nach, ob die
Datenbank existiert:
show databases;
+-----------+
| Database |
+-----------+
| Med_doku |
| uebung
|
| mysql
|
| test
|
| waren
|
+-----------+
Aufgabe: Löschen Sie die Datenbank wieder:
drop database Med_doku ;
show databases
Wenn Sie anschließend wieder
+-----------+
nachsehen, ist die Datenbank gelöscht:
| Database |
+-----------+
| uebung
|
| mysql
|
| test
|
| waren
|
+-----------+
40
Datenbanken
Die mysql-Eingabeaufforderung
Generell ist hier zu beachten, dass manche Datenbanksysteme kein Löschen einer kompletten Datenbank zulassen. Z. B. kann man in Access keine Datenbank löschen, man löscht
einfach die Datei auf der Windows-Ebene.
Wenn mysql bei einem Provider eingesetzt wird, um eine Internet-Datenbank aufzubauen
und zu pflegen, dann ist es in der Regel nicht möglich, mehrere Datenbanken zu erstellen,
sondern man bekommt genau eine Datenbank, deren Name oft aus dem Nutzernamen abgeleitet wird. Beispielsweise bei Lycos-Tripod (kostenlose MySQL-Datenbank, wenn der Benutzername rokr lautet, dann heißt automatisch die Datenbank rokr_de_db. Diese Datenbank kann nicht gelöscht werden. Innerhalb der Datenbank können Tabellen erstellt und gelöscht werden.
1.11.1 Löschen von Tabellen
Eine Tabelle innerhalb der Datenbank kann gelöscht werden, wenn man sich in der Datenbank befindet, wenn also vorher mit use <Datenbank> die Datenbank ausgewählt wurde.
Der Befehl ist ähnlich wie der zum Löschen einer Datenbank
drop table <Name>;
löscht die Datenbanktabelle.
Die Tabelle Sicherung ist gewissermaßen doppelt vorhanden, kann also gelöscht und wieder neu erstellt werden.
Aufgabe: Geben Sie ein
drop table sicherung;
und anschließend:
show tables;
um zu sehen, dass die Tabelle nicht mehr existiert.
Bevor jetzt die Daten wieder in die Sicherungstabelle geschrieben werden, muss sie erst
wieder mit create table erstellt werden:
mysql> create table sicherung(
-> stueck varchar(30) not null,
-> wert double,
-> text varchar(50)
-> );
Query OK, 0 rows affected (0.06 sec)
Aufgabe: Lassen Sie jetzt wieder die Daten in die Tabelle schreiben:
mysql> insert into sicherung
-> select * from sammlung;
Query OK, 1 row affected (0.06 sec)
1.12 Tabellen ändern: alter table
Mit dem Befehl alter table ist es möglich, die Struktur einer Tabelle im Nachhinein zu ändern.
Die Syntax des Befehls lautet:
ALTER TABLE Tabellenname
<ADD Spaltenname Datentyp; |
MODIFY Spaltenname Datentyp;>
Man kann mit diesem Befehl also Spalten zu einer Tabelle hinzufügen oder verändern.
Aufgabe: Zur Tabelle Sammlung soll eine Spalte Kaufdatum (Typ: Date) hinzugefügt werden:
mysql> alter table sammlung
-> add Kaufdatum date;
Query OK, 5 rows affected (0.11 sec)
41
Datenbanken
Die mysql-Eingabeaufforderung
Es ist klar, dass die Felder zunächst natürlich noch leer sind:
mysql> select * from sammlung;
+--------------+------+--------------------------+-----------+
| stueck
| wert | text
| Kaufdatum |
+--------------+------+--------------------------+-----------+
| Kronleuchter | 2000 | antikes Stück
| NULL
|
| Kette
| 200 | Erbstueck
| NULL
|
|......
...
...
...
|
+--------------+------+--------------------------+-----------+
5 rows in set (0.05 sec)
Aufgabe: Der Datensatz, in dem die Informationen über die Kette gespeichert sind, soll
jetzt mit einem Datum, und zwar dem 12. Januar 2005,gefüllt werden. Das Datum muss in der Form Jahr-Monat-Tag eingegeben werden.
mysql> update sammlung
-> set kaufdatum='2003-01-12'
-> where stueck='Kette';
Query OK, 1 row affected (0.00 sec)
Schauen Sie nach:
mysql> select * from sammlung;
+--------------+------+--------------------------+----+------------+
| stueck
| wert | text
| ID | Kaufdatum |
+--------------+------+--------------------------+----+------------+
| Kronleuchter | 2000 | antikes Stück
| 1 | NULL
|
| Kette
| 200 | Erbstueck
| 2 | 2005-01-12 |
| Barbie
| 250 | Geschenk von Susi
| 3 | NULL
|
| Armband
| 1000 | Gold mit Halbedelsteinen | 4 | NULL
|
| Uhr
| 600 | geerbt von Onkel Heinz
| 5 | NULL
|
+--------------+------+--------------------------+----+------------+
Aufgabe: Setzen Sie jetzt noch folgende Datumsangaben ein:
Kronleuchter
20.03.2002
Armband
30.12.1998
Bisher ist zu der Tabelle Sammlung noch kein ID-Feld vorhanden. Mit dem folgenden Befehl
soll eine Spalte namens ID erstellt werden, Typ: Smallint, das Feld soll ein Autowert-Feld
sein (=Auto-Increment). Diese Auto-Increment-Spalten müssen außerdem indiziert sein.
Aufgabe: Nehmen Sie diese Änderung vor:
mysql> alter table sammlung
add ID smallint NOT NULL Auto_Increment,
-> add index (ID);
Query OK, 5 rows affected (0.11 sec)
Sie sehen jetzt in der Tabelle:
mysql> select * from sammlung;
+--------------+------+--------------------------+------------+----+
| stueck
| wert | text
| Kaufdatum | ID |
+--------------+------+--------------------------+------------+----+
| Kronleuchter | 2000 | antikes Stück
| 0000-00-00 | 1 |
| Kette
| 200 | Erbstueck
| 2003-01-12 | 2 |
| Barbie
| 250 | Geschenk von Susi
| NULL
| 3 |
| Armband
| 1000 | Gold mit Halbedelsteinen | 0000-00-00 | 4 |
| Uhr
| 600 | geerbt von Onkel Heinz
| NULL
| 5 |
+--------------+------+--------------------------+------------+----+
5 rows in set (0.11 sec)
42
Datenbanken
Die mysql-Eingabeaufforderung
Anschließend fällt auf, dass wir das neue ID-Feld nicht als Primärschlüssel gesetzt haben.
Dies wird auch wieder mit alter table gemacht. Geben Sie dazu den Befehl ein:
mysql> alter table sammlung
-> add primary key (ID);
Query OK, 5 rows affected (0.00 sec)
1.13 Umbenennen
Mit dem Befehl alter table ist es möglich, den Namen von Tabellen zu ändern. Der folgende
Befehl benennt die Tabelle Sammlung in Sachen um:
mysql> alter table sammlung rename Sachen;
Query OK, 0 rows affected (0.06 sec)
Anschließend sehen Sie:
mysql> show tables;
+--------------------+
| Tables_in_sammlung |
+--------------------+
| sachen
|
| sicherung
|
+--------------------+
2 rows in set (0.05 sec)
Sie können mit alter table aber auch Spalten umbenennen. Der folgende Befehl benennt die Spalte stueck in bezeichnung um. Zu beachten ist, dass man dabei den Datentyp
angeben muss, denn er könnte auch geändert werden.
mysql> alter table sachen change stueck bezeichnung varchar(30);
Genauso könnte man die Feldlänge des Feldes von 30 auf 40 ändern:
mysql> alter table sachen change bezeichnung bezeichnung varchar(40);
Aufgabe: Nehmen Sie diese Änderungen vor!
Lösung zum Einsetzen des Datums:
mysql> update sachen
-> set kaufdatum=2002-03-30
-> where bezeichnung='Kronleuchter';
Query OK, 1 row affected (0.06 sec)
Rows matched: 1 Changed: 1 Warnings: 1
mysql> update sachen
-> set kaufdatum=1998-12-30
-> where bezeichnung='Armband';
Query OK, 1 row affected (0.06 sec)
Rows matched: 1 Changed: 1 Warnings:
43
Datenbanken
Die mysql-Eingabeaufforderung
1.14 Kurzreferenz der mysql-Befehle
show databases;
Liste der Datenbanken anzeigen
show tables;
Tabellen anzeigen
use database <DB_name>;
Datenbank öffnen
drop database <DB_name>;
Datenbank löschen
create database <DB_name>;
Datenbank erstellen
create table <Tab_name> (Felddefinitionen);
Tabelle erstellen
Beispiel:
create table kunden(
knr smallint not null
primary key,
name varchar(30),
vorname varchar(30),
ort varchar(30)
);
drop table <Tab_name>;
Tabelle löschen
show columns from <name>
Felddefinitionen anzeigen
insert into <Tab_name>
(<feldname1> ,<feldname2> …usw.)
values(
’inhalt’, zahl, usw.
Daten einfügen
wenn alle Felder eingefügt werden, kann die
Angabe der Felder wegfallen,
);
z. B.
insert into kunden
(knr,name,vorname,ort)
values(
123, "Schmitz", "Gerhard", "Köln"
);
wenn nur bestimmte Felder eingetragen
werden, müssen sie angegeben werden.
Zeichenketten (Text) in einfachen oder doppelten Anführungszeichen
Daten ändern
update <Tab_name>
set feld="das und das"
In Datensätzen, die schon vorhanden sind,
mit update ändern
where (Bedingung);
z. B.
update kunde
set ort="Bonn"
where Kunde="Schmitz";
Neue Datensätze mit insert into (auch unvollständig) aufnehmen. Die fehlenden Felder
später mit update ändern!
44
Datenbanken
Die mysql-Eingabeaufforderung
Daten in Sicherungstabelle Tab_name2
schreiben (alle Daten von Tab_name1 lesen und in Tab_name2 schreiben)
Insert into <Tab_name2>
Select * from <Tab_name1>;
Vorher muss die Struktur von Tab_name2
erzeugt werden!
delete from <Tab_name>
Datensätze löschen
where (Bedingung);
z. B.:
delete from kunde
where knr=234;
alter table <Tab_name> <add |modify
<feldname1 datentyp>
Feld hinzufügen bzw. ändern
z. B.:
alter table kunde add gebtag date
Füge der Tabelle Kunde ein Feld Gebtag mit
dem Datentyp date hinzu
alter table kunde modify vkberater
varchar(20) varchar(30)
45
Ändere in der Tabelle Kunde das Feld
VKBerater von der Länge varchar(20) auf
varchar(30)
PHPMyAdmin
Einsatz von MySQL unter Windows
2 Einleitung: PHPMyAdmin
PHPMyAdmin ist eine Web-basierte Schnittstelle zu MySQL, einer relationalen Datenbank,
die ursprünglich für Linux konzipiert wurde. PHPMyAdmin ist kostenlos; es stellt ein Tool dar,
das mit dem Browser (Internet Explorer) geöffnet wird. Es kann lokal oder auch beim Provider genutzt werden und dient dazu, Datenbank-Tabellen zu erzeugen oder zu pflegen.
PHPMyAdmin ist selbst eine Sammlung von PHP-Skripten, das heißt, es ist vollständig in
PHP geschrieben. Der Quellcode kann so von jedermann eingesehen werden.
2.1 Verwendung von PHPMyAdmin
Bisher können Sie PHPMyAdmin über die Xampp-Start-Datei aufrufen.
PHPMyAdmin
Das hat den Nachteil, dass rechts der Xampp-Teil einen Teil des Bildschirms ausfüllt. Besser
ist es, eine Verknüpfung auf den Desktop zu legen.
Aufgabe: Machen Sie einen Rechtsklick auf
dem Desktop,
Befehl: Neu, Verknüpfung.
Geben Sie als Adresse ein:
http://localhost/phpmyadmin/index.php
Dann auf Weiter klicken.
Im nächsten Dialogfeld nur die Bezeichnung
PHPMyAdmin eintragen!
Wenn Sie jetzt PHPMyAdmin über die Verknüpfung starten, müsset auf dem Bildschirm
sichtbar werden:
60
PHPMyAdmin
Einsatz von MySQL unter Windows
2.2 Datenbank mit PHPMyAdmin erstellen
Jetzt können Sie in PHPMyAdmin eine neue Datenbank mit MySQL erstellen. Als Übung soll
eine kleine Datenbank namens Obst erstellt werden. Wenn PHPMyAdmin gestartet wurde,
sehen Sie auf dem Monitor die Aufforderung zum Anlegen einer neuen Datenbank:
hier den Namen der
neuen Datenbank
einsetzen:
Diese Datenbank soll die folgenden beiden Tabellen enthalten (der Einfachheit halber als Access-Tabellen abgebildet):
PHPMyAdmin meldet, dass die Datenbank
erzeugt wurde, wenn Sie auf Anlegen geklickt
haben.. Sie enthält natürlich noch keine Tabellen.
Jetzt können Sie eine Tabelle erstellen. Zunächst soll die Tabelle Kategorie mit nur zwei
Feldern eingerichtet werden:
Auf OK klicken, wenn fertig!
Jetzt können Sie die Felder der Tabelle einrichten:
„unsigned“ bedeutet „ohne Vorzeichen, nimmt also nur positive Werte auf. Primärschlüssel
nicht vergessen!
Klicken Sie dann auf die Schaltfläche Speichern.
PHPMyAdmin meldet, dass die Tabelle erstellt wurde. Der SQL-Befehl, der dazu erforderlich
war, wird so auch angezeigt (Abbildung nächste Seite)
61
PHPMyAdmin
Einsatz von MySQL unter Windows
Meldung nach der Erzeugung der Tabelle:
Aufgabe: Klicken Sie dann auf Einfügen. Es werden immer zwei leere Datensätze angeboten.
Das Feld kat_id ist auto_incremement. Das entspricht dem Autowert bei Access,
wird also vom Programm fortlaufend nummeriert.
Es fehlt noch ein Eintrag in der Tabelle, also auf
klicken und dann auf OK.
Fügen Sie jetzt noch die letzte Kategorie ein, nämlich Zitrusfrüchte.
Nach dem dritten Datensatz auf
zurück klicken!
Bestätigen Sie mit OK. Wenn Sie dann auf
klicken, werden die Datensätze
gezeigt:
62
PHPMyAdmin
Einsatz von MySQL unter Windows
Klicken Sie auch einmal auf Druckansicht (unten) um folgendes Ergebnis zu erzielen:
Erstellen Sie dann die zweite Tabelle der
Datenbank (Sorten)
Dazu links im Fenster auf den Datenbanknamen obst klicken
Dann steht wieder
Neue Tabelle erstellen
zur Verfügung.
(sorten, Felder: 3)
Entscheiden Sie selbst, wie Sie bei der Struktur vorgehen.
Geben Sie in diese Tabelle die folgenden Daten ein:
Sie können jetzt über SQL die Daten abrufen. Zum Beispiel können Sie anzeigen lassen,
welche Obstsorten welcher Kategorie zugehörig sind:
Aufgabe: Klicken Sie oben auf SQL und führen Sie folgende Abfrage aus:
select Sorten.Bezeichnung, Kategorie.Kategorie
from Sorten, Kategorie
where Kategorie.Kat_ID=Sorten.Kat_ID
Als Ergebnis sehen Sie:
63
PHPMyAdmin
Einsatz von MySQL unter Windows
Aufgabe: Erstellen Sie in PHPMyAdmin die Datenbank edv . Diese Datenbank soll die
folgenden Tabellen enthalten:
Artikel
Artikel_Lieferanten
Auftragsposition
Aufträge
Lieferanten
64
PHPMyAdmin
Einsatz von MySQL unter Windows
3 Einlesen von Tabellen
Die Excel-Arbeitsmappe Metallwaren.xls soll verwendet werden, um das Einlesen von Tabellen über PHPMyAdmin zu demonstrieren. Bei dieser Vorgehensweise müssen die Tabellen in Excel als csv-Datei abgespeichert werden, als einzelne Textdateien mit Begrenzern
zwischen den Feldern (in der Regel Semikolon).
Gehen Sie so vor, um die Datenbank Metallwaren über PHPMyAdmin zu erstellen:
An erster Stelle muss die Datenbank Metallwaren in PHPMyAdmin erstellt werden, falls noch
nicht vorhanden.
Tabelle Kunde in Excel ohne Zeilenüberschriften (Feldnamen) speichern:
(Speichern unter,
Wechseln Sie zu PHPMyAdmin: Jetzt ist es erforderlich – wie bei SQL allgemein – zuerst die
Tabellen von der Struktur her zu definieren.
Zur Tabelle Kunde:
Definieren Sie die Felder der Tabelle Kunde jetzt so:
PHPMyAdmin meldet:
Klicken Sie jetzt auf die Schaltfläche
her gespeicherte Textdatei einzulesen.
. Dort bekommen Sie die Möglichkeit, die vor-
Scrollen Sie nach unten, um Textdatei in Tabelle zu finden:
65
PHPMyAdmin
Einsatz von MySQL unter Windows
unten (hier) anklicken!
6. Dann muss die Datei angegeben
werden:
Klicken Sie auf Durchsuchen und
browsen sich zur Datei Kunde.csv
durch.
7. auf Abschicken klicken!
PHPMyAdmin meldet den Erfolg:
dann auf
klicken
66
PHPMyAdmin
Einsatz von MySQL unter Windows
Zur Tabelle Waren:
In Excel als csv-Datei so speichern:
dabei ergibt sich folgendes Problem:
im Editor, wenn sie als csv-Datei gespeichert ist:
Dezimaltrennzeichen: Komma
aber für SQL erforderlich: Punkt
deshalb: erst in der Systemsteuerung
die Währungstrennzeichen von Komma
auf Punkt setzen
Ergebnis in Excel:
Tabelle Waren in PHPMyAdmin erzeugen:
Datei einlesen (wie oben) Ergebnis
dann:
Tabelle Bestellung:
Die beiden schon vorhandenen Bestellnummern sind 10 und 20, deshalb wird hier nicht auto_increment für das Primärschlüsselfeld genommen.
67
PHPMyAdmin
Einsatz von MySQL unter Windows
Vorsicht beim Datum. Hier muss zuerst umformatiert werden, sonst ergibt sich folgendes
Bild:
Weil SQL das Datum in der Form Jahr-Monat-Tag verlangt, wird das Jahr 2011 erkannt,
wenn das Datum in Excel in der Form: 11.01.03 vorliegt
In Excel erst in der Form
JJJJ.MM.TT (Format Zellen, Zahlen, benutzerdefiniert) speichern!
Dann ist die Datei in PHPMyAdmin so zu sehen:
Die Tabelle Bestelldetails sieht nach dem Umwandeln so aus:
3.1 Übungen zur Datenbank Metallwaren:
1. Fügen Sie einen Datensatz zur Tabelle Artikel ein:
2. Ändern Sie den Verkaufspreis der Nägel auf 0.03
3. Exportieren Sie die Tabelle als csv-Datei für Excel (ohne „“ als Feldbegrenzer)
4. Führen Sie die folgenden Aufgaben (nächste Seite) als SQL-Abfragen aus.
Dazu ist es sinnvoll, sich die Beziehungen der Tabellen untereinander anzusehen:
MySQL unterstützt keine referentielle Integrität. Über die SQL-Abfragen werden aber die
Verbindungen zwischen den Tabellen hergestellt, wenn die Felder der Tabellen (Primär- und
Fremdschlüssel) gleichgesetzt werden.
68
PHPMyAdmin
Einsatz von MySQL unter Windows
SQL-Aufgaben für PHPMyAdmin /Datenbank Metallwaren
a. Wie heißt der Kunde Segers mit Vornamen?
b. Wer hat die Bestellung mit der Nummer 10 bestellt?
c. Wer bestellte über 1000 Stück von Waren_ID 4?
d. Der Kunde Boll heißt mit Vornamen nicht Anna, sondern Annegret (bitte ändern)
e. Erhöhen Sie den Lagerbestand der Artikel, die über 20 ct kosten, um 20 %
f.
welcher Kunde (Vorname und Name) hat etwas bestellt, wovon der der Lagerbestand
unter 1000 Stück lag?
g. Die Menge, die in der Bestellung mit der Bestellnr 120 eingetragen wurde, soll nicht
1000, sondern 500 sein.
h. Zählen Sie die Anzahl der Artikel, von denen mindestens 1000 Stück auf Lager sind.
69
PHPMyAdmin
Einsatz von MySQL unter Windows
Lösungen:
a.
SELECT vorname
from kunde
where name="Segers";
b.
select ku.name
from kunde ku, bestellung be
where be.bestellnummer=10
and be.kundennummer=ku.kundennummer;
c.
select ku.name
from kunde ku, bestellung be, bestelldetails bd
where bd.menge>1000
and bd.bestellnr=be.bestellnummer
and be.kundennummer=ku.kundennummer;
d.
update kunde
set vorname="Annegret"
where name="Boll";
e.
update Waren
set lagerbestand=lagerbestand*1.2
where vk_preis>0.2
f.
select ku.vorname, ku.name
from kunde ku, bestellung be, bestelldetails bd,waren w
where w.lagerbestand<1000
and w.artikel_id=bd.waren_ID
and bd.bestellnr=be.bestellnummer
and be.kundennummer=ku.kundennummer;
g.
update bestelldetails
set menge=500
where bestellnr=10
and waren_id=3
h.
select count(*)
from waren
where lagerbestand>1000;
70
PHPMyAdmin
Einsatz von MySQL unter Windows
3.2 Dump erzeugen
Ein Dump ist eine vollständige Auflistung der SQL-Befehle, die man gebraucht hätte, um
eine Datenbank anzulegen und die darin enthaltenen Daten einzufügen. Man benötigt einen
Dump als Datensicherung, aber vor allem, um Datenbanken oder Datenbanktabellen zum
Provider zu transferieren. Ein Dump sieht beispielsweise so aus:
---------------
version 2.6.0-pl3
http://www.phpmyadmin.net
Host: localhost
Erstellungszeit: 28. Februar 2005 um 10:01
Server Version: 4.1.8
PHP-Version: 5.0.3
Datenbank: `metallwaren`
-------------------------------------------------------Tabellenstruktur für Tabelle `waren`
CREATE TABLE `waren` (
`Artikel_ID` bigint(20) NOT NULL default '0',
`Artikel` varchar(50) default NULL,
`VK_Preis` decimal(12,2) default NULL,
`Lagerbestand` bigint(20) default NULL,
PRIMARY KEY (`Artikel_ID`)
) ENGINE=MyISAM DEFAULT CHARSET=latin1;
--- Daten für Tabelle `waren`
-INSERT INTO `waren` (`Artikel_ID`,
(1, 'Schrauben', 0.20, 10000);
INSERT INTO `waren` (`Artikel_ID`,
(2, 'Nägel', 0.02, 2000);
INSERT INTO `waren` (`Artikel_ID`,
(3, 'Bolzen', 0.10, 1500);
INSERT INTO `waren` (`Artikel_ID`,
(4, 'Nieten', 0.03, 20000);
INSERT INTO `waren` (`Artikel_ID`,
(5, 'Dübel', 0.25, 800);
INSERT INTO `waren` (`Artikel_ID`,
(6, 'Klammern', 0.10, 10000);
INSERT INTO `waren` (`Artikel_ID`,
(7, 'Bolzen M8', 0.00, 100);
`Artikel`, `VK_Preis`, `Lagerbestand`) VALUES
`Artikel`, `VK_Preis`, `Lagerbestand`) VALUES
`Artikel`, `VK_Preis`, `Lagerbestand`) VALUES
`Artikel`, `VK_Preis`, `Lagerbestand`) VALUES
`Artikel`, `VK_Preis`, `Lagerbestand`) VALUES
`Artikel`, `VK_Preis`, `Lagerbestand`) VALUES
`Artikel`, `VK_Preis`, `Lagerbestand`) VALUES
Dies ist der Dump der Tabelle Waren. Es ist auch möglich, den Dump für die gesamte Datenbank zu erstellen.
Gehen Sie so vor, um den Dump in PHPMyAdmin zu erzeugen:
1. Wählen Sie eine Tabelle.
2. Klicken Sie auf
3. Sie sehen dann die verschiedenen Optionen für den Export der Daten (Abb. nächste
Seite)
71
PHPMyAdmin
Einsatz von MySQL unter Windows
In den meisten Fällen können die Standardvorgaben übernommen werden. Wenn Sie unten
auf OK klicken, wird der Dump erzeugt.
3.3 Dump als Datei speichern
Bisher wurde der Dump in einem Fenster
des PHPMyAdmin sichtbar (wo man natürlich auch markieren und kopieren
kann, um die erzeugten Befehle an anderer Stelle zu nutzen). Um den Dump
als Datei abzuspeichern, ist es nur erforderlich,
anzukreuzen. Dann wird ein Dialogfeld gezeigt,
wie man es vom Download von Dateien
aus den Internet kennt.
72
PHPMyAdmin
Einsatz von MySQL unter Windows
Nach der Bestätigung mit OK folgt die Frage, wohin die Datei zu speichern sei, und steht
dann als Textdatei mit allen SQL-Befehlen zur Verfügung.
3.4 Dump der kompletten Datenbank
Genauso wie eine einzelne Tabelle kann auch der Dump einer kompletten Datenbank
durchgeführt werden. Dazu klicken Sie links im PHPMyAdmin auf den fett formatiert erscheinenden Namen der Datenbank, um dann die Übersicht über die Tabellen zu sehen:
Wenn Sie jetzt auf Exportieren klicken,
sieht das Ganze etwas anders aus:
Es werden alle Tabellen aufgelistet, und im
Dump werden nacheinander die Befehle
zum Erzeugen der Tabellen angezeigt.
Aufgabe: Erzeugen Sie den Dump der kompletten Datenbank metallwaren als Datei. Öffnen Sie dann die entstandene Datei mit Word oder dem Notepad-Editor (Beim
Öffnen auf Alle Dateien stellen, weil sonst keine Datei mit der Ergänzung .sql
angezeigt wird.
3.5 Dump einlesen
In der jetzt beschriebenen Vorgehensweise soll gezeigt werden, wie Sie aus einem vorliegenden Dump die komplette Datenbank aufbauen können.
Aufgabe: Kopieren Sie zunächst die Datei flora.sql.
Erstellen Sie dann die Datenbank flora in PHPMyAdmin.
Klicken Sie dann auf die Schaltfläche SQL
Klicken Sie dann auf die DurchsuchenSchaltfläche.
Wenn die Datei im Textfeld zu sehen ist, auf OK
klicken.
PHPMyAdmin meldet:
73
PHPMyAdmin
Einsatz von MySQL unter Windows
Sie verfügen dann über die komplette Datenbank Flora mit
sechs Tabellen – eingelesen aus einer Textdatei von nur 18
KB.
Auf die Wichtigkeit dieses Themas sei noch einmal hingewiesen: Um eine Datenbank im
Internet zu betreiben, müssen die Daten zum Provider gebracht werden. Dies geschieht entweder über das Einlesen von Textdateien (csv-Dateien), nachdem die Struktur der Datenbank vorher erstellt wurde), oder über den Dump.
Es ist auch eine Kombination beider Vorgänge möglich, nämlich zunächst die Struktur der
kompletten Datenbank als Dump einzuspielen (also alle create table-Befehle) und dann die
Daten über Textdateien einzulesen. Vom Datentransfer ist dies auch die Methode mit den
wenigsten Daten, wenn csv-dateien verwendet werden, es treten allerdings dabei meiner
Erfahrung nach eher Probleme auf, als wenn ein Dump eingespielt wird.
3.6 Einlesen einer größeren Tabelle: ICD-10 Diagnosenthesaurus
Im Downloadbereich der Website des Deutschen Instituts für medizinische Dokumentation
und Information (DIMDI) finden Sie zum Thema "Thesaurus" die zip-Datei x3gea2005.zip
zum Herunterladen. Wenn Sie die Datei entpacken, erhalten Sie diese beiden Dateien:
Inhalt der idt2004so.txt
…..
74
PHPMyAdmin
Einsatz von MySQL unter Windows
Dort, wo mehrere Semikola nebeneinander zu sehen sind, handelt es sich um ein leeres
Feld. Wenn wir je Zeile 5 Semikola zählen, sind es also 6 Felder pro Datensatz. Nähere Aufschlüsse darüber bietet die Datei liesmich.txt.
Für Interessierte: DKR2005_Endversion_040916_1500.doc aus dem Ordner 6304/datenbank kopieren (Deutsche Kodierrichtlinien, 235 Seiten, ebenfalls von www.dimdi.de)
75
PHPMyAdmin
Einsatz von MySQL unter Windows
Die Datei liesmich.txt enthält folgenden Text:
ICD-10-GM-Diagnosenthesaurus
Version 2004, Stand 15. August 2003
Diese Version beruht auf der Version 2004 der ICD-10-GM. Sie
dient damit den Zwecken der § 295 und § 301 SGB V.
Jeder Datensatz besteht aus 6 Feldern, die jeweils durch ein
Semikolon getrennt sind. Die Felder enthalten folgende Daten:
Feld 1: Art der Kodierung
0 = reiner Verweissatz
Diese Datensätze haben keine Schlüsselnummer,
sondern innerhalb des Textfeldes Verweise auf andere Begriffe,
unter denen ihre Schlüsselnummern nachgewiesen sind.
1 = Kodierung nur mit einer Primärschlüsselnummer
2 = Kodierung mit einer Kreuz- und einer Sternschlüsselnummer
3 = Kodierung mit einer Primärschlüsselnummer und mit
einer Zusatzschlüsselnummer außerhalb des
Kreuz-Stern-Systems
4 = Kodierung mit einer Kreuz-, einer Stern- und einer
Zusatzschlüsselnummer
Feld 2: Id (DIMDI-interne Nummer, ohne Bedeutung)
Feld 3: Primärschlüsselnummer (ggf. mit Kreuz)
Feld 4: Sternschlüsselnummer (mit Stern)
Feld 5: Zusatzschlüsselnummer (ggf. mit Ausrufezeichen)
Feld 6: zugehöriger Text, ggf. mit Verweis
Diese Datei ist für die Integration in Programme zur
Diagnosenverschlüsselung gedacht.
Copyright Deutsches Institut f. medizinische Dokumentation und Information
Köln 2003
Sie können dieser Datei also entnehmen, dass der Inhalt für eine Tabelle von sechs Feldern
gedacht ist, und erfahren etwas über den Zweck dieser Datenfelder.
Nähere Informationen zum Kreuz-Stern-System entnehmen Sie bitte den Kodierrichtlinien
(doc-Datei s. vorige Seite) Hier nur ein Beispiel:2
Beispiel 7
(aus DKR 0401d Diabetes mellitus)
Ein Patient mit Diabetes Typ 1 mit peripheren vaskulären Komplikationen in Form einer Atherosklerose
der Extremitätenarterien mit Ruheschmerz wird zur Bypass-Operation aufgenommen. Zusätzlich besteht
eine Retinopathie mit erheblicher Einschränkung des Sehvermögens.
Hauptdiagnose:
E10.50†
Primär insulinabhängiger Diabetes mellitus [Typ-1-Diabetes]
mit peripheren vaskulären Komplikationen, nicht als entgleist
bezeichnet
Nebendiagnose(n):
I79.2*
Periphere Angiopathie bei anderenorts klassifizierten Krankheiten
I70.22
Atherosklerose der Extremitätenarterien, Becken-Bein-Typ, mit
Ruheschmerzen
E10.30†
Diabetes mellitus mit Augenkomplikationen, nicht als entgleist
bezeichnet
H36.0*
Retinopathia diabetica
2
Kodierrichtlinien, S. 28
76
PHPMyAdmin
Einsatz von MySQL unter Windows
Die Struktur der Tabelle thesaurus, die wir erzeugen wollen, ist folgende:
Aufgabe: Erstellen Sie eine neue Datenbank mit dem Namen icd10 . In dieser Datenbank
wird dann die Tabelle mit dem Namen thesaurus erstellt
Aufgabe: Lesen Sie jetzt die Textdatei idt2004so.txt in die leere Tabelle thesaurus ein.
(Struktur, Textdatei in Tabelle einfügen)
Verwenden Sie die nebenstehenden Einstellungen:
PHPMyAdmin meldet:
Aufgabe: Zu Testzwecken soll jetzt ein Dump aus dieser Datenbank erstellt werden. Verwenden Sie Exportieren in PHPMyAdmin !
Kreuzen Sie … Senden an. damit auch eine Datei daraus entsteht.
Sie sehen schon hier, dass das Zeitverhalten anders ist (19 sec. beim Testen auf
meinem knapp vier Jahre alten Athlon, 1 GHz Takt)
Die daraus entstandene Datei hat eine Größe von 4,6 MB gegenüber 2,3 MB der reinen
Textdatei.
Wenn jetzt versucht wird, diese Datei (in eine neue Datenbank zu Testzwecken) wieder einzulesen, bekommt man eine Fehlermeldung:
Im Falle einer solch großen Datei ist es also besser, die Textdatei zu importieren.
77
PHPMyAdmin
Einsatz von MySQL unter Windows
4 PHP als serverseitige Skriptsprache
PHP wurde ursprünglich 1995 von Rasmus Lerdorf entwickelt, der einige Tools programmierte, um zu sehen, wie seine Online-Bewerbungen abgerufen wurden.
Die Abkürzung PHP stand ursprünglich für Personal Home Page Tools. Später wurde sie als
Akronym für Hypertext Preprocessor verwendet, übersetzt könnte man sagen „HypertextVorschalt-Prozessor“. Die Entwicklung ist mittlerweile bei PHP 5.0 angekommen, und an
PHP kommt heute niemand mehr vorbei, der sich für Datenbanken im Web interessiert.
Die Anwendung von PHP lässt sich so beschreiben:
• Zusammenarbeit mit dem Webserver: z.B. als Modul fest eingebaut im Apache
• request-response Prinzip:3
1. Client schickt Anfrage an den Webserver
2. Webserver reicht Anfrage an z.B. PHP weiter
3. PHP generiert Ausgabe (z.B. HTML-Code)
4. Webserver schickt Ausgabe an den Client
5. Webserver beendet die Verbindung zum Client
Zweck des Einsatzes von PHP ist es, HTML-Seiten dynamisch zu erzeugen, d.h. das HTML
entsteht beim Seitenabruf. Angenommen, jemand macht eine Anfrage an eine medizinische
Datenbank, dann erhält er das Ergebnis als „pures“ HTML. Der Rechner des Client, also des
betrachters der Website, kann mit PHP gar nichts anfangen, es gelangt auch gar nicht zu
ihm. Im Hintergrund hat eine Datenbankauswertung stattgefunden, und PHP hat über
MySQL-Funktionen und seine eigenen Ausgabebefehle dafür gesorgt, dass wieder reines
HTML gesendet wird.
Im folgenden soll zuerst PHP "pur" vermittelt werden, um dann später auf die Datenbankanbindung einzugehen.
PHP-Skripte werden vom Webserver ausgeführt. Wenn lokal am Rechner PHP-Dateien erstellt und getestet werden, dann ist es erforderlich, sie im Internet-Explorer mit ihrer lokalen
Adresse aufzurufen, also zum Beispiel:
http://localhost/test.php
(dazu muss sich außerdem die Datei im htdocs-Ordner
befinden)
Keinesfalls können die Dateien durch einen Doppelklick über Arbeitsplatz oder Windows
Explorer aufgerufen werden, denn in diesem Fall wird nur der HTML-Anteil "verstanden", der
Webserver (hier: Apache) "merkt" ja dann gar nichts davon, dass diese Datei aktiviert wurde.
Es ist zu umständlich, jedes Mal die Adresse komplett einzugeben. Und weil sich außerdem
die Dateien (als default-Einstellung) im htdocs-Ordner befinden müssen, ist es einfacher,
wenn wir uns zunächst eine Oberfläche schaffen, über die wir durch Anklicken des Links die
Dateien öffnen. Die Datei php.php enthält eine Tabelle mit Links, z. B. 1.php. Durch Anklicken wird die Datei 1.php im Ordner C:\ XAMPP\htdocs\phptest aufgerufen (bzw. bei einer
XAMPP-Standardinstallation auch C:\Apachefriends\XAMPP\htdocs\phptest).
Wir können die Dateien, die übungshalber erstellt werden sollen, nun nacheinander mit den
Dateinamen 1.php, 2.ph, 3.php usw. im htdocs-Ordner, Unterordner phptest, erstellen und
speichern (mit dem HTML-Editor, PHP-Coder oder welchen Editor Sie bevorzugen), dann
von der einmal gestarteten Datei php.php aus die einzelnen Übungen über den Link starten
und testen.
3
http://www.thinkphp.de/
78
PHPMyAdmin
Einsatz von MySQL unter Windows
Die Datei php.php zeigt folgenden Aufbau:
Die Datei php.php enthält das HTML-Grundgerüst, den Link zur CSS-Datei standard.css
(die z. B. die Hover-Effekte beim Darüberstreichen mit der Maus schafft), die Tabelle und die
Links.
php.php
<!doctype html public "-//W3C//DTD HTML 4.01//EN">
<html>
<head>
<title>PHP-Testdateien</title>
<link rel="stylesheet" href="standard.css" type="text/css">
</head>
<body>
<h1>Startseite PHP-Test</h1>
<br>
<h2>Link anklicken:</h2>
<table
bordercolor="#0000FF" border="1" >
<tr>
<td width="100" height="50"><a href="1.php">1.php</a></td>
<td width="100"><a href="2.php">2.php</a> </td>
<td width="100"><a href="3.php">3.php</a> </td>
<td width="100"><a href="4.php">4.php</a> </td>
<td width="100"><a href="5.php">5.php</a> </td>
<td width="100"><a href="41.php">41.php</a> </td>
</tr>.....usw für die anderen Tabellenzeilen.....
</tr></table>
</body>
</html>
79
PHPMyAdmin
Einsatz von MySQL unter Windows
4.1 PHP in HTML-Dateien
PHP-Sprachelemente werden in die HTML-Datei eingebettet. Sie eröffnen PHP mit
<?php
Nun folgen die PHP-Befehle. Zur Übergabe an HTML schließen Sie wieder mit
?>
Es ist ohne Weiteres möglich, mehrmals hintereinander in einer Datei PHP „auf- und zu“ zu
machen (Beispiele und Gründe, wozu das gut ist, sehen Sie etwas später).
4.2 Das Hallo-Welt-Skript
Aufgabe: Erstellen Sie die erste Datei zum Testen. Sie enthält den für den ersten Schritt
mit einer Programmiersprache klassischen "Hallo-Welt" –Test. Sie macht nichts
anderes, als den Text "Hallo Welt" auf den Bildschirm zu bringen:
1.php
<!doctype html public "-//W3C//DTD HTML 4.01//EN">
<html>
<!-- 1.php -->
<head>
<link rel="stylesheet" href="standard.css" type="text/css">
<title></title>
</head>
<body>
<h1>Das Hallo-Welt-Skript</h1>
<p>
<?php
echo "Hallo Welt"
?>
</p>
<a href="http://localhost/php.php">zurück zur Startseite</a>
</body>
</html>
Aufgabe: Verwenden Sie den Befehl Ansicht Quelltext, um den HTML-Code und die Textausgabe der Datei zu sehen:
80
PHPMyAdmin
Einsatz von MySQL unter Windows
Vergleichen Sie die Stelle, wo hier Hallo Welt steht, mit dem PHP-Skript!
4.3 Kommentare
Es ist sinnvoll, im Quellcode mit Kommentaren zu arbeiten. Das Programm wird dadurch
lesbarer. Vor allem, wenn man sich erst nach einer Zeit wieder den Code ansieht, versteht
man ihn viel besser, wenn man mit Kommentaren gearbeitet hat. Für andere, die ihren Code
lesen sollen, gilt dies natürlich erst recht.
Einzeilige Kommentare werden mit zwei // (Schrägstrichen) oder einer Raute gemacht:
<?php
echo "Hallo Welt"
//Ausgabe des Hallo-Welt-Standardtextes
$wert=3+4
#der Variablen $wert wird 3 + 4 zugewiesen.
?>
Mehrzeilige Kommentare werden von /* und */ eingeschlossen.
$wert=3+4
/*der Variablen $wert wird das Ergebnis der
Berechnung von 3 + 4 zugewiesen.*/
4.4 die Funktion phpinfo()
phpinfo zeigt Ihnen Infos über die Konfiguration von PHP an. Durch Aufruf dieser Funktion
kann man sich davon vergewissern, welche Einstellungen gelten und welche Zusatzmodule
ggf. geladen worden sind.
Aufgabe: Die zweite Datei soll die in PHP integrierte Funktion phpinfo() ausführen.
2.php
<!doctype html public "-//W3C//DTD HTML 4.01//EN">
<html>
<!-- 2.php -->
<head>
<link rel="stylesheet" href="standard.css" type="text/css">
<title></title>
</head>
<body>
<h1>PHP-Info</h1>
<p>
<?php
phpinfo();
?>
</p>
<a href="http://localhost/php.php">zurück zur Startseite</a>
</body>
</html>
Sie zeigt (hier: Ausschnitt) die verschiedenen Einstellungen, die wichtig für das Funktionieren
später benutzter Funktionen in PHP sind.
4.5 Variablen und Berechnungen in PHP
81
PHPMyAdmin
Einsatz von MySQL unter Windows
Variablen sind ein sehr wichtiger Bestandteil jeder Programmiersprache. Sie dienen dazu,
Werte zwischenzuspeichern, die später wieder benötigt werden. In PHP gilt generell die Regel, dass Variablen mit einem $-Zeichen beginnen. PHP unterscheidet zwischen Groß- und
Kleinschreibung. Sonderzeichen (außer dem Unterstrich) dürfen für Variablennamen in PHP
nicht verwendet werden.
Es ist nicht erforderlich, Variablen vor Gebrauch zu deklarieren. Den Datentyp (Integer für
Ganzzahlen, Double für Dezimalzahlen, String für Text (muss innerhalb von Anführungsstrichen stehen) und Boolean (logisch, kann den Wert true oder false annehmen) wird von PHP
automatisch erkannt.
Einer Variable wird der Wert durch ein = Zeichen zugewiesen.
$zahl = 45
Die Variable $zahl erhält den Wert 45
$text = "Wolfgang"
Die Variable $text bekommt den Inhalt "Wolfgang" zugewiesen
Achtung: beim Vergleich muss ein doppeltes == Zeichen verwendet werden! Das einfache
Gleichheitszeichen weist nur einen Wert zu.
Generell gelten für Berechnungen die Rechenzeichen, die auch in Anwendungsprogrammen
wie z. B. Excel verwendet werden:
Verwenden Sie folgende Rechenzeichen:
addieren
+
*
/
subtrahieren
multiplizieren
dividieren
Außerdem gilt eine abgekürzte Schreibweise für das Erhöhen bzw. Vermindern um 1, wie es
auch in einigen anderen Sprachen eingesetzt wird.
Statt des Ausdrucks: schreibt man kürzer:
$z=$z +1
$++
$x=$x-1
$x --
$y=$y+2
$y+=2
$w=$w-5
$w- =5
Aufgabe: Erstellen Sie die nächste Datei. Mit ihr wird getestet, wie eine Variable verwendet
wird und eine einfache Rechnung ausgeführt wird:
3.php
<!doctype html public "-//W3C//DTD HTML 4.01//EN">
<html>
<!-- 3.php -->
<head>
<link rel="stylesheet" href="standard.css" type="text/css">
<title></title>
</head>
<body>
<h1>PHP</h1>
<p>
<?php
$c=3+4;
echo $c;
?>
</p>
<a href="http://localhost/php.php">zurück zur Startseite</a>
82
PHPMyAdmin
Einsatz von MySQL unter Windows
</body>
</html>
Der Variable mit dem Namen $c wird das Ergebnis der Rechnung 3+4 zugewiesen. Danach
erfolgt die Ausgabe echo $c . Sie sehen auf dem Bildschirm:
Aufgabe: Erstellen Sie die nächste Übungsdatei.
4.php
<!doctype html public "-//W3C//DTD HTML 4.01//EN">
<html>
<!-- 4.php -->
<head>
<link rel="stylesheet" href="standard.css" type="text/css">
<title></title>
</head>
<body>
<h1>PHP</h1>
<p>
<?php
$a=5;
$b=8;
$c=$a+$b;
echo $c;
?>
</p>
<a href="http://localhost/php.php">zurück zur Startseite</a>
</body>
</html>
Hier wird zunächst den Variablen $a und $b eine Zahl zugewiesen. Dann erfolgt die Addition
und die Zuweisung des Ergebnisses in die Variable $c.
Auf dem Bildschirm müsste zu sehen sein:
Aufgabe: Erstellen Sie die Datei 5.php. Der Unterschied ist hier nur, dass in der AusgabeZeile die Verwendung von Variablen und Text zu sehen ist. Innerhalb der Anführungszeichen nach echo wird alles ausgegeben, sei es einfacher Text, Variablen oder auch
HTML.
5.php
<!doctype html public "-//W3C//DTD HTML 4.01//EN">
<html>
<!-- 5.php -->
83
PHPMyAdmin
Einsatz von MySQL unter Windows
<head>
<link rel="stylesheet" href="standard.css" type="text/css">
<title></title>
</head>
<body>
<h1>PHP</h1>
<p>
<?php
$a=5;
$b=8;
$c=$a+$b;
echo "Die Summe von $a und $b ergibt $c";
?>
</p>
<a href="http://localhost/php.php">zurück zur Startseite</a>
</body>
</html>
Auf dem Monitor sehen Sie:
Aufgabe: Ändern Sie an der folgenden Datei nur die echo-Zeile und speichern Sie mit dem
Namen 6.php . Hier soll gezeigt werden, wie innerhalb der Ausgabe auch HTMLTags verwendet werden können:
6.php
...
echo "Die <i>Summe</i> von <b>$a</b> und <b>$b</b> <u>ergibt</u>
<b>$c</b>";
...
Als Ausgabe sehen Sie:
Aufgabe: Erstellen Sie nun die Datei 7.php.
<!doctype html public "-//W3C//DTD HTML 4.01//EN">
<html>
<!-- 7.php -->
<head>
<link rel="stylesheet" href="standard.css" type="text/css">
<title></title>
</head>
84
PHPMyAdmin
Einsatz von MySQL unter Windows
<body>
<h1>Verkettung von Strings</h1>
<p>
<?php
$text1="Der Anfang";
$text2="und die Fortsetzung";
echo "$text1 $text2";
?>
</p>
<a href="http://localhost/php.php">zurück zur Startseite</a>
</body> </html>
Die Ausgabe ist folgende:
An diesem Beispiel ist zunächst noch nichts Neues. In
der Fortsetzung sehen Sie, worauf das Ganze hinauslaufen soll.
Aufgabe: Erstellen Sie Datei 8.php. Hier soll die Verkettung von Zeichen durch den PunktOperator gezeigt werden. Wozu in Javascript das Plus-Zeichen dient, wird in
PHP der Punkt verwendet.
Verändern Sie an der Datei 8.php gegenüber der Datei 7.php nur die echo-Zeile:
echo ($text1 . $text2);
Die Ausgabe ist dieselbe wie bei der zuvor erstellten Datei. Bei diesem Beispiel ist der Punkt
als Verkettungsoperator tatsächlich gar nicht nötig, aber für die Ausgabe aus Funktionen
wird dieses Verfahren benötigt. Außerdem wird es, wie im nächsten Beispiel zu sehen, verwendet, um mit einer verkürzten Schreibweise nach und nach Werte zu verketten, indem sie
aneinandergefügt werden.
9.php
<!doctype html public "-//W3C//DTD HTML 4.01//EN">
<html>
<!-- 9.php -->
<head>
<link rel="stylesheet" href="standard.css" type="text/css">
<title></title>
</head>
<body>
<h1>Verkettung von Strings</h1>
<p>
<?php
$text="Der Anfang ";
$text.="und die Fortsetzung";
echo ($text);
?>
</p>
<a href="http://localhost/php.php">zurück zur Startseite</a>
</body>
</html>
Die Ausgabe wird wieder dieselbe sein wie bei den beiden Dateien vorher. –
Hier geschieht folgendes; Zuerst ist in der Variablen $text nur "der Anfang". In der nächsten
Zeile $text.="und die Fortsetzung"; wird dem bisherigen Inhalt von $text über den Punkt
etwas hinzugefügt, nämlich der zweite Teil des Textes. Dann erfolgt wieder die Ausgabe des
Textes.
85
PHPMyAdmin
Einsatz von MySQL unter Windows
Dieses Verfahren wird häufig verwendet, um nach und nach den Inhalt einer String-Variablen
mit immer mehr Inhalt zu füllen.
86
PHPMyAdmin
Einsatz von MySQL unter Windows
4.6 Arrays
Im Unterschied zu den bisher verwendeten Variablen sind Arrays mehrdimensional. Das
bedeutet, dass man in einem Array mehr als einen Wert speichern kann. Über einen Index
(die Zahl in eckigen Klammern) sind die Werte aufzurufen.
Aufgabe: Erstellen Sie die folgende Datei:
10.php
<!doctype html public "-//W3C//DTD HTML 4.01//EN">
<html>
<!-- 10.php -->
<head>
<link rel="stylesheet" href="standard.css" type="text/css">
<title></title>
</head>
<body>
<h1>Arrays in PHP</h1>
<p>
<?php
$vorname[0]="Herbert";
$vorname[1]="Johannes";
$vorname[2]="Dieter";
$vorname[3]="Petra";
$vorname[4]="Beate";
$vorname[5]="Gerd";
$vorname[6]="Karl-Heinz";
// den vierten Namen ausgeben
echo $vorname[3];
?>
</p>
<a href="http://localhost/php.php">zurück zur Startseite</a>
</body>
</html>
Da die Zählung im Array mit 0 beginnt, ist der vierte Vorname der, der dem Array mit
$vorname[3]="Petra"; zugewiesen wurde.
Der Monitor zeigt:
Aufgabe: Arrays können auch in einer abgekürzten Form verwendet werden. Das soll das
folgende Beispiel zeigen:
11.php
<!doctype html public "-//W3C//DTD HTML 4.01//EN">
<html>
<!-- 11.php -->
<head>
<title>Arrays</title>
<link rel="stylesheet" href="standard.css" type="text/css">
</head>
<body>
<body>
87
PHPMyAdmin
Einsatz von MySQL unter Windows
<h1>Array in Kurzform</h1>
<p>
<?php
$name=array("Schmitz","Meyer","Müller","Paulsen","Demorgitas","Lesotra",
"Lohmann");
// Den fünften Namen ausgeben
echo $name[4];
?>
</p>
<a href="http://localhost/php.php">zurück zur Startseite</a>
</body>
</html>
Der Code 11.php führt zu dieser Ausgabe:
Aufgabe: Erstellen Sie jetzt die Datei 12.php. Dem Array $tag werden die einzelnen Wochentage zugewiesen. Die in PHP integrierte date()-Funktion mit dem Zusatz "w"
liefert den aktuellen Tag als Zahl, beginnend mit Sonntag=0. Das entspricht der
Indizierung, die wir über den Array vornehmen:
12.php
<!doctype html public "-//W3C//DTD HTML 4.01//EN">
<html>
<!-- 12.php -->
<head>
<title>Arrays</title>
<link rel="stylesheet" href="standard.css" type="text/css">
</head>
<body>
<body>
<h1>Tag mit Array ermitteln</h1>
<p>
<?php
$tag=array("Sonntag","Montag","Dienstag","Mittwoch","Donnerstag","Freitag",
"Samstag");
$tagzahl=date("w"); // Tag ermitteln
echo "Heute ist $tag[$tagzahl].";
?>
</p>
<a href="http://localhost/php.php">zurück zur Startseite</a>
</body>
</html>
Die Ausgabe muss den aktuellen Tag zeigen (Donnerstag also nur, wenn tatsächlich Donnerstag ist)
88
Herunterladen