Spec-Zone .ru
спецификации, руководства, описания, API
|
Определенные объекты в пределах MySQL, включая базу данных, таблицу, индексируют, столбец, псевдоним, представление, хранимая процедура, раздел, табличная область, и другие имена объектов известны как идентификаторы. Этот раздел описывает допустимый синтаксис для идентификаторов в MySQL. Раздел 9.2.2, "Чувствительность к регистру Идентификатора", описывает, какие типы идентификаторов являются чувствительными к регистру и при каких условиях.
Идентификатор может быть заключен в кавычки или закрывал кавычки. Если идентификатор содержит специальные символы или является зарезервированным словом, следует заключить его в кавычки всякий раз, когда Вы обращаетесь к этому. (Исключение: зарезервированное слово, которое следует за периодом на полностью определенное имя, должно быть идентификатором, таким образом, оно не должно быть заключено в кавычки.) Зарезервированные слова перечисляются в Разделе 9.3, "Зарезервированных словах".
Идентификаторы преобразовываются в Unicode внутренне. Они могут содержать эти символы:
Разрешенные символы в неупомянутых идентификаторах:
ASCII: [0-9, a-z, A-Z$ _] (основные латинские буквы, цифры 0-9, доллар, подчеркивание)
Расширенный: U+0080.. U+FFFF
Разрешенные символы в идентификаторах в кавычках включают полный Unicode Основная Многоязычная Плоскость (BMP), кроме U+0000:
ASCII: U+0001.. U+007F
Расширенный: U+0080.. U+FFFF
ASCII NUL (U+0000) и дополнительные символы (U+10000 и выше) не разрешается в заключенных в кавычки или неупомянутых идентификаторах.
Идентификаторы могут начаться с цифры, но если не заключено в кавычки, возможно, не состоят исключительно из цифр.
База данных, таблица, и имена столбцов не могут закончиться пробелами.
Символ кавычки идентификатора является обратной галочкой ("`
"):
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 |+-----+-----+
В другом месте в операторе, заключенные в кавычки ссылки на псевдоним должны использовать заключение в кавычки идентификатора, или ссылка обрабатывается как строковый литерал.
Рекомендуется, чтобы Вы не использовали имена, которые начинаются
или M
e
, где M
eN
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). Дополнительные символы не
разрешаются.