Datenbank, MySQL und PHP - ip- .Datenbank, MySQL und PHP Christoph Reeg Co-Autor: Jens Hatlak 8

  • View
    219

  • Download
    0

Embed Size (px)

Text of Datenbank, MySQL und PHP - ip- .Datenbank, MySQL und PHP Christoph Reeg Co-Autor: Jens Hatlak 8

  • Datenbank, MySQL und PHP

    Christoph ReegCo-Autor:

    Jens Hatlak

    8. September 2002

  • Diese Anleitung, die sich gleichermaen an Anfanger wie allgemein Interessierte in Sa-chen Datenbanken, SQL und PHP richtet, versucht schrittweise und spielerisch in dieGeheimnisse der dynamischen Informationsverarbeitung im WWW einzufuhren. Von derDatenbank-Theorie und -Praxis (am Beispiel MySQL) uber die webfreundliche Script-sprache PHP (inklusive Themen wie Datenbank-Anbindung und Objektorientierung) bishin zu XML wird auf leicht verstandliche Art beschrieben, welche Moglichkeiten moderneTechnologien bieten, Webseiten dynamisch zu gestalten. Nicht fehlen durfen dabei natur-lich die zahlreichen Beispiele und und Hinweise; so gibt es u.a. auch ein Kapitel, das sichmit der Behandlung und Vermeidung von Fehlern beschaftigt.

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

    DSP - Datenbank SQL PHPCopyright (c) 2000 by Christoph Reeg (dsp@reeg.net).Dieses Material darf nur gema den Regeln und Bedingungen, wie sie von der Open Pu-blication Licence, Version v1.0, festgelegt werden, verteilt werden (die letzte Version istgegenwartig verfugbar unter http://www.opencontent.org/openpub/). Diese Veroffentli-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.nethttp://www.opencontent.org/openpub/

  • Inhaltsverzeichnis

    1 Vorwort 11.1 Aktuelle Version / Download . . . . . . . . . . . . . . . . . . . . . . . . . . 11.2 Was ist das hier oder was ist es nicht? . . . . . . . . . . . . . . . . . . . . . 11.3 PHP - ist das gefahrlich? . . . . . . . . . . . . . . . . . . . . . . . . . . . . 21.4 Weitere Informationsquellen oder Hilfe . . . . . . . . . . . . . . . . . . . . . 21.5 Unterteilung . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 31.6 Typographische Konventionen . . . . . . . . . . . . . . . . . . . . . . . . . . 51.7 Autoren . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 5

    I theoretische Grundlagen 8

    2 Datenbanksystem 92.1 Komponenten eines Datenbanksystems . . . . . . . . . . . . . . . . . . . . . 92.2 Ebenen eines Datenbanksystems . . . . . . . . . . . . . . . . . . . . . . . . 10

    2.2.1 Betriebssystem/Hardware . . . . . . . . . . . . . . . . . . . . . . . . 102.2.2 Interne Ebene . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 102.2.3 Konzeptionelle Ebene . . . . . . . . . . . . . . . . . . . . . . . . . . 11

    2.2.3.1 Tabellenstruktur . . . . . . . . . . . . . . . . . . . . . . . . 112.2.3.2 Schlussel . . . . . . . . . . . . . . . . . . . . . . . . . . . . 12

    2.2.4 Externe Ebene . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 12

    3 Datenbanken entwickeln 133.1 Vorgehensweise . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 133.2 Grundsatze . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 13

    3.2.1 Keine Redundanz . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 133.2.2 Eindeutigkeit . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 143.2.3 Keine Prozedaten . . . . . . . . . . . . . . . . . . . . . . . . . . . . 14

    3.3 Datenmodelle entwickeln . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 143.3.1 Tabellen erstellen . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 15

    3.4 Die funf Normalformen . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 163.4.1 Die 1. Normalform . . . . . . . . . . . . . . . . . . . . . . . . . . . . 163.4.2 Die 2. Normalform . . . . . . . . . . . . . . . . . . . . . . . . . . . . 173.4.3 Die 3. Normalform . . . . . . . . . . . . . . . . . . . . . . . . . . . . 183.4.4 Die 4. Normalform . . . . . . . . . . . . . . . . . . . . . . . . . . . . 193.4.5 Die 5. Normalform . . . . . . . . . . . . . . . . . . . . . . . . . . . . 203.4.6 Denormalisierung der Tabellen . . . . . . . . . . . . . . . . . . . . . 21

    3.5 Streifendiagramm . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 22

    Christoph Reeg Seite i

  • Inhaltsverzeichnis Inhaltsverzeichnis

    3.6 Das ER-Modell . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 223.7 Relationen erstellen . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 243.8 Datentypen . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 25

    II praktischer Teil SQL 26

    4 SQL benutzen 274.1 MySQL . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 27

    4.1.1 Dateien abarbeiten . . . . . . . . . . . . . . . . . . . . . . . . . . . . 284.1.2 Kommentare . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 29

    5 SQL-Befehle 305.1 CREATE DATABASE . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 305.2 CREATE TABLE . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 315.3 SHOW . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 335.4 DROP TABLE . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 345.5 INSERT INTO . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 345.6 SELECT . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 35

    5.6.1 ORDER BY . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 375.6.2 GROUP BY . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 385.6.3 LIMIT . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 395.6.4 select expression . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 395.6.5 Alias . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 40

    5.6.5.1 Tabellen-Alias . . . . . . . . . . . . . . . . . . . . . . . . . 415.6.5.2 Spalten-Alias . . . . . . . . . . . . . . . . . . . . . . . . . . 41

    5.6.6 where definition . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 425.6.6.1 LIKE . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 465.6.6.2 BETWEEN . . . . . . . . . . . . . . . . . . . . . . . . . . 475.6.6.3 IN . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 48

    5.7 Funktionen . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 505.7.1 Mathematische Funktionen . . . . . . . . . . . . . . . . . . . . . . . 505.7.2 Logische Operatoren . . . . . . . . . . . . . . . . . . . . . . . . . . . 505.7.3 Sonstige Funktionen . . . . . . . . . . . . . . . . . . . . . . . . . . . 505.7.4 Datums-Funktionen . . . . . . . . . . . . . . . . . . . . . . . . . . . 505.7.5 Gruppenfunktionen . . . . . . . . . . . . . . . . . . . . . . . . . . . . 52

    5.8 Joins . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 545.8.1 Equi-Join . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 555.8.2 Self-Join . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 555.8.3 Outer-Join . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 56

    5.9 DELETE FROM . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 585.10 UPDATE . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 595.11 ALTER TABLE . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 59

    6 Tips & Tricks 646.1 zufallige Daten auswahlen . . . . . . . . . . . . . . . . . . . . . . . . . . . . 64

    Christoph Reeg Seite ii

  • Inhaltsverzeichnis Inhaltsverzeichnis

    6.2 Nutzer in MySQL . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 656.3 PHPMyAdmin . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 656.4 Baume in SQL . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 66

    6.4.1 Was ist ein Baum? . . . . . . . . . . . . . . . . . . . . . . . . . . . . 666.4.2 Beispieldaten . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 676.4.3 Baumdarstellung mit Vater-Zeiger . . . . . . . . . . . . . . . . . . . 686.4.4 Nested Set Modell . . . . . . . . . . . . . . . . . . . . . . . . . . . . 68

    6.4.4.1 Loschen . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 736.4.4.2 Einfugen . . . . . . . . . . . . . . . . . . . . . . . . . . . . 75

    6.4.5 Ubungen . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 756.4.5.1 Vater-Zeiger . . . . . . . . . . . . . . . . . . . . . . . . . . 756.4.5.2 Nested Set . . . . . . . . . . . . . . . . . . . . . . . . . . . 75

    6.5 IF-Ausdrucke in SQL . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 766.5.1 Beispiele . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 78

    6.5.1.1 Firma Ausbeuter & Co KG . . . . . . . . . . . . . . . . . . 78

    III Einfuhrung PHP 79

    7 PHP Grundlagen 807.1 Einleitung . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 807.2 Grundbefehle . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 81

    7.2.1 Der echo-Befehl . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 817.2.2 Der print-Befehl . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 827.2.3 Zuweisungen . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 827.2.4 Operatoren . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 83

    7.2.4.1 Arithmetische Operatoren . . . . . . . . . . . . . . . . . . . 837.2.4.2 String-Operatoren . . . . . . . . . . . . . . . . . . . . . . . 837.2.4.3 Bit-Operatoren . . . . . . . . . . . . . . . . . . . . . . . . . 837.2.4.4 Logische Operatoren . . . . . . . . . . . . . . . . . . . . . . 847.2.4.5 Vergleichsoperatoren . . . . . . . . . . . . . . . . . . . . . . 84

    7.2.5 Kommentare . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 847.2.6 Variablen . . . . . . . . . . . . . . . . . . . . . . . . . .