Spec-Zone.ru › MySQL 8.4

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

  • 11.2.1 Пределы длины идентификаторов
  • 11.2.2 Квалификаторы идентификаторов
  • 11.2.3 Чувствительность идентификаторов к регистру
  • 11.2.4 Сопоставление идентификаторов с именами файлов
  • 11.2.5 Разбор и разрешение имён функций

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

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

Также рекомендуется не использовать имена столбцов, начинающиеся с !hidden!, чтобы гарантировать, что новые имена не конфликтуют с именами существующих скрытых столбцов функциональных индексов.

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

Специальные символы в именах баз данных и таблиц кодируются в соответствующих именах файлов, как описано в Разделе 11.2.4, «Сопоставление идентификаторов с именами файлов».

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

Spec-Zone.ru

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