Datenbank, MySQL und PHP - team.fh-kl. Datenbank, MySQL und PHP Christoph Reeg Co-Autor: Jens Hatlak

  • View
    0

  • Download
    0

Embed Size (px)

Text of Datenbank, MySQL und PHP - team.fh-kl. Datenbank, MySQL und PHP Christoph Reeg Co-Autor: Jens Hatlak

  • Datenbank, MySQL und PHP

    Christoph Reeg Co-Autor:

    Jens Hatlak

    13. Mai 2002

  • Diese Anleitung, die sich gleichermaßen an Anfänger wie allgemein Interessierte in Sa- chen Datenbanken, SQL und PHP richtet, versucht schrittweise und spielerisch in die Geheimnisse der dynamischen Informationsverarbeitung im WWW einzuführen. Von der Datenbank-Theorie und -Praxis (am Beispiel MySQL) über die webfreundliche Script- sprache PHP (inklusive Themen wie Datenbank-Anbindung und Objektorientierung) bis hin zu XML wird auf leicht verständliche Art beschrieben, welche Möglichkeiten moderne Technologien bieten, Webseiten dynamisch zu gestalten. Nicht fehlen dürfen dabei natür- lich die zahlreichen Beispiele und und Hinweise; so gibt es u.a. auch ein Kapitel, das sich mit der Behandlung und Vermeidung von Fehlern beschäftigt.

    Die aktuelle Version sowie verschiedene Formate zum Herunterladen befinden sich unter http://reeg.net/ .

    DSP - Datenbank SQL PHP Copyright (c) 2000 by Christoph Reeg (dsp@reeg.net). Dieses Material darf nur gemäß den Regeln und Bedingungen, wie sie von der Open Pu- blication Licence, Version v1.0, festgelegt werden, verteilt werden (die letzte Version ist gegenwärtig verfügbar unter http://www.opencontent.org/openpub/). Diese Veröffentli- chung macht von keiner der im Abschnitt LIZENZ-OPTIONEN genannten Optionen Ge- brauch. Die genaue Lizenz findet sich im Anhang C.

    http://reeg.net/ mailto:dsp@reeg.net http://www.opencontent.org/openpub/

  • Inhaltsverzeichnis

    1 Vorwort 1 1.1 Aktuelle Version / Download . . . . . . . . . . . . . . . . . . . . . . . . . . 1 1.2 Was ist das hier oder was ist es nicht? . . . . . . . . . . . . . . . . . . . . . 1 1.3 PHP - ist das gefährlich? . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2 1.4 Weitere Informationsquellen oder Hilfe . . . . . . . . . . . . . . . . . . . . . 2 1.5 Unterteilung . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 3 1.6 Typographische Konventionen . . . . . . . . . . . . . . . . . . . . . . . . . . 5 1.7 Autoren . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 5

    I theoretische Grundlagen 7

    2 Datenbanksystem 8 2.1 Komponenten eines Datenbanksystems . . . . . . . . . . . . . . . . . . . . . 8 2.2 Ebenen eines Datenbanksystems . . . . . . . . . . . . . . . . . . . . . . . . 9

    2.2.1 Betriebssystem/Hardware . . . . . . . . . . . . . . . . . . . . . . . . 9 2.2.2 Interne Ebene . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 9 2.2.3 Konzeptionelle Ebene . . . . . . . . . . . . . . . . . . . . . . . . . . 10

    2.2.3.1 Tabellenstruktur . . . . . . . . . . . . . . . . . . . . . . . . 10 2.2.3.2 Schlüssel . . . . . . . . . . . . . . . . . . . . . . . . . . . . 11

    2.2.4 Externe Ebene . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 11

    3 Datenbanken entwickeln 12 3.1 Vorgehensweise . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 12 3.2 Grundsätze . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 12

    3.2.1 Keine Redundanz . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 12 3.2.2 Eindeutigkeit . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 13 3.2.3 Keine Prozeßdaten . . . . . . . . . . . . . . . . . . . . . . . . . . . . 13

    3.3 Datenmodelle entwickeln . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 13 3.3.1 Tabellen erstellen . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 14

    3.4 Die fünf Normalformen . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 15 3.4.1 Die 1. Normalform . . . . . . . . . . . . . . . . . . . . . . . . . . . . 15 3.4.2 Die 2. Normalform . . . . . . . . . . . . . . . . . . . . . . . . . . . . 16 3.4.3 Die 3. Normalform . . . . . . . . . . . . . . . . . . . . . . . . . . . . 17 3.4.4 Die 4. Normalform . . . . . . . . . . . . . . . . . . . . . . . . . . . . 18 3.4.5 Die 5. Normalform . . . . . . . . . . . . . . . . . . . . . . . . . . . . 19 3.4.6 Denormalisierung der Tabellen . . . . . . . . . . . . . . . . . . . . . 20

    3.5 Streifendiagramm . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 21

    Christoph Reeg Seite i

  • Inhaltsverzeichnis Inhaltsverzeichnis

    3.6 Das ER-Modell . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 21 3.7 Relationen erstellen . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 23 3.8 Datentypen . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 24

    II praktischer Teil SQL 25

    4 SQL benutzen 26 4.1 MySQL . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 26

    4.1.1 Dateien abarbeiten . . . . . . . . . . . . . . . . . . . . . . . . . . . . 27 4.1.2 Kommentare . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 28

    5 SQL-Befehle 29 5.1 CREATE DATABASE . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 29 5.2 CREATE TABLE . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 30 5.3 SHOW . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 32 5.4 DROP TABLE . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 33 5.5 INSERT INTO . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 33 5.6 SELECT . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 34

    5.6.1 ORDER BY . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 36 5.6.2 GROUP BY . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 37 5.6.3 LIMIT . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 38 5.6.4 select expression . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 38 5.6.5 Alias . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 39

    5.6.5.1 Tabellen-Alias . . . . . . . . . . . . . . . . . . . . . . . . . 40 5.6.5.2 Spalten-Alias . . . . . . . . . . . . . . . . . . . . . . . . . . 40

    5.6.6 where definition . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 41 5.6.6.1 LIKE . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 45 5.6.6.2 BETWEEN . . . . . . . . . . . . . . . . . . . . . . . . . . 46 5.6.6.3 IN . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 47

    5.7 Funktionen . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 49 5.7.1 Mathematische Funktionen . . . . . . . . . . . . . . . . . . . . . . . 49 5.7.2 Logische Operatoren . . . . . . . . . . . . . . . . . . . . . . . . . . . 49 5.7.3 Sonstige Funktionen . . . . . . . . . . . . . . . . . . . . . . . . . . . 49 5.7.4 Datums-Funktionen . . . . . . . . . . . . . . . . . . . . . . . . . . . 49 5.7.5 Gruppenfunktionen . . . . . . . . . . . . . . . . . . . . . . . . . . . . 51

    5.8 Joins . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 53 5.8.1 Equi-Join . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 54 5.8.2 Self-Join . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 54 5.8.3 Outer-Join . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 55

    5.9 DELETE FROM . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 57 5.10 UPDATE . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 58 5.11 ALTER TABLE . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 58

    6 Tips & Tricks 63 6.1 zufällige Daten auswählen . . . . . . . . . . . . . . . . . . . . . . . . . . . . 63

    Christoph Reeg Seite ii

  • Inhaltsverzeichnis Inhaltsverzeichnis

    6.2 Nutzer in MySQL . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 64 6.3 PHPMyAdmin . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 64 6.4 Bäume in SQL . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 65

    6.4.1 Was ist ein Baum? . . . . . . . . . . . . . . . . . . . . . . . . . . . . 65 6.4.2 Beispieldaten . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 66 6.4.3 Baumdarstellung mit Vater-Zeiger . . . . . . . . . . . . . . . . . . . 67 6.4.4 Nested Set Modell . . . . . . . . . . . . . . . . . . . . . . . . . . . . 67

    6.4.4.1 Löschen . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 72 6.4.4.2 Einfügen . . . . . . . . . . . . . . . . . . . . . . . . . . . . 74

    6.4.5 Übungen . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 74 6.4.5.1 Vater-Zeiger . . . . . . . . . . . . . . . . . . . . . . . . . . 74 6.4.5.2 Nested Set . . . . . . . . . . . . . . . . . . . . . . . . . . . 74

    III Einführung PHP 76

    7 PHP Grundlagen 77 7.1 Einleitung . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 77 7.2 Grundbefehle . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 78

    7.2.1 Der echo-Befehl . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 78 7.2.2 Der print-Befehl . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 79 7.2.3 Zuweisungen . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 79 7.2.4 Operatoren . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 80

    7.2.4.1 Arithmetische Operatoren . . . . . . . . . . . . . . . . . . . 80 7.2.4.2 String-Operatoren . . . . . . . . . . . . . . . . . . . . . . . 80 7.2.4.3 Bit-Operatoren . . . . . . . . . . . . . . . . . . . . . . . . . 80 7.2.4.4 Logische Operatoren . . . . . . . . . . . . . . . . . . . . . . 81 7.2.4.5 Vergleichsoperatoren . . . . . . . . . . . . . . . . . . . . . . 81

    7.2.5 Kommentare . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 81 7.2.6 Variablen . . . . . . . . . . . . . . . . . . . . . . . . . . . . .