← Все курсы · Курс SQL

Комментирование нескольких строк SQL и их повторное раскомментирование

Майкл Носито · Обновлено в августе 2026 г. · Каждый пример на этой странице был запущен до его публикации.

Вы тестируете длинный запрос и хотите выполнить его без последних трех объединений. Или вы написали заметку, занимающую пять строк. Оба требуют одновременного отключения нескольких строк, и SQL предоставляет вам два способа сделать это, которые ведут себя по-разному в момент перекрытия.

Что вы делаете: используйте ярлык редактора для переключения -- в каждой выбранной строке. Это быстрее, чем ввод блочного комментария, и его нельзя нарушить комментарием, уже находящимся внутри выделения.

Краткая версия. Блочные комментарии не являются вложенными, поэтому /* внутри вашего блока ничего не происходит, и первый */ заканчивает все.

Два синтаксиса

-- a line comment. Everything after the two dashes, to the end of the line.

/* a block comment.
   It can run over
   as many lines as you like. */

Оба являются стандартными SQL и оба работают в PostgreSQL, MySQL, SQL Server, Оракул, SQLite, Снежинка и БигЗапрос. В MySQL есть одно дополнительное правило, которое стоит знать: -- после него должен идти пробел или управляющий символ, поэтому --this это не комментарий, пока -- this является. Писать пробел всегда — это привычка, которая позволяет избежать всего этого вопроса.

Ярлык от редактора

РедакторПереключить комментарий к строке
ДБиверCtrl+/ (Cmd+/ на Мак)
VS Code, Azure Data StudioCtrl+/
DataGrip и IDE JetBrainsCtrl+/ и Ctrl+Shift+/ для блока
Студия управления SQL ServerомCtrl+К, затем Ctrl+С, чтобы прокомментировать, Ctrl+К, затем Ctrl+U, чтобы раскомментировать.
pgAdminCtrl+/
MySQL рабочая средаCtrl+/
Разработчик Oracle SQLCtrl+/

Выделите строки, нажмите ярлык, и каждая строка получит -- на фронте. Нажмите еще раз, и они оторвутся. Этот переключатель — самый полезный ярлык в редакторе SQL, и большинство людей никогда его не находят.

Гнездовая ловушка

/* switching this section off for now
SELECT customer_id,
       SUM(amount) AS total   /* only shipped orders */
FROM orders
WHERE status = 'shipped'
GROUP BY customer_id
*/

Это не делает то, на что похоже. Блок заканчивается на первый */, который стоит после «только отправленные заказы». Все из FROM orders и далее снова является живым SQL, и завершающий */ внизу теперь синтаксическая ошибка.

База данных не является неудобной. Стандартные комментарии блоков SQL не вложены, и сканер просто берет первый встреченный закрывающий маркер. PostgreSQL — единственное распространенное исключение: он поддерживает вложенные блочные комментарии, а это означает, что запрос, который работает там, может потерпеть неудачу везде.

Защита заключается в использовании строковых комментариев для внешнего отключения, что и производит ярлык редактора:

-- switching this section off for now
-- SELECT customer_id,
--        SUM(amount) AS total   /* only shipped orders */
-- FROM orders
-- WHERE status = 'shipped'
-- GROUP BY customer_id

Комментарии к строке не могут быть закрыты ничем досрочно, поскольку их областью действия является строка.

Закомментируйте строку, а не предложение. Удаление линии из середины WHERE может оставить висеть AND, поэтому запрос завершается неудачно на следующей строке, и ошибка указывает на бесполезное место. Напишите условия с оператором в начале каждой строки и проблема исчезнет.

Тестирование запроса путем отключения частей

Техника, которая делает длинные запросы управляемыми: закомментируйте все после первого соединения, запустите его, подсчитайте строки, затем добавляйте по одному соединению обратно и наблюдайте за подсчетом.

SELECT COUNT(*)
FROM orders o
JOIN customers c ON c.customer_id = o.customer_id
-- JOIN payments  p ON p.order_id    = o.order_id
-- JOIN regions   r ON r.region_id   = c.region_id
;

Раскомментируйте одну строку, запустите заново, сравните. Любое соединение, которое изменяет счетчик, представляет собой либо фильтрацию строк, либо их умножение, и об обоих стоит знать, прежде чем что-либо суммировать. Это метод обнаружения в почему объединение дублирует строки.

При этом поставьте точку с запятой на отдельной строке. Тогда комментирование последнего соединения не приводит к комментированию терминатора.

Оставляем хорошие комментарии

Комментарии, которые стоит сохранить, — это не те комментарии, которые повторяют SQL. Это те, которые читатель не может вывести:

-- Excludes status 'test' because the ZZ accounts are load-test data.
-- Confirmed with the ops team, 12 Aug 2026.
WHERE status <> 'test'

-- Amount is in pence in this table, unlike orders_v2.
SELECT SUM(amount) / 100.0 AS pounds

Почему исключена строка, в каком блоке находится столбец, кто и когда согласовал правило. Более полный метод их записи находится в обучающие комментарии.

Как применить это в своей работе

  1. Изучите ярлык переключения для редактора, который вы используете каждый день. Оно окупается в первый же день.
  2. Используйте комментарии к строкам для всего, что вы хотите сохранить, и блокируйте комментарии только для временного отключения.
  3. Напишите условия с помощью AND в начале строки, чтобы любую отдельную строку можно было аккуратно закомментировать.
  4. Добавляйте по одному объединению за раз и проверяйте количество строк после каждого. Это самая дешевая проверка правильности в SQL.
  5. Прежде чем сохранить запрос, удалите закомментированные эксперименты. Файл, полный мертвого SQL, — это файл, который никто не может определить, является ли он актуальным.

Единственная привычка, которую нужно сохранить

Закомментируйте, чтобы проверить, а затем удалите, а не оставляйте. Закомментированный код не может сказать, является ли это заметкой, экспериментом или правилом, которое было в спешке отключено, и спустя шесть месяцев никто не может сказать, что именно.

Сколько закомментированных строк содержится в запросе, который вы выполняете чаще всего?

Написано из стандарта и инструментов. Комментарии к строкам и блокам являются стандартными SQL; блокировать комментарии можно в PostgreSQL, а не в других основных движках; MySQL требует пробела после двух тире.
Комментирование блока для его проверки — самый дешевый метод отладки в SQL.

SQL для аналитиков — это 458 страниц, которые считывают запросы построчно в повседневных словах, поэтому ошибочный результат нужно где-то отслеживать, а не перепечатывать, пока он не станет выглядеть лучше.

SQL для аналитиков, 19 $ →
Комментарии — это то, как запрос объясняет сам себя.

Комментарии в SQL полностью охватывает оба синтаксиса, синтаксис по базе данных охватывает различия и обучающие комментарии охватывает их написание, чтобы кто-то другой мог прочитать запрос.

Читать комментарии в SQL →