Tabellen erstellen mit phpMyAdmin
Im vorherigem Artikel haben wir bereits eine Tabelle für unsere User erstellt. In diesem Artikel werden die Auswahlmöglichkeiten die ihr beim Erstellen einer Tabelle habt nochmal genauer erläutert.
Inhaltsverzeichnis
Name
Für jede Spalte müsst ihr einen Namen spezifizieren. Ihr seid beim Auswählen des Namens recht frei, diese dürfen allerdings keine Leerzeichen enthalten (nutzt stattdessen den Unterstrich _). Ebenso darf keine Zahl am Anfang des Namens stehen. Ein Minus ist ebenfalls problematisch, dort lieber den Unterstrich verwenden.
Auch solltet ihr reservierte Namen vermeiden. Eine Liste findet ihr hier.
Typ
Der Spalten-Typ definiert welche Art von Daten ihr in der Spalte abspeichern möchtet, sind dies beispielsweise Textdaten oder doch Zahlen. Nachfolgend eine Tabelle mit den wichtigsten Spalten-Typen in MySQL. Es gibt noch viele mehr, die aber eher selten genutzt werden.
Typ | Beschreibung |
---|---|
TINYINT | Kann Zahlen zwischen -128 bis 127, bzw. unsigned 0 bis 255 abspeichern. Oft nützlich im boolean-Werte (true/false) abzuspeichern. |
INT | Kann Zahlen zwischen -2147483648 bis 2147483647, bzw. unsigned 0 bis 4294967295 abspeichern. |
DOUBLE | Fließkommazahlen. |
VARCHAR | Texte zwischen 0 und 65.535 Zeichen (vor MySQL 5.0.3 nur maximal 255 Zeichen). |
TEXT | Texte bis 65.535 Zeichen (64 Kilobytes). Angabe der Länge entfällt. |
LONGTEXT | Texte zwischen bis 16 Milliarden Zeichen (4 Gigabytes). |
BLOB | BLOB (Binary Large Object) zum Speichern von Binärdaten, z.B. Bilder, bis 64 Kilobytes. |
LONGBLOB | BLOB (Binary Large Object) zum Speichern von Binärdaten, z.B. Bilder, bis 4 Gigabyte. |
DATE | Abspeichern eines Datums im Format YYYY-MM-DD. |
TIME | Abspeichern einer Uhrzeit im Format HH:MM:SS. |
DATETIME/TIMESTAMP | Abspeichern eines Datums und einer Uhrzeit im Format 'YYY-MM-DD HH:MM:SS' (weitere Infos). |
ENUM | Spalte für enumerations (Auszählungen). Ihr könnt spezifizieren, welche Werte die Spalte nur annehmen darf. |
Länge
Spalten könnt ihr eine maximale Länge zuweisen. Im obigen Beispiel darf unsere E-Mail-Adresse nur maximal 250 Zeichen besitzen. Diese Begrenzung kann nützlich sein, damit euch von einem Spammer nicht zu lange Einträge in die Datenbank geschrieben wird, z.B. eine Email-Adresse mit Millionen von Zeichen.
Den Wert für Länge solltet ihr aber auch nicht zu klein Wählen um nicht eure User zu verärgern. Welchen Wert ihr genau wählt ist meistens nicht entscheidend, also wählt einen ausreichend großen Wert.
Standard
Ihr könnt Felder einen Standard-Wert zuweisen. Wenn ihr neue Datensätze erstellt und kein Wert für diese Spalte angegeben wurde, dann wird der entsprechende Standard-Wert gewählt. Falls ihr den Eintrag Wie definiert: auswählt, könnt ihr den Standard-Wert frei bestimmen, für int-Felder z.B. eine beliebige Zahl auswählen oder für varchar/text-Felder einen beliebigen String.
Ebenfalls könnt ihr, sofern ihr später den Hacken bei Null gesetzt habt, noch als Standardwert Null auswählen.
Für DATETIME- und TIMESTAMP-Felder lässt sich ebenfalls als Standardwert CURRENT_TIMESTAMP auswählen. Hierbei wird das aktuelle Datum und die aktuelle Uhrzeit eingetragen, wenn ein neuer Datensatz hinzugefügt wird. Dies ist insbesondere nützlich, um völlig automatisiert zu protokollieren, wann der Datensatz erstellt wurde. Bei manch älteren MySQL-Versionen kann CURRENT_TIMESTAMP nur für eine Spalte der Tabelle ausgewählt werden.
Kollation
Mittels Kollation könnt ihr den Zeichensatz für eine Textspalte auswählen. Diesen Eintrag könnt ihr fast immer leer lassen.
Attribute
Manche Spalten besitzen noch zusätzliche Attribute. Bei int-Spalten könnt ihr z.B. unsigned auswählen. Dadurch können in dieser Spalte keine negativen Werte mehr abgespeichert werden. Bei TIMESTAMP könnt ihr als Attribut on update CURRENT_TIMESTAMP auswählen. Dadurch wird bei jeder Aktualisierung des Datensatz der aktuelle Zeitstempel (Datum+Uhrzeit) in dieses Feld geschrieben.
Null
Null ist, genauso wie in PHP, ein spezieller Wert der einen leeren Eintrag darstellt. Wählt ihr dort die Checkbox, so erlaubt ihr null-Wert in eurer Spalte. Ein null-Wert ist etwas anderes als ein leerer String und ihr könnt damit unterscheiden, ob z.B. ein leerer String "" eingetragen wurde oder überhaupt kein Wert.
Index
Ein Index wird verwendet, um Einträge schneller in der Tabelle zu suchen und zu finden. Es empfiehlt sich für die id stets primary auszuwählen. Im Artikel Privat: Datenbankdesign für Fortgeschrittene gehen wir nochmal genauer auf das Thema index ein und wann es sich empfiehlt einen Index zu setzen. Für kleine Datenbanken mit bis zu 100.000 Einträgen ist es meistens überhaupt kein Problem keine weiteren Indices (außer primary für id) zu setzen.
A_I (auto increment)
Mittels auto increment werden die Werte automatisch hochgezählt. Fast immer setzt man für das id-Feld ein auto increment. So werden die ids dann aufsteigend vergeben, sprich, der erste Eintrag erhält die ID 1, der zweite Eintrag die ID 2 usw.
Tabellenformat
Unterhalb der Einstellungen für die verschiedenen Spalten findet ihr noch die Möglichkeit ein Tabellenformat auszuwählen. Grob gesprochen definiert dies, wie MySQL die Daten auf eurer Festplatte abspeichern soll. Gängig sind zwei Formate: MyISAM und InnoDB. MyISAM ist das ältere Format und bei älteren MySQL-Versionen, vor 5.5, ist dies noch als Standard ausgewählt. InnoDB bietet aber deutlich mehr Funktionen gegenüber MyISAM, deswegen solltet ihr sofern möglich immer InnoDB wählen.
Weitere Einstellungsmöglichkeiten
Dies waren die wichtigsten Einstellungsmöglichkeiten beim Erstellen einer neuen Tabelle. phpMyAdmin zeugt euch (je nach phpMyAdmin- und MySQL-Version) möglicherweise noch ein paar weitere Optionen an, aber die könnt ihr gerne ignorieren.
Autor: Nils Reimers