Для всех имен баз данных, таблиц, столбцов, индексов и псевдонимов в MySQL приняты одни и те же правила.
Следует отметить, что эти правила были изменены, начиная с версии MySQL
3.23.6, когда было разрешено брать в одиночные скобки '`
' идентификаторы
(имена баз данных, таблиц и столбцов). Двойные скобки '"
' тоже допустимы -
при работе в режиме ANSI SQL (see Раздел 1.9.2, «Запуск MySQL в режиме ANSI»).
Идентификатор | Максимальная длина строки | Допускаемые символы |
База данных | 64 | Любой символ, допустимый в имени каталога, за исключением '/ ', '\ ' или
'. '
|
Таблица | 64 | Любой символ, допустимый в имени файла, за исключением '/ ' или '. '
|
Столбец | 64 | Все символы |
Псевдоним | 255 | Все символы |
Необходимо также учитывать, что не следует использовать символы ASCII(0)
,
ASCII(255)
или кавычки в самом идентификаторе.
Кроме того, если имя идентификатора относится к служебным словам или
содержит специальные символы, необходимо всегда заключать его в обратные
кавычки `
при использовании в выражениях:
mysql> SELECT * FROM `select` WHERE `select`.id > 100;
See Раздел 6.1.7, «``Придирчив'' ли MySQL к зарезервированным словам?».
В предыдущих версиях MySQL (до 3.23.6) для имен существовали следующие правила:
Имя может состоять из буквенно-цифровых символов установленного в данное время алфавита и символов '
_
' and '$
'. Тип кодировки по умолчанию - ISO-8859-1 Latin1, он может быть изменен указанием иного типа в аргументе параметра--default-character-set
mysqld
(see Раздел 4.6.1, «Набор символов, применяющийся для записи данных и сортировки»).Имя может начинаться с любого допустимого символа, в частности, с цифры (в этом состоит отличие от правил, принятых во многих других базах данных). Однако имя не может состоять только из цифр.
Не допускается использование в именах символа '
.
', так как он применяется для расширения формата имени (посредством чего можно ссылаться на столбцы - см. в этом же разделе ниже).
Не рекомендуется использовать имена, подобные 1e
, так как выражение
вида 1e+1
является неоднозначным. Оно может интерпретироваться и как
выражение 1e + 1
, и как число 1e+1
.
В MySQL разрешается делать ссылки на столбец, используя любую из следующих форм:
Ссылка на столбец | Значение |
col_name |
Столбец col_name из любой используемой в запросе таблицы содержит столбец с данным именем.
|
tbl_name.col_name |
Столбец col_name из таблицы tbl_name текущей базы данных.
|
db_name.tbl_name.col_name |
Столбец col_name из таблицы tbl_name базы данных db_name . Эта форма доступна в версии MySQL 3.22 или более поздних.
|
`column_name` |
Имя столбца является ключевым словом или содержит специальные символы. |
Нет необходимости указывать префикс tbl_name
или db_name.tbl_name
в ссылке
на столбец в каком-либо утверждении, если эта ссылка не будет
неоднозначной. Например, предположим, что каждая из таблиц t1
и t2
содержит столбец c
, по которому производится выборка командой SELECT
,
использующей обе таблицы - и t1
, и t2
. В этом случае имя столбца
c
является неоднозначным, так как оно не уникально для таблиц, указанных в
команде, поэтому необходимо уточнить, какая именно таблица имеется в виду,
конкретизировав - t1.c
или t2.c
. Аналогично, при выборке данных из таблицы
t
в базе данных db1
и из таблицы t
в базе данных db2
необходимо ссылаться
на столбцы в этих таблицах как на db1.t.col_name
и db2.t.col_name
.
Выражение .tbl_name
означает таблицу tbl_name
в текущей базе данных.
Данный синтаксис принят для совместимости с ODBC, так как некоторые
программы ODBC ставят в начале имен таблиц в качестве префикса символ '.
'.