9.2 Имена объектов схемы
Некоторые объекты в MySQL, включая базы данных, таблицы, индексы, столбцы, псевдонимы, представления, хранимые процедуры, разделы, табличные пространства и другие имена объектов, известны как идентификаторы. В этом разделе описывается допустимый синтаксис идентификаторов в MySQL. Раздел 9.2.1, «Пределы длины идентификаторов» указывает максимальную длину каждого типа идентификатора. Раздел 9.2.3, «Чувствительность идентификаторов к регистру» описывает, какие типы идентификаторов чувствительны к регистру и при каких условиях.
Идентификатор может быть заключён в кавычки или без них. Если идентификатор содержит специальные символы или является зарезервированным словом, вы должны заключить его в кавычки при каждом использовании. (Исключение: зарезервированное слово, следующее за точкой в квалифицированном имени, должно быть идентификатором, поэтому его не нужно заключать в кавычки.) Зарезервированные слова перечислены в разделе 9.3, «Ключевые слова и зарезервированные слова».
Внутренне идентификаторы преобразуются и хранятся в кодировке 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 и выше) не допускаются в идентификаторах с кавычками или без них.
Идентификаторы могут начинаться с цифры, но, если они не заключены в кавычки, не могут состоять только из цифр.
Имена баз данных, таблиц и столбцов не могут заканчиваться пробелами.
Символом кавычек для идентификаторов является обратная кавычка (`):
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.10, «Режимы 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() для создания имён таблиц, потому что это может привести к созданию имён в недопустимых или неоднозначных форматах, как описано выше.
Переменная пользователя не может быть использована непосредственно в операторе SQL в качестве идентификатора или части идентификатора. См. раздел 9.4, «Пользовательские переменные» для получения дополнительной информации и примеров обходных решений.
Специальные символы в именах баз данных и таблиц кодируются в соответствующих именах файлов, как описано в разделе 9.2.4, «Сопоставление идентификаторов с именами файлов». Если у вас есть базы данных или таблицы из более ранней версии MySQL, которые содержат специальные символы и для которых имена подлежащих каталогов или файлов не были обновлены для использования новой кодировки, сервер отображает их имена с префиксом #mysql50#. Для получения информации о ссылке на такие имена или их преобразовании в новую кодировку см. этот раздел.
© 2025 Oracle
Licensed under the GPLv2 License.