6.1.2 Имена баз данных, таблиц, столбцов, индексы псевдонимы
6.1.2 Имена баз данных, таблиц, столбцов, индексы псевдонимы
Для всех имен баз данных, таблиц, столбцов, индексов и псевдонимов в MySQL
приняты одни и те же правила.
Следует отметить, что эти правила были изменены, начиная с версии MySQL
3.23.6, когда было разрешено брать в одиночные скобки ``' идентификаторы
(имена баз данных, таблиц и столбцов). Двойные скобки `"' тоже допустимы -
при работе в режиме ANSI SQL (see section 1.9.2 Запуск MySQL в режиме ANSI).
Таблица 1
Идентификатор
Таблица 1
Идентификатор
| Максимальная длина строки
Максимальная длина строки
| Допускаемые символы
Допускаемые символы
|
База данных | 64 | Любой символ, допустимый в имени каталога, за исключением `/' или
`.'
|
Таблица | 64 | Любой символ, допустимый в имени файла, за исключением `/' или `.'
|
Столбец | 64 | Все символы
|
Псевдоним | 255 | Все символы
|
Необходимо также учитывать, что не следует использовать символы ASCII(0),
ASCII(255) или кавычки в самом идентификаторе.
Кроме того, если имя идентификатора относится к служебным словам или
содержит специальные символы, необходимо всегда заключать его в одиночные
кавычки при использовании в выражениях:
mysql> SELECT * FROM `select` WHERE `select`.id > 100;
В предыдущих версиях MySQL для имен существовали следующие правила:
-
Имя может состоять из буквенно-цифровых символов установленного в
данное время алфавита и символов `_' and `$'. Тип кодировки по
умолчанию - ISO-8859-1 Latin1, он может быть изменен указанием иного
типа в аргументе параметра --default-character-set mysqld
(see section 4.6.1 Набор символов, применяющийся для записи данных и сортировки).
-
Имя может начинаться с любого допустимого символа, в частности, с
цифры (в этом состоит отличие от правил, принятых во многих других
базах данных). Однако имя не может состоять только из цифр.
-
Не допускается использование в именах символа `.', так как он
применяется для расширения формата имени (посредством чего можно
ссылаться на столбцы - см. в этом же разделе ниже).
Не рекомендуется использовать имена, подобные 1e, так как выражение
вида 1e+1 является неоднозначным. Оно может интерпретироваться и как
выражение 1e + 1, и как число 1e+1.
В MySQL разрешается делать ссылки на столбец, используя любую из следующих
форм:
Таблица 2
Ссылка на столбец
Таблица 2
Ссылка на столбец
| Значение
Значение
|
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 ставят в начале имен таблиц в качестве префикса символ `.'.
| | |