Spec-Zone .ru
спецификации, руководства, описания, API

9.2. Имена объектов схемы

9.2.1. Спецификаторы идентификатора
9.2.2. Чувствительность к регистру идентификатора
9.2.3. Отображение Идентификаторов к Именам файлов
9.2.4. Парсинг Имени функции и Разрешение

Определенные объекты в пределах MySQL, включая базу данных, таблицу, индексируют, столбец, псевдоним, представление, хранимая процедура, раздел, табличная область, и другие имена объектов известны как идентификаторы. Этот раздел описывает допустимый синтаксис для идентификаторов в MySQL. Раздел 9.2.2, "Чувствительность к регистру Идентификатора", описывает, какие типы идентификаторов являются чувствительными к регистру и при каких условиях.

Идентификатор может быть заключен в кавычки или закрывал кавычки. Если идентификатор содержит специальные символы или является зарезервированным словом, следует заключить его в кавычки всякий раз, когда Вы обращаетесь к этому. (Исключение: зарезервированное слово, которое следует за периодом на полностью определенное имя, должно быть идентификатором, таким образом, оно не должно быть заключено в кавычки.) Зарезервированные слова перечисляются в Разделе 9.3, "Зарезервированных словах".

Идентификаторы преобразовываются в Unicode внутренне. Они могут содержать эти символы:

Символ кавычки идентификатора является обратной галочкой ("`"):

mysql> SELECT * FROM `select` WHERE `select`.id >
        100;

Если ANSI_QUOTES Режим SQL включается, также допустимо заключить идентификаторы в кавычки в пределах двойных кавычек:

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)

ANSI_QUOTES режим заставляет сервер интерпретировать двойным образом заключенные в кавычки строки как идентификаторы. Следовательно, когда этот режим включается, строковые литералы должны быть включены в пределах единственных кавычек. Они не могут быть включены в пределах двойных кавычек. Режимом SQL сервера управляют как описано в Разделе 5.1.7, "Режимы SQL Сервера".

Символы кавычек идентификатора могут быть включены в пределах идентификатора, если Вы заключаете идентификатор в кавычки. Если символ, который будет включен в пределах идентификатора, является тем же самым, поскольку это имело обыкновение заключать идентификатор в кавычки непосредственно, то Вы должны удвоить символ. Следующий оператор составляет названную таблицу a`b это содержит названный столбец c"d:

mysql> CREATE TABLE `a``b` (`c"d`
        INT);

В списке выборки запроса заключенный в кавычки псевдоним столбца может быть определен, используя идентификатор или строковые символы заключения в кавычки:

mysql> SELECT 1 AS `one`, 2 AS 'two';+-----+-----+| one | two |+-----+-----+|   1 |   2 |+-----+-----+

В другом месте в операторе, заключенные в кавычки ссылки на псевдоним должны использовать заключение в кавычки идентификатора, или ссылка обрабатывается как строковый литерал.

Рекомендуется, чтобы Вы не использовали имена, которые начинаются Me или MeN, где M и N целые числа. Например, избегать использования 1e как идентификатор, потому что выражение такой как 1e+3 неоднозначно. В зависимости от контекста это могло бы быть интерпретировано как выражение 1e + 3 или как число 1e+3.

Будьте осторожны при использовании MD5() произвести имена таблиц, потому что это может произвести имена в недопустимых или неоднозначных форматах, таких как только описанные.

Пользовательская переменная не может использоваться непосредственно в SQL-операторе как идентификатор или как часть идентификатора. См. Раздел 9.4, "Определяемые пользователем Переменные", для получения дополнительной информации и примеры обходных решений.

Специальные символы на имена базы данных и имена таблиц кодируются на соответствующие имена файловой системы как описано в Разделе 9.2.3, "Отображение Идентификаторов к Именам файлов". Если у Вас есть базы данных или таблицы от более старой версии MySQL, которые содержат специальные символы и для которого базовые имена каталогов или имена файлов не были обновлены, чтобы использовать новое кодирование, сервер выводит на экран их имена с префиксом #mysql50#. Для получения информации об обращении к таким именам или преобразовании их к более новому кодированию, см. тот раздел.

Следующая таблица описывает максимальную длину для каждого типа идентификатора.

Идентификатор Максимальная Длина (символы)
База данных 64
Таблица 64
Столбец 64
Индексировать 64
Ограничение 64
Хранимая процедура или Функция 64
Триггер 64
Представление 64
Событие 64
Табличная область 64
Сервер 64
Log File Group 64
Псевдоним 256 (см., что исключение следует за таблицей),
Метка Составного оператора 16

Псевдонимы для имен столбцов в CREATE VIEW операторы проверяются по максимальной длине столбца 64 символов (не максимальная длина псевдонима 256 символов).

Идентификаторы сохранены, используя Unicode (UTF-8). Это применяется к идентификаторам в табличных определениях, которые сохранены в .frm файлы и к идентификаторам, сохраненным в таблицах предоставления в mysql база данных. Размеры строковых столбцов идентификатора в таблицах предоставления измеряются в символах. Можно использовать многобайтовые символы, не сокращая количество символов, разрешенных для значений, сохраненных в этих столбцах, что-то не истина до MySQL 4.1. Как обозначено ранее, допустимые символы Unicode - те в Основной Многоязычной Плоскости (BMP). Дополнительные символы не разрешаются.