Гайд по оформлению SQL-запросов
Стиль написания SQL-кода — это не просто вопрос эстетики. Хорошо структурированный и понятный код сильно облегчит вам работу, в первую очередь потому, что будет понятен и вам, и вашим коллегам. Представьте, что вы открываете свой старый запрос через пару месяцев. Сможете ли вы быстро понять, что именно вы там написали? В этой статье мы разберем, как писать SQL так, чтобы он был чистым, аккуратным и легко читаемым.
Именование объектов
Начнем с основ для удобной работы с базой данных:
- Избегайте названия во множественном числе.
- Для объединения слов используйте нижнее подчеркивание: employee_city или стиль CamelCase: EmployeeCity.
- Не используйте в имени специальные символы, такие как $, &, * идругие.
- Не начинайте имя с подчеркивания.
- Не давайте одно имя и таблице, и столбцу.
- Избегайте сокращений.
- Включайте ключевое слово AS для создания «алиасов».
- Для названия первичного ключа избегайте имя id. Лучше комбинировать id с названием таблицы, например: id_employee.
Оператор SELECT
- Лучше писать ключевые слова запроса (
SELECT
,FROM
,WHERE
,ORDER BY
,GROUP BY
иHAVING
) в начале новой строки. Если послеSELECT
идет перечисление атрибутов, лучше разделить их, поместив каждый в отдельную строку с равными отступами. Обязательно ставьте запятые в конце строки, а не в начале следующей.
SELECT p.PersonId, p.FirstName, p.LastName FROM Person AS p;
Оператор WHERE
Если оператор WHERE
имеет более одного условия, то расположите каждое условие на новой строке, начиная с условных операторов AND
или OR
.
SELECT
p.PersonId,
p.FirstName,
p.LastName
FROM
Person AS p;
WHERE
p.Name = 'New York'
OR p.Name = 'Chicago';
Оператор JOIN
Если вы объединяете таблицы, то пишите операторы INNER JOIN
, LEFT JOIN
и так далее с новой строки. Оператор ON
также лучше перенести на новую строку.
SELECT
p.PersonId,
p.FirstName,
p.LastName
FROM
Person AS p;
JOIN
City AS c
ON p.CityId = c.CityId;
Комментирование
Лучше не писать много комментариев в коде. Если они необходимы, лучше использовать многострочные комментарии: /* text */
. Комментарий должен быть написан над соответствующей строкой кода.
SELECT
p.PersonId,
p.FirstName,
p.LastName,
/* Name column is the name of the city: */
p.Name,
FROM
Person AS p
WHERE
p.Name = 'New York';
Вложенный SQL-запрос
Если запрос содержит подзапрос, то он должен быть записан в новой строке с отступом. Для структуры CASE
следует размещать каждое выражение WHEN
и END
на новой строке.
SELECT
p.FirstName
CASE
WHEN
p.Age < 18
THEN
'below 18'
WHEN
p.Age >= 18
THEN
'18 or more'
END
AS Age
FROM
Person AS p;
Другие типы запросов
Аналогичные правила действуют для запросов, которые изменяют, вставляют или удаляют данные.
Пишите ключевое слово VALUES
взапросах ввода в начале новой строки и переносите каждый кортеж на новую строку с отступом:
INSERT INTO Car(id_car, name, year)
VALUES
(1, 'Audi', 2010),
(2, 'Skoda', 2015);
В запросе UPDATE
ключевые слова SET
и WHERE
, как и в запросе SELECT
, удобнее переносить на новую строку без отступа:
UPDATE
Car
SET
year = 2012
WHERE
Name = 'Audi';
Или в запросе DELETE
:
DELETE FROM
Car
WHERE
Name = 'Audi';
Всё понятно?
Тогда примените полученные знания на практике - решите нашу задачку!Эпилог
Писать SQL красиво — это не просто вопрос эстетики, а залог успеха в работе с базами данных. Соблюдение стиля помогает избежать хаоса, ускоряет работу и делает код доступным для всех, кто с ним столкнется. Надеемся, что теперь вам стало понятнее, как оформлять SQL-запросы так, чтобы и через полгода вы могли без труда в них разобраться.