Spec-Zone.ru › MySQL 8.4

11.7 Комментарии

Сервер MySQL поддерживает три стиля комментариев:

  • От символа # до конца строки.

  • От последовательности --  до конца строки. В MySQL стиле комментариев --  (два дефиса) второй дефис должен быть после хотя бы одного пробела или управляющего символа, например, пробела или табуляции. Этот синтаксис немного отличается от стандартного синтаксиса SQL-комментариев, как описано в разделе 1.7.2.4, «'--' как начало комментария».

  • От последовательности /* до следующей последовательности */, как в языке программирования C. Этот синтаксис позволяет комментарию занимать несколько строк, так как начальная и конечная последовательности не обязательно должны находиться в одной строке.

Следующий пример демонстрирует все три стиля комментариев:

mysql> SELECT 1+1;     # This comment continues to the end of line
mysql> SELECT 1+1;     -- This comment continues to the end of line
mysql> SELECT 1 /* this is an in-line comment */ + 1;
mysql> SELECT 1+
/*
this is a
multiple-line comment
*/
1;

Вложенные комментарии не поддерживаются и устарели; ожидается, что они будут удалены в будущих выпусках MySQL. (В некоторых случаях вложенные комментарии могут быть разрешены, но обычно этого не происходит, и пользователям следует их избегать.)

Сервер MySQL поддерживает некоторые варианты комментариев в стиле C. Они позволяют вам писать код, включающий расширения MySQL, но при этом оставаться совместимым, используя комментарии следующего формата:

/*! MySQL-specific code */

В этом случае сервер MySQL анализирует и выполняет код внутри комментария так же, как и любое другое SQL-утверждение, но другие SQL-серверы должны игнорировать расширения. Например, сервер MySQL распознает ключевое слово STRAIGHT_JOIN в следующем операторе, но другие серверы не должны:

SELECT /*! STRAIGHT_JOIN */ col1 FROM table1,table2 WHERE ...

Если вы добавите номер версии после символа !, синтаксис внутри комментария выполняется только в том случае, если версия MySQL больше или равна указанному номеру версии. Ключевое слово KEY_BLOCK_SIZE в следующем комментарии выполняется только серверами MySQL 5.1.10 или более поздних версий:

CREATE TABLE t1(a INT, KEY (a)) /*!50110 KEY_BLOCK_SIZE=1024 */;

Номер версии использует формат Mmmrr, где M — главная версия, mm — второстепенная версия (двузначное число), а rr — номер выпуска (двузначное число). Например: в операторе, который должен выполняться только сервером MySQL версии 8.4.4 или более поздней, используйте 80404 в комментарии.

В MySQL 8.4 номер версии также может необязательно состоять из шести цифр в формате MMmmrr, где MM — основная версия (двузначное число), а mm и rr — второстепенная и номер релиза (по 2 цифры, соответственно).

За номером версии должен следовать хотя бы один пробельный символ (или конец комментария). Если комментарий начинается с шести цифр, за которыми следует пробел, это интерпретируется как шестнадцатизначный номер версии. В противном случае, если он начинается с как минимум пяти цифр, они интерпретируются как пятизначный номер версии (а любые оставшиеся символы игнорируются для этой цели); если он начинается с менее пяти цифр, комментарий обрабатывается как обычный комментарий MySQL.

Описанный синтаксис комментариев относится к тому, как сервер mysqld анализирует SQL-операторы. Клиентская программа mysql также выполняет некоторую обработку операторов перед отправкой их на сервер. (Она делает это, чтобы определить границы операторов в строке ввода нескольких операторов.) Сведения о различиях между парсерами сервера и клиентской программы mysql см. в разделе 6.5.1.6, «mysql Client Tips».

Комментарии в формате /*!12345 ... */ не сохраняются на сервере. Если этот формат используется для комментирования хранимых программ, комментарии не сохраняются в теле программы.

Другой вариант синтаксиса комментариев в стиле C используется для указания подсказок оптимизатора. Комментарии подсказок содержат символ + после начальной последовательности комментария /*. Пример:

SELECT /*+ BKA(t1) */ FROM ... ;

Дополнительную информацию см. в разделе 10.9.3, «Подсказки оптимизатора».

Использование сокращенных команд mysql, таких как \C внутри многострочных комментариев /* ... */ не поддерживается. Коротко записанные команды работают внутри однострочных комментариев /*! ... */ версии, как и комментарии-подсказки оптимизатора /*+ ... */, которые хранятся в определениях объектов. Если существует опасение, что комментарии подсказок оптимизатора могут быть сохранены в определениях объектов, поэтому при повторной загрузке файлов дампов с помощью mysql произойдёт выполнение таких команд, либо вызывайте mysql с опцией --binary-mode, либо используйте другой клиент для перезагрузки, нежели mysql.

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

Spec-Zone.ru

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