[+/-]
Certain objects within MySQL, including database, table, index, column, alias, view, stored procedure, partition, and other object names are known as identifiers. This section describes the allowable syntax for identifiers in MySQL. Section 8.2.2, “Identifier Case Sensitivity”, describes which types of identifiers are case sensitive and under what conditions.
An identifier may be quoted or unquoted. If an identifier contains
special characters or is a reserved word, you
must quote it whenever you refer to it. The
set of alphanumeric characters from the current character set,
“_”, and
“$” are not special. Reserved
words are listed at Section 8.3, “Reserved Words”. (Exception:
A reserved word that follows a period in a qualified name must be
an identifier, so it need not be quoted.)
The identifier quote character is the backtick
(“`”):
mysql> SELECT * FROM `select` WHERE `select`.id > 100;
If the ANSI_QUOTES SQL mode is enabled, it is
also allowable to quote identifiers within double quotes:
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)
The ANSI_QUOTES mode causes the server to
interpret double-quoted strings as identifiers. Consequently, when
this mode is enabled, string literals must be enclosed within
single quotes. They cannot be enclosed within double quotes. The
server SQL mode is controlled as described in
Section 5.1.7, “SQL Modes”.
Identifier quote characters can be included within an identifier
if you quote the identifier. If the character to be included
within the identifier is the same as that used to quote the
identifier itself, then you need to double the character. The
following statement creates a table named a`b
that contains a column named c"d:
mysql> CREATE TABLE `a``b` (`c"d` INT);
Aliases may be quoted either as identifiers or as strings:
mysql> SELECT 1 AS `one`, 2 AS 'two';
+-----+-----+
| one | two |
+-----+-----+
| 1 | 2 |
+-----+-----+
Identifiers may begin with a digit but unless quoted may not consist solely of digits.
It is recommended that you do not use names of the form
or
Me,
where MeNM and
N are integers. For example, avoid
using 1e or 2e2 as
identifiers, because an expression such as 1e+3
is ambiguous. Depending on context, it might be interpreted as the
expression 1e + 3 or as the number
1e+3.
Be careful when using MD5() to
produce table names because it can produce names in illegal or
ambiguous formats such as those just described.
A user variable cannot be used directly in an SQL statement as an identifier or as part of an identifier. See Section 8.4, “User-Defined Variables”, for more information and examples of workarounds.
There are some restrictions on the characters that may appear in identifiers:
No identifier can contain ASCII 0 (0x00) or
a byte with a value of 255.
Database, table, and column names should not end with space characters.
Database and table names cannot contain
“/”,
“\”,
“.”, or characters that are
not allowed in filenames.
The following table describes the maximum length for each type of identifier.
| Identifier | Maximum Length (characters) |
| Database | 64 |
| Table | 64 |
| Column | 64 |
| Index | 64 |
| Stored Function or Procedure | 64 |
| Trigger | 64 |
| View | 64 |
| Alias | 255 |
Identifiers are stored using Unicode (UTF-8). This applies to
identifiers in table definitions that are stored in
.frm files and to identifiers stored in the
grant tables in the mysql database. The sizes
of the identifier string columns in the grant tables are measured
in characters. You can use multi-byte characters without reducing
the number of characters allowed for values stored in these
columns, something not true prior to MySQL 4.1. The allowable
Unicode characters are those in the Basic Multilingual Plane
(BMP). Supplementary characters are not allowed.

User Comments
Add your own comment.