Программирование и IT

Как изучить SQL с нуля

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

Обновлено
В этой статье

Где тренироваться#

Учить SQL по картинкам бессмысленно — нужна база, в которой можно
выполнять запросы и ошибаться. Три варианта по возрастанию усилий:

  • онлайн-песочница или тренажёр с готовыми таблицами и проверкой ответов;
  • SQLite — база в одном файле, ничего настраивать не нужно;
  • PostgreSQL на своём компьютере — ближе всего к рабочим условиям.

Для PostgreSQL удобно взять учебную базу с десятком связанных таблиц
(заказы, клиенты, товары) — такие демонстрационные базы легко найти.
Программа-клиент — psql в терминале или любой графический клиент.

Неделя 1–2: выборка и фильтрация#

Начни с чтения данных — запросы на чтение ничего не ломают:

SELECT name, city
FROM customers
WHERE city = 'Казань' AND created_at >= '2025-01-01'
ORDER BY name
LIMIT 10;

Разбери операторы сравнения, IN, BETWEEN, LIKE, IS NULL. Главное
правило про NULL: это «неизвестно», поэтому NULL = NULL не даёт
истину, а для проверки нужен IS NULL.

Неделя 3–4: агрегаты и группировка#

COUNT, SUM, AVG, MIN, MAX, затем GROUP BY и HAVING. Запомни
логический порядок выполнения запроса: FROMWHEREGROUP BY
HAVINGSELECTORDER BY. Отсюда разница между WHERE (фильтрует
строки до группировки) и HAVING (фильтрует группы после неё). Учти, что
COUNT(*) считает все строки, а COUNT(колонка) пропускает NULL.

Неделя 5–6: соединения таблиц#

INNER JOIN, LEFT JOIN, реже RIGHT и FULL. Нарисуй на бумаге две
маленькие таблицы по три строки и вручную выпиши результат каждого вида
соединения — после этого путаница исчезает. Типичная ошибка — соединение без
полного условия, из-за которого строки размножаются, и сумма получается в
несколько раз больше настоящей.

Неделя 7–8: подзапросы, CTE, оконные функции#

Подзапросы в WHERE и FROM, общие табличные выражения WITH для
читаемости, затем оконные функции — ROW_NUMBER, RANK, LAG, сумма
нарастающим итогом через SUM(...) OVER (ORDER BY ...). Это тема, на
которой проверяют на собеседованиях аналитиков.

Дальше: изменение данных и проектирование#

INSERT, UPDATE, DELETE, транзакции (BEGIN, COMMIT, ROLLBACK),
первичные и внешние ключи, нормализация, индексы и чтение плана запроса
через EXPLAIN. Меняющие данные запросы сначала пробуй в транзакции и
откатывай — так ошибка ничего не испортит.

Как проверять свои запросы#

  • Перед запуском запиши ожидаемый результат: примерно сколько строк и
    какая сумма. Сильное расхождение — повод искать ошибку.
  • После JOIN сравни count(*) с числом строк в исходной таблице.
  • Реши одну задачу двумя способами — через подзапрос и через JOIN
    и сравни ответы.
  • Храни свои запросы в Git-репозитории с комментарием, на какой вопрос
    отвечает каждый. Это и конспект, и портфолио.

Учебный проект: спроектируй базу для личной библиотеки или бюджета,
заполни её данными и напиши десять отчётов — от простой выборки до
рейтинга с оконной функцией.

План по этапам

  1. Недели 1–2 — SELECT и WHEREВыборка, фильтры, сортировка, работа с NULL на учебной базе.
  2. Недели 3–4 — агрегатыCOUNT, SUM, AVG, GROUP BY, HAVING и порядок выполнения запроса.
  3. Недели 5–6 — JOINВнутренние и внешние соединения, проверка числа строк после соединения.
  4. Недели 7–8 — подзапросы и окнаWITH, ROW_NUMBER, RANK, LAG, нарастающий итог.
  5. Недели 9–10 — своя базаТаблицы с ключами, транзакции, индексы и десять отчётов в репозитории.

Начать изучать эту тему у себя

План ляжет в твой репозиторий: отмечай этапы, веди конспект — история изменений покажет, как ты продвинулся.

Начать план

Проверь себя

1.В таблице orders три строки со значениями amount 100, 200 и 300. Что вернёт SELECT SUM(amount) FROM orders?

2.В таблице users 4 строки, у одной из них email равен NULL. Что вернёт SELECT COUNT(email) FROM users?

3.Какое предложение фильтрует строки до группировки?

Источники

  • Учебник PostgreSQLОфициальное введение в SQL на примере PostgreSQL
    бесплатно
  • Документация SQLiteЛёгкая база в одном файле для первых запросов
    бесплатно
  • StepikБесплатные курсы по SQL с задачами на автопроверке
    бесплатно

Было полезно?

Ещё темы

Программирование и IT Как изучить Python с нуля Python хорош для первого знакомства с программированием: код читается почти как текст, а стандартная библиотека закрывает большинство бытовых задач. Этот план ведёт от установки интерпретатора до собственных скриптов, покрытых тестами, — примерно за четыре месяца при занятиях около часа в день. Программирование и IT Как изучить Linux с нуля Linux работает на большинстве серверов, в контейнерах и на множестве устройств, поэтому командная строка нужна разработчику, тестировщику, аналитику и системному администратору. Осваивать систему удобнее всего не чтением списков команд, а ежедневной работой в терминале и решением небольших практических задач. Ниже — последовательность тем на два-три месяца. Программирование и IT Как изучить JavaScript с нуля JavaScript — язык, который исполняется в каждом браузере, а через Node.js ещё и на сервере. У него низкий порог входа — код можно запустить прямо в консоли браузера, — но много неочевидных мест, от приведения типов до асинхронности. План ниже рассчитан на три-четыре месяца и предполагает, что ты уже знаешь основы HTML и CSS или изучаешь их параллельно. Программирование и IT Как изучить Java с нуля Java — строго типизированный язык, на котором написаны банковские системы, серверы крупных сервисов и Android-приложения. Строгость поначалу замедляет, зато компилятор ловит многие ошибки до запуска. Этот план рассчитан примерно на полгода занятий по часу в день и ведёт от первой программы до небольшого серверного приложения. Программирование и IT Как изучить HTML и CSS с нуля HTML описывает, из чего состоит страница, CSS — как она выглядит. Это не языки программирования в строгом смысле, но без них не обходится ни один сайт, и с них удобно начинать путь во фронтенд. Базу вёрстки можно освоить за два-три месяца, если с первой недели собирать настоящие страницы, а не только читать справочник. Программирование и IT SQL-запросы: примеры и разбор Запрос на SQL описывает, какие строки нужны, а не как их искать. Ниже одни и те же две таблицы проходят через все основные конструкции языка — от простого отбора до соединений и подзапросов, и на каждый запрос показан результат до последней строки.

Ещё сценарии