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.