Spec-Zone.ru › MySQL 5.7

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

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

Некоторые объекты в 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 или MeN, где M и N — целые числа. Например, избегайте использования 1e в качестве идентификатора, потому что выражение, такое как 1e+3, является неоднозначным. В зависимости от контекста, оно может интерпретироваться как выражение 1e + 3 или как число 1e+3.

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

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

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

© 2025 Oracle
Licensed under the GPLv2 License.
https://docs.oracle.com/cd/E17952_01/mysql-5.7-en/identifiers.html

Spec-Zone.ru

Настройки Оффлайн Что нового Помощь О нас
Spec-Zone .ru
спецификации, руководства, описания, API