11.2 Имена объектов схемы
Некоторые объекты в MySQL, включая базы данных, таблицы, индексы, столбцы, псевдонимы, представления, хранимые процедуры, разделы, табличные пространства, группы ресурсов и другие имена объектов, известны как идентификаторы. В этом разделе описывается допустимый синтаксис для идентификаторов в MySQL. Раздел 11.2.1, «Пределы длины идентификаторов» указывает максимальную длину каждого типа идентификатора. Раздел 11.2.3, «Чувствительность идентификаторов к регистру» описывает, какие типы идентификаторов чувствительны к регистру и при каких условиях.
Идентификатор может быть заключен в кавычки или без них. Если идентификатор содержит специальные символы или является зарезервированным словом, вы обязаны заключить его в кавычки всякий раз, когда вы ссылаетесь на него. (Исключение: зарезервированное слово, следующее за точкой в квалифицированном имени, должно быть идентификатором, поэтому его не нужно заключать в кавычки.) Зарезервированные слова перечислены в Разделе 11.3, «Ключевые слова и зарезервированные слова».
Внутри MySQL идентификаторы преобразуются в Unicode (UTF-8) и хранятся в этом формате. Разрешенные символы Unicode в идентификаторах — это символы Основной многоязычной плоскости (BMP). Дополнительные символы не допускаются. Таким образом, идентификаторы могут содержать следующие символы:
-
Разрешенные символы в идентификаторах без кавычек:
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 и выше) не допускаются в кавычках или без кавычек идентификаторах.
Идентификаторы могут начинаться с цифры, но, если они не заключены в кавычки, они не могут состоять только из цифр.
Имена баз данных, таблиц и столбцов не могут заканчиваться пробелами.
-
Использование знака доллара в качестве первого символа в не заключённом в кавычки имени базы данных, таблицы, представления, столбца, хранимой программы или псевдонима устарело, включая такие имена, используемые с квалификаторами (см. Раздел 11.2.2, «Квалификаторы идентификаторов»). Не заключенный в кавычки идентификатор, начинающийся со знака доллара, не может содержать дополнительные символы доллара. В противном случае начальный знак доллара разрешён, но вызывает предупреждение об устаревании.
Знак доллара всё ещё может использоваться в качестве ведущего символа такого идентификатора без вывода предупреждения, если он заключён в кавычки в соответствии с правилами, описанными позже в этом разделе.
Символ кавычек идентификатора — обратная косая черта (`):
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 сервера управляется, как описано в Разделе 7.1.11, «Режимы 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, где MeNM и N являются целыми числами. Например, избегайте использования 1e в качестве идентификатора, так как выражение 1e+3 является неоднозначным. В зависимости от контекста оно может интерпретироваться как выражение 1e
+ 3 или как число 1e+3.
Будьте осторожны при использовании MD5() для создания имён таблиц, потому что это может привести к созданию незаконных или неоднозначных имён, таких как те, что описаны выше.
Также рекомендуется не использовать имена столбцов, начинающиеся с !hidden!, чтобы гарантировать, что новые имена не конфликтуют с именами существующих скрытых столбцов функциональных индексов.
Переменная пользователя не может быть использована непосредственно в операторе SQL в качестве идентификатора или части идентификатора. См. Раздел 11.4, «Пользовательские переменные», для получения дополнительной информации и примеров обходных путей.
Специальные символы в именах баз данных и таблиц кодируются в соответствующих именах файлов, как описано в Разделе 11.2.4, «Сопоставление идентификаторов с именами файлов».
© 2025 Oracle
Licensed under the GPLv2 License.