Как форматировать SQL-запросы
Беспорядочный SQL — один из самых быстрых способов внести ошибки. Когда запрос находится на одной длинной строке без отступа, трудно увидеть, какие условия применяются к каким соединениям, где начинаются и заканчиваются подзапросы или правильна ли логика.
Почему важно форматирование
- Отладка — хорошо отформатированный запрос делает логические ошибки видимыми. Вы можете отслеживать поток от SELECT до WHERE и затем JOIN без угадывания.
- Просмотр кода — ревьюеры читают отформатированный SQL за секунды. Запрос на одной строке вынуждает их сначала анализировать его мысленно.
- Поддержка — когда вы возвращаетесь к запросу через месяцы, форматирование говорит вам, что он делает с одного взгляда.
- Сотрудничество — согласованное форматирование в команде означает, что все читают SQL одинаково.
Как форматировать SQL
- Вставьте ваш SQL — введите минифицированный или беспорядочный запрос в форматтер. Он обрабатывает SELECT, INSERT, UPDATE, DELETE, CREATE TABLE, а также сложные запросы с подзапросами и соединениями.
- Настройте опции — выберите размер отступа и должны ли ключевые слова быть в верхнем регистре. Эти настройки соответствуют руководству по стилю вашего проекта.
- Скопируйте результат — отформатированный SQL готов к повторной вставке в ваш редактор, клиент базы данных или документацию.
Как выглядит хорошее форматирование
Запрос вроде select u.name, o.total from users u join orders o on u.id = o.user_id where o.total > 100 and u.active = 1 order by o.total desc становится:
SELECT
u.name,
o.total
FROM users u
JOIN orders o
ON u.id = o.user_id
WHERE o.total > 100
AND u.active = 1
ORDER BY o.total DESC
Каждое предложение начинается на своей строке. Условия с отступом под их родительским предложением. Соединения и их условия ON чётко сопряжены.
Советы
- Форматируйте перед коммитом — пропустите ваш SQL через форматтер перед добавлением его в систему контроля версий. Это сохраняет диффы чистыми и фокусирует просмотры на логике, а не на стиле.
- Используйте согласованный регистр ключевых слов — выберите верхний или нижний регистр и придерживайтесь его во всём вашем проекте. Смешанные стили делают запросы трудночитаемыми.
- Разбивайте сложные запросы — если запрос остаётся трудночитаемым даже отформатированным, разбейте его на CTE (Common Table Expressions) или представления. Форматирование не может исправить фундаментально сложную логику.
- Проверьте подсветку синтаксиса — хороший форматтер предлагает подсветку, которая различает ключевые слова, строки и числа, что помогает обнаруживать опечатки.
Часто задаваемые вопросы
Нужно ли писать SQL-ключевые слова в верхнем регистре?
Это широко соблюдаемое соглашение писать SQL-ключевые слова в верхнем регистре (SELECT, FROM, WHERE) и имена таблиц или столбцов в нижнем регистре. Это делает запросы более легко читаемыми визуально. Большинство руководств по стилю рекомендуют это, но ни один движок базы данных не требует этого.
Изменяет ли форматирование выполнение запроса?
Нет. Пробелы и отступ не имеют никакого эффекта на выполнение SQL. Форматирование чисто для человеческой читаемости. Минифицированный запрос и отступленный производят одинаковый результат.
Какой размер отступа использовать?
Два или четыре пробела оба распространены. Выберите то, что использует ваша команда, и оставайтесь согласованным. Большинство SQL-форматтеров позволяют настроить это.
Отправляется ли мой SQL на сервер?
Нет. Форматирование происходит полностью в вашем браузере. Ваши запросы никогда не покидают ваше устройство.