Author: Progman, zuletzt bearbeitet von progman @ 2004/08/08 20:19:04
Bitte beachten Sie, dass die Tutorialkapitel zusammenhängen. Wenn sie direkt auf ein Kapitel verlinkt wurden müssen Sie gegebenenfalls die vorherigen Kapitel auch lesen. Achten Sie beim lesen darauf, dass Sie kein Kapitel überspringen.
Aufbau einer MySQL-Tabelle
- Name der Tabelle
- Spalten definieren
- Typ einer Spalte
- Spalteneinstellungen
- Beispiel News-Tabelle
- Schlüsselwörter in MySQL
- Tabellen mit PHPMyAdmin anlegen
1. Name der Tabelle
Wenn man dann in einer gewählten Datenbank arbeitet kann man dort dann die Tabellen erstellen, die man haben möchte. Dabei muss man sich erstmal einen aussagekräftigen Namen der Tabelle überlegen. Wenn man z.B. Newsbeiträge in eine Tabelle speichern möchte eignet sich logischerweise der Name "News".
Um eine Tabelle zu erstellen benutzt man den MySQL-Befehl CREATE TABLE.
CREATE TABLE News ( Spaltendefinition );
Achtung - Dies ist ein MySQL Befehl. Versucht nicht diesen Code direkt in eurem PHP Script zu schreiben. Dies ist ein MySQL-Befehl und muss entsprechend mit mysql_query gesendet werden.
Jeder MySQL-Befehl muss wie in PHP mit einem Semikolon beendet werden. In MySQL ist es auch möglich, an bestimmten Stellen Zeilenumbrüche zu erstellen, wenn sich dadurch die Lesbarkeit erhöht. Den CREATE-Befehl kann man etwas umschreiben.
CREATE TABLE News ( Spaltendefinitionen );
2. Spalten definieren
Eine Tabelle ohne Spalten bringt nix. Bei der Wahl der Spalten müssen wir uns mehrere Gedanken machen wie diese Spalte aufgebaut werden soll.
-
Name - Jede Spalte muss einen Namen haben. Dieser Name sollte natürlich eindeutig sein und nicht einfach mit "Spalte1" durchnummeriert werden.
-
Typ - Beim Anlegen einer Spalte muss man sich überlegen was man in diese Spalte speichern möchte. Anhand dieser Werte sollte man einen geeigneten Spaltentyp nehmen. Dies ist z.B. wichtig wenn man Ausgaben nach Spalten sortieren möchte, aber auch wenn man mit den Spalten rechnen will.
-
Spalteninfos - Bei jeder Spalte kann man noch ein paar Infos angeben. Dies macht man z.B. bei einer Spalte ID.
Wenn eine Tabelle mehrere Spalten haben soll muss man die Spaltendefinitionen mit einem Komma trennen.
CREATE TABLE News ( Spaltendefinition1, Spaltendefinition2, Spaltendefinition3, ... );
Für eine bessere Übersicht sollte man nach jeder Spaltendefinition ein Zeilenumbruch machen.
CREATE TABLE News ( Spaltendefinition1, Spaltendefinition2, Spaltendefinition3, ... );
Eine Spaltendefinition besteht aus den 3 besprochenden Teilen und müssen auch in dieser Reihenfolge angegeben werden. Die Spalteninfos können für eine Spalte weggelassen werden, wenn diese Spalte keine speziellen Einstellung haben soll.
CREATE TABLE News ( Name1 Typ1, Name2 Typ2 spalteninfo, Name3 Typ3, ... );
3. Typ einer Spalte
Es gibt mehrere Typen die eine Spalte besitzen kann. Hier ist eine Aufzaehlung von ein paar Spaltentypen.
-
INT - In diese Spalte kann man eine Zahl Speichern die von -2147483648 bis 2147483647. Für seine Homepage braucht man jedoch bei weitem nicht so große Zahlen.
-
TEXT - Wenn man einen etwas größeren Text speichern möchte, muss man diesen Spaltentyp nehmen. Eine Spalte von diesem Typ kann dann ca. 65000 Zeichen Speichern. 65000 könnte etwas klein klingen, aber das reicht dicke für ein Newsbeitrag.
-
DATETIME - Bei einem Newsscript ist es üblich auch das Datum zu speichern. Dies macht man in eine Spalte mit diesem Typ. MySQL kennt eine Menge von Datum und Zeit Funktionen, die das Arbeiten mit Daten (=mehrzahl von Datum) um einiges erleichtern.
-
VARCHAR(x) - Dieser Spaltentyp ist für sehr kleine Strings gedacht. An der Stelle 'x' muss man eine Zahl zwischen 1 und 255 angeben. Diese Zahl gibt an, wieviele Zeichen man in diesem Feld speichern möchte. In so einem Feld speichert man z.B. den Titel einer News oder eine Emailadresse. Da braucht man keine TEXT-Spalte, wo man 65000 Zeichen speichern kann. Das wäre Overkill.
Es gibt noch weitere Spaltentypen. Eine Liste von Spaltentypen findet man im MySQL-Manual Eintrag 6.2 Column Types .
4. Spalteneinstellungen
Es gibt diverse Spalteneinstellungen, die man auf eine Spalte legen kann. Wichtig ist aber eignetlich nur die Einstellung AUTO_INCREMENT. Diese Einstellung geht nur beim Spaltentyp INT. Wenn man einen neuen Datensatz in die Tabelle hinzufügt, wird in dieser Spalte eine neue Zahl erstellt. Diese Zahl nennt man überlicherweise ID und dient dazu einen Datensatz eindeutig zu identifizieren. Später kann man sagen "Lösch die News mit der ID 5". Dies ist besser als wenn man sagen würde "Lösch die News, wo der Text mit einem a anfängt". Denn dann würde man vielleicht mehrere News löschen, obwohl man ja nur eine News löschen wollte. "Lösch die News, wo der Text mit einem a anfängt" ist natürlich ein schlechtes Kriterium um eine News auszuwählen. Es soll aber nur der Sinn einer ID erklärt werden. Dies kennt ihr von ICQ-Nummern oder von der Q-Account-Nummer (/msg Q whoami).
Wenn eine Spalte als AUTO_INCREMENT betrieben werden soll muss man sie als Primärschlüssel kennzeichnen. Warum ist erstmal unwichtig. Um eine Spalte als Primärschlüssel zu definieren schreibt man in der Spalteneinstellung PRIMARY KEY (diesmal ohne Unterstrich).
5. Beispiel News-Tabelle
Für eine Newssystem (jetzt erstmal ohne Kommentarfunktion und Adminbereich) müssen wir eine Tabelle News anlegen. In eine Newstabelle wollen wir folgende Daten speichern: Titel, Inhalt, Autor und Datum. Das sind schonmal 4 Spalten für die Tabelle News. Wir werden aber noch eine ID-Spalte hinzufügen, die die Newsbeiträge automatisch durchnummeriert.
CREATE TABLE News ( ID, Titel, Inhalt, Datum, Autor );
Jetzt müssen wir uns als nächstes über die Spaltentypen Gedanken machen. Die Spalte ID muss eine Zahl sein, damit MySQL da auch eine ID erstellen kann. Titel sollte vom Typ VARCHAR sein, mit - sagen wir mal - 60 Zeichen. Der Inhalt muss den Typ TEXT haben, denn darin wollen wir ja viel Text speichern. VARCHAR(255) reicht da bei weitem nicht. Datum sollte vom Typ DATETIME sein, da wir da das Datum der News speichern wollen. Und bei Autor nehmen wir den Typ VARCHAR mit 15 Zeichen. Größere Nicknames sind mir nicht bekannt ;).
CREATE TABLE News ( ID INT, Titel VARCHAR(60), Inhalt TEXT, Datum DATETIME, Autor VARCHAR(15) );
Da die Spalte ID auch wirklich eine ID sein soll, also eine fortlaufende Nummer haben soll, müssen wir sie mit der Spalteneigenschaft AUTO_INCREMENT und somit auch PRIMARY KEY versehen.
CREATE TABLE News ( ID INT AUTO_INCREMENT PRIMARY KEY, Titel VARCHAR(60), Inhalt TEXT, Datum DATETIME, Autor VARCHAR(15) );
Diesen Query kann man nun mit mysql_query zur Datenbank schicken.
Solche MySQL-Querys, die eine Tabelle erstellen, braucht man eigentlich nicht in deinen Scripten. Man braucht sie nur wenn man ein Script für andere erstellt und diese dann eine install.php aufrufen, die dann ein Script installieren. Normale Webmaster benutzten PHPMyAdmin, wenn sie eine Tabelle erstellen/bearbeiten/löschen wollen.
6. Schlüsselwörter in MySQL
In MySQL kann man nicht jeden Namen für Tabellen oder Spalten benutzen. Man kann z.B. nicht Text als Spaltennamen nehmen, weil TEXT Teil der MySQL-Sprache ist. Es gibt eine ganze Menge von MySQL Schlüsselwörtern. Im MySQL Manual unter 6.1.7 Is MySQL Picky About Reserved Words? findet man eine Liste der Wörter die man nicht ohne weiteres als Spaltennamen benutzen darf. ALTER darf man z.B. nicht benutzen, was aber ein beliebter Fehler ist, wenn man das Alter von einem Benutzer speichern möchte.
7. Tabellen mit PHPMyAdmin anlegen
Das PHPMyAdmin Projekt ist ein einfaches MySQL-Datenbankadminitrationsprogramm. Nach dem installieren und einstellen (README und INSTALL Datei lesen) sieht man nach dem öffnen vom PHPMyAdmin ein Frameset. Links sind die Tabellen und rechts das Administrationspanel. Wenn man eine neue Tabelle erstellen möchte muss man links zuerst auf die Datenbank klicken, in der man eine Tabelle erstellen möchte. Danach erscheint rechts im Frame eine Liste der schon vorhandenen Tabellen und da drunter ein paar Formulare. Dort kann man dann eine neue Tabelle erstellen. Dort gibt man z.B. den Namen News ein und die Anzahl der Spalten, also z.B. 5. Danach sieht man 5 identische Zeilen. Vorne muss man den Namen eingeben, dann den Typ, bei VARCHAR muss man noch eine Zahl angeben. Bei der Spalte ID muss man noch das Feld Extra auf AUTO_INCREMENT und weiter hinten auf Primärschlüssel klicken. Nach den Eingaben erstellt man die Tabelle indem man auf den Button Speichern klickt.
Fragen zum aktuellen Thema
- Mit welchem MySQL-Befehl wird eine Tabelle erstellt?
- Was muss man bei der Syntax beachten, wenn eine Tabelle mehrere Spalten haben soll?
- Mit welchem MySQL-Befehl wird eine Tabelle erstellt?
-
Mit dem Befehl CREATE TABLE kann man eine neue Tabelle erstellen. Die Syntax von CREATE ist riesig. Die genaue Syntax findet man im MySQL-Handbuch im Kapitel 6.5.3 CREATE TABLE Syntax.
- Was muss man bei der Syntax beachten, wenn eine Tabelle mehrere Spalten haben soll?
-
Mehrere Spaltendefinitionen in einem CREATE TABLE Befehl müssen mit einem Komma getrennt werden. Zur besseren Übersicht sollte man nach jeder Spaltendefinition ein Zeilenumbruch machen.