В КУРСЕ?

Разбираемся в теме

T-SQL: как писать понятные запросы к SQL Server

T-SQL расширяет стандартный SQL возможностями, используемыми в Microsoft SQL Server. На практике качество запроса определяется не количеством конструкций, а тем, насколько ясно он отвечает на вопрос и насколько эффективно работает с данными. Полезно начинать с простого SELECT, постепенно добавляя фильтрацию, соединения и агрегаты, а оптимизацию проводить после проверки логики.

SELECT и фильтрация

Запрос должен выбирать только нужные столбцы и строки. Явный список полей обычно лучше SELECT *, потому что делает результат понятнее и уменьшает лишнюю передачу данных. Условия WHERE формулируют до группировки и помогают базе сократить объём обработки.

JOIN

JOIN объединяет таблицы по связанным ключам. INNER JOIN оставляет совпавшие строки, LEFT JOIN сохраняет все строки слева. Ошибка в условии соединения может многократно увеличить количество строк, поэтому после JOIN полезно проверять ожидаемое число записей.

GROUP BY и агрегаты

COUNT, SUM, AVG и другие агрегаты позволяют сворачивать данные. GROUP BY задаёт уровень детализации результата. Если требуется отфильтровать уже рассчитанные группы, используют HAVING, а не WHERE.

Оконные функции

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

Попробуйте на практике

Составить отчёт по продажам на T-SQL.

  1. Выберите продажи за один период через WHERE.
  2. Соедините таблицу продаж с клиентами.
  3. Сгруппируйте результат по клиенту.
  4. Посчитайте сумму и количество заказов.
  5. Добавьте ранг клиентов по сумме через оконную функцию.

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

Частые вопросы

T-SQL сильно отличается от SQL?

Основные запросы похожи, но T-SQL добавляет специфические функции и процедурные возможности SQL Server.

Почему JOIN создаёт дубли?

Чаще всего связь между таблицами не один-к-одному или условие соединения неполное.

Нужно ли сразу создавать индексы?

Сначала стоит понять запрос и план выполнения, а индексы добавлять под реальные сценарии.

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

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

Зарегистрироваться
← К списку материалов