1. Aufbau von Tabellen in MySQL
In MySQL werden Daten in Tabellen in Form von Datensätzen abgespeichert.
Damit eine solche Tabelle identifiziert werden kann besitzen alle
Tabellen einen Namen. Des Weiteren gehören zu einer Tabelle eine Anzahl
von Spaltennamen und den dazugehörigen Spaltentypen. So kann z.B. die
Tabelle News
eine Spalte Datum
vom Typ
DATETIME
enthalten. Somit besitzt jeder Datensatz ein Wert
für die Spalte Datum
der vom Typ DATETIME
ist.
Datum |
---|
2. Typen von Spalten
MySQL unterstützt eine Menge von Spaltentypen. Aus dieser großen Menge
ist es somit möglich den richtigen Spaltentyp zu wählen der den
Anforderungen der Spalte entspricht. Eine Zahl wird daher am besten in
einem INT
Feld gespeichert, ein längerer Text in einem
TEXT
Feld. Eine komplette Liste von Spaltentypen ist im
MySQL-Handbuch im Kapitel Chapter 9. Data Types
zu finden. Hier eine kleine Auswahl von Spaltentypen.
-
INT - Dieser Spaltentyp wird verwendet um Zahlen zu speichern. Datensätze besitzen oft eine Identifikationsspalte mit den Namen
ID
. Solche Spalten besitzen zusätzlich die EigenschaftenPRIMARY KEY
(damit die Zahl nicht doppelt verwendet wird und einen Datensatz eindeutig identifiziert) undAUTO_INCREMENT
(damit die nächste Zahl für einen neuen Datensatz automatisch generiert wird). -
VARCHAR(n) - Dieser Spaltentyp wird für sehr kleine Strings verwendet. Der Parameter
n
, der je nach mysql version kleiner als 256 oder 65.536 sein muss, gibt die maximale Stringgröße an. In so einem Typ können z.B. Benutzernamen und Emailadressen gespeichert werden. -
DATETIME - Wird verwendet um ein Zeitpunkt inklusive Datum anzugeben. Für ein Newssystem kann in so einem Feld der Zeitpunkt gespeichert werden wann der Newsbeitrag hinzugefügt wurde.
-
TEXT - Wird verwendet um Texte zu speichern die Länger als 255 Zeichen sind. Newsbeiträge werden somit in solch einen Feld gespeichert.
3. Erstellen von MySQL-Tabellen
Um Tabellen in MySQL zu erstellen wird der SQL-Befehl CREATE TABLE
verwendet.
Dabei wird zuerst ein Tabellenname angegeben. Hierbei darf der Tabellennamen nicht aus
einem MySQL Schlüsselwort
bestehen. Danach folgt in Klammern eine Aufzählen von Spalten, die untereinander mit einem
Kommata getrennt sind. Jede Spaltenangabe besteht dabei aus den Namen und den Typ der
Spalte, kann aber auch zusätzliche Optionen wie NOT NULL
, PRIMARY KEY
und AUTO_INCREMENT
besitzen. Wie jeder SQL-Befehl muss auch ein CREATE TABLE
mit einem Semikolon abgeschlossen werden. Ein Beispielquery für das erstellen einer
Tabelle könnte wie folgt aussehen.
CREATE TABLE News ( ID INT AUTO_INCREMENT PRIMARY KEY, Autor VARCHAR(30) NOT NULL, Titel VARCHAR(50) NOT NULL, Inhalt TEXT NOT NULL, Datum DATETIME NOT NULL );
Beachtet dass es sich hierbei um einen SQL-Befehl handelt. Er kann so nicht direkt im PHP-Code verwendet werden. Um ein Befehl an eine Datenbank zu senden müssen entsprechende Funktionen wie mysql_query oder mysqli_query verwendet werden.
Die NOT NULL
-Angaben bewirken dass ein Datensatz an dieser
Stelle ein Wert besitzen muss. Dieser Query erstellt dabei folgende Tabelle.
ID | Autor | Titel | Inhalt | Datum |
---|
Da die Tabelle gerade erst erstellt wurde existieren entsprechend auch noch keine Datensätze.
Achtet darauf welche Groß- und Kleinschreibung ihr für eure Tabellen und Spaltennamen verwendet. Das MySQL-Handbuch schreibt dazu folgendes.
Each table within a database corresponds to at least one file within the database directory (and possibly more, depending on the storage engine). Triggers also correspond to files. Consequently, the case sensitivity of the underlying operating system plays a part in the case sensitivity of database and table names. This means database, table, and trigger names are not case sensitive in Windows, but are case sensitive in most varieties of Unix.
Daher empfiehlt das MySQL-Handbuch stehts die gleiche Schreibweise für Tabellen und Spalten in SQL-Queries zu verwenden (wie z.B. immer Kleinbuchstaben).
[...] To avoid problems caused by such differences, it is best to adopt a consistent convention, such as always creating and referring to databases and tables using lowercase names. This convention is recommended for maximum portability and ease of use.