Namen von Datenbanken, Tabellen, Indizes, Spalten und Aliasen sind Bezeichner. Dieser Abschnitt beschreibt die für Bezeichner in MySQL zulässige Syntax.
Die folgende Tabelle beschreibt die Maximallänge und die erlaubten Zeichen für jeden Bezeichnertyp.
Bezeichner | Maximale Länge (in Byte) | Erlaubte Zeichen |
Datenbank | 64 | Jedes Zeichen, das in einem Verzeichnisnamen zulässig ist. Ausgenommen
sind ‘/ ’,
‘\ ’ und
‘. ’ |
Tabelle | 64 | Jedes Zeichen, das in einem Dateinamen zulässig ist. Ausgenommen sind
‘/ ’,
‘\ ’ und
‘. ’ |
Spalte | 64 | Alle Zeichen |
Index | 64 | Alle Zeichen |
Alias | 255 | Alle Zeichen |
Neben den in der Tabelle genannten Einschränkungen dürfen Bezeichner weder das ASCII-Zeichen 0 noch ein Byte mit dem Wert 255 enthalten. Namen von Datenbanken, Tabellen und Spalten sollten nicht auf Leerzeichen enden. Die Verwendung von Anführungszeichen in Bezeichnern ist zulässig, sollte allerdings möglichst vermieden werden.
Bezeichner werden im Unicode-Format (UTF-8) gespeichert. Dies gilt
für Bezeichner in Tabellendefinitionen, die in
.frm
-Dateien gespeichert sind, ebenso wie
für solche in den Grant-Tabellen der Datenbank
mysql
. Die Länge der String-Spalten in den
Grant-Tabellen (und in allen anderen Tabellen) in MySQL
5.1 wird als Anzahl von Zeichen angegeben. Das
bedeutet, dass Sie (anders als bei älteren MySQL-Versionen)
Multibytezeichen verwenden können, ohne die Anzahl der Zeichen
verringern zu müssen, die für in diesen Spalten gespeicherte
Werte erlaubt sind.
Ein Bezeichner kann mit und ohne Anführungszeichen geschrieben
werden. Wenn ein Bezeichner ein reserviertes Wort ist oder
Sonderzeichen enthält, müssen sie ihn bei
jeder Referenzierung in Anführungszeichen setzen. (Ausnahme: Ein
Wort, das auf einen Punkt in einem qualifizierten Namen folgt,
muss ein Bezeichner sein; es muss also auch dann nicht in
Anführungszeichen gesetzt werden, wenn es sich um ein
reserviertes Wort handelt.) Eine Liste reservierter Wörter finden
Sie unter Abschnitt 9.5, „Ist MySQL pingelig hinsichtlich reservierter Wörter?“. Als Sonderzeichen
werden ‘_
’ und
‘$
’ sowie alle nicht
alphanumerischen Zeichen des aktuellen Zeichensatzes betrachtet.
Das Anführungszeichen für Bezeichner ist der Backtick
(‘`
’):
mysql> SELECT * FROM `select` WHERE `select`.id > 100;
Wenn der SQL-Modus ANSI_QUOTES
aktiviert ist,
können Sie Bezeichner auch in doppelte Anführungszeichen setzen:
mysql>CREATE TABLE "test" (col INT);
ERROR 1064: You have an error in your SQL syntax. (...) mysql>SET sql_mode='ANSI_QUOTES';
mysql>CREATE TABLE "test" (col INT);
Query OK, 0 rows affected (0.00 sec)
Hinweis: Da der Server bei aktiviertem
ANSI_QUOTES
-Modus Strings in doppelten
Anführungszeichen in jedem Fall als Bezeichner interpretiert,
müssen String-Literale in einfache Anführungszeichen gesetzt
werden; doppelte Anführungszeichen dürfen in diesem Fall nicht
für String-Literale verwendet werden.
Wie der SQL-Modus des Servers gesteuert wird, entnehmen Sie Abschnitt 5.2.5, „Der SQL-Modus des Servers“.
Anführungszeichen für Bezeichner können in einem Bezeichner
enthalten sein, wenn Sie den Bezeichner in
Anführungszeichen setzen. Wenn das im Bezeichner
enthaltene Zeichen dasselbe ist, mit dem auch der Bezeichner
selbst umschlossen ist, dann müssen Sie das Zeichen im Bezeichner
verdoppeln. Die folgende Anweisung erstellt eine Tabelle namens
a`b
, die eine Spalte namens
c"d
enthält:
mysql> CREATE TABLE `a``b` (`c"d` INT);
Es wird davon abgeraten, Namen des Formats
oder
M
e
(wie etwa M
eN
1e
oder 2e2
) zu
verwenden, weil ein Ausdruck wie 1e+3
nicht
eindeutig ist: Abhängig vom Kontext kann er als Ausdruck
1e + 3
oder als Zahl 1e+3
interpretiert werden.
Seien Sie vorsichtig, wenn Sie mit MD5()
Tabellennamen erstellen, da hiermit Namen in unzulässigen oder
mehrdeutigen Formaten (so, wie gerade beschrieben) erzeugt werden
können.
Dies ist eine Übersetzung des MySQL-Referenzhandbuchs, das sich auf dev.mysql.com befindet. Das ursprüngliche Referenzhandbuch ist auf Englisch, und diese Übersetzung ist nicht notwendigerweise so aktuell wie die englische Ausgabe. Das vorliegende deutschsprachige Handbuch behandelt MySQL bis zur Version 5.1.