Блог
SQL

SQL с нуля: с чего начать и как выучить в 2026 (пошаговый план)

Если вы только подступаетесь к работе с данными, рано или поздно вы услышите три буквы — SQL. Их произносят на собеседованиях, пишут в вакансиях аналитиков и тестировщиков, упоминают разработчики. И почти всегда у новичка возникает один и тот же вопрос: с чего вообще начать?
Эта статья — спокойный пошаговый разбор для тех, кто учит SQL с нуля. Никакой магии и обещаний «освоишь за выходные». Зато простым языком, с корректными примерами и понятной дорожной картой: что учить, в каком порядке и где практиковаться. Все запросы ниже проверены на реальной базе, так что можете смело копировать и пробовать.

SQL — что это простыми словами

SQL (читается «эс-кью-эль» или «сиквел») расшифровывается как Structured Query Language — язык структурированных запросов. Это язык, на котором мы «разговариваем» с базой данных: просим её показать нужные строки, посчитать суммы, отсортировать список или собрать данные из нескольких таблиц.
Представьте огромную электронную таблицу — что-то вроде Excel, только на миллионы строк. Открывать её глазами и листать вручную бессмысленно. Вместо этого вы пишете короткий запрос вроде «покажи мне всех клиентов из Москвы старше 30 лет, отсортируй по возрасту» — и база за доли секунды возвращает готовый ответ. SQL и есть язык таких запросов.
Ещё одна рабочая аналогия — официант в ресторане. Вы не идёте на кухню сами. Вы говорите, что хотите, официанту (это ваш SQL-запрос), он передаёт заказ на кухню (база данных), а потом приносит вам именно то блюдо, которое вы заказали. Чем точнее вы сформулировали заказ, тем точнее результат.
Важный момент для понимания основ SQL: это декларативный язык. Вы описываете, что хотите получить, а не как это технически достать. Это сильно упрощает старт — вам не нужно думать про циклы, память и алгоритмы. Поэтому SQL часто называют одним из самых дружелюбных языков для входа в IT.

Где применяется SQL и зачем он нужен

SQL — это не язык одной профессии. Данные хранятся в базах почти везде, поэтому работать с ними приходится самым разным специалистам.
Аналитика данных. Аналитик целыми днями достаёт цифры из базы: сколько пользователей пришло за неделю, какая выручка по регионам, какой товар продаётся лучше. Без SQL аналитику делать практически нечего.
Тестирование (QA). Тестировщик проверяет, что приложение правильно записывает данные. Оформили заказ — а он реально попал в базу? В нужную таблицу, с верной суммой и статусом? Это проверяется SQL-запросом. Поэтому SQL входит в базовый набор навыков любого QA-инженера.
Backend-разработка. Серверная часть приложений почти всегда общается с базой данных. Разработчик пишет код, который под капотом отправляет SQL-запросы: сохранить пользователя, обновить заказ, найти товар.
Продукт и маркетинг. Продакт-менеджеры и продуктовые маркетологи всё чаще сами лезут в базу за метриками, чтобы не дёргать аналитика по каждому вопросу.
Вывод простой: изучение SQL окупается почти в любой роли, связанной с цифровыми продуктами. А порог входа при этом ниже, чем у «полноценного» программирования.

Базовые понятия: таблица, строка, столбец, ключ

Прежде чем писать запросы, разберёмся с тем, как вообще устроены данные. Реляционные базы (а именно с ними чаще всего работают) хранят информацию в таблицах. Если вы видели Excel — вы уже почти всё понимаете.
Таблица (table) — это набор данных об одной сущности. Например, таблица customers хранит клиентов, таблица orders — заказы.
Столбец (column) — это конкретная характеристика. У клиента есть имя, город, возраст — каждое из них живёт в своём столбце. У столбца есть тип данных: текст, число, дата.
Строка (row) — это одна запись. Одна строка в таблице customers — это один конкретный клиент со всеми его данными.
Ключ (key) — это столбец, который уникально определяет строку. Первичный ключ (primary key) — обычно id, уникальный номер записи. Двух клиентов с одинаковым id быть не может. Внешний ключ (foreign key) связывает таблицы: например, в заказе хранится customer_id — номер клиента, который этот заказ сделал.
Вот как выглядит наша учебная таблица customers:
1 — name: Анна, city: Москва, age: 28
2 — name: Борис, city: Санкт-Петербург, age: 35
3 — name: Вера, city: Москва, age: 41
4 — name: Глеб, city: Казань, age: 24
5 — name: Дарья, city: Москва, age: 33
И вторая таблица — orders (заказы), где customer_id ссылается на id клиента:
1 — customer_id: 1, amount: 1500, created_at: 2026-01-10
2 — customer_id: 1, amount: 3200, created_at: 2026-02-05
3 — customer_id: 2, amount: 800, created_at: 2026-01-22
4 — customer_id: 3, amount: 5000, created_at: 2026-03-01
5 — customer_id: 5, amount: 1200, created_at: 2026-03-15
На этих двух таблицах мы и разберём первые команды. Примеры написаны на стандартном SQL и одинаково работают в PostgreSQL и MySQL — двух самых популярных базах.

Первые команды SQL для начинающих с примерами

Для тех, кто берётся за SQL для чайников, есть приятный факт: чтобы начать приносить пользу, хватит шести-семи команд. Разберём каждую.
SELECT — выбрать данные
SELECT — главная команда, с которой вы будете работать чаще всего. Она говорит базе: «покажи мне данные». После SELECT перечисляем нужные столбцы, после FROM — из какой таблицы.
-- Показать все столбцы всех клиентов
SELECT * FROM customers;

-- Показать только имя и город
SELECT name, city FROM customers;

Звёздочка * означает «все столбцы». На практике лучше перечислять конкретные столбцы — так запрос понятнее и работает быстрее.
WHERE — отфильтровать строки
WHERE оставляет только те строки, которые подходят под условие. Это как фильтр в таблице.
-- Только клиенты из Москвы
SELECT name, age FROM customers WHERE city = 'Москва';

-- Клиенты 30 лет и старше
SELECT name, age FROM customers WHERE age >= 30;

Текст в условии заключаем в одинарные кавычки ('Москва'), числа — без кавычек. Для сравнения используются =, >, <, >=, <=, а также <> (не равно). Условия можно объединять через AND и OR.
Отдельно стоит запомнить LIKE — поиск по части текста:
-- Имена, начинающиеся на «А»
SELECT name FROM customers WHERE name LIKE 'А%';

Знак % означает «любой набор символов». Запрос вернёт Анну.
ORDER BY — отсортировать результат
ORDER BY упорядочивает строки. По умолчанию — по возрастанию (ASC), а DESC даёт убывание.
-- От самого старшего к самому младшему
SELECT name, age FROM customers ORDER BY age DESC;

Результат: Вера (41), Борис (35), Дарья (33), Анна (28), Глеб (24).
LIMIT — ограничить количество строк
LIMIT оставляет только первые N строк. Очень удобно вместе с сортировкой — например, чтобы найти «топ-3».
-- Три самых старших клиента
SELECT name, age FROM customers ORDER BY age DESC LIMIT 3;

Вернёт Веру, Бориса и Дарью. Небольшая заметка: LIMIT — это синтаксис PostgreSQL и MySQL. В некоторых других базах (например, SQL Server) для того же используют TOP, но для старта вам это знать необязательно.
JOIN — объединить таблицы
Самое интересное начинается, когда данные лежат в разных таблицах. Имена клиентов — в customers, суммы заказов — в orders. Чтобы увидеть их вместе, таблицы нужно соединить по общему столбцу. Это и делает JOIN.
-- Кто сколько заплатил по каждому заказу
SELECT customers.name, orders.amount
FROM customers
JOIN orders ON customers.id = orders.customer_id;

Ключевое здесь — условие ON customers.id = orders.customer_id. Мы говорим базе: «склей строки, где id клиента совпадает с customer_id в заказе». Результат:
Анна — amount: 1500
Анна — amount: 3200
Борис — amount: 800
Вера — amount: 5000
Дарья — amount: 1200
Анна встречается дважды, потому что у неё два заказа — это нормально. На старте достаточно понять JOIN (его ещё называют INNER JOIN): он оставляет только те строки, для которых нашлась пара в обеих таблицах. Глеб в результат не попал — у него заказов нет.
GROUP BY — сгруппировать и посчитать
GROUP BY собирает строки в группы и считает по ним итоги: сумму, количество, среднее. Работает в паре с функциями COUNT(), SUM(), AVG(), MIN(), MAX().
-- Сколько клиентов в каждом городе
SELECT city, COUNT(*) AS customers_count
FROM customers
GROUP BY city;

Результат: Казань — 1, Москва — 3, Санкт-Петербург — 1. Запись AS customers_count — это псевдоним: так мы даём столбцу с результатом понятное имя.
А теперь соберём всё вместе — посчитаем, сколько каждый клиент потратил суммарно, и отсортируем по убыванию:
SELECT customers.name, SUM(orders.amount) AS total
FROM customers
JOIN orders ON customers.id = orders.customer_id
GROUP BY customers.name
ORDER BY total DESC;

Результат:
Вера — total: 5000
Анна — total: 4700
Дарья — total: 1200
Борис — total: 800
Если из этих групп нужно отобрать только некоторые — например, города, где больше одного клиента, — используется HAVING (это как WHERE, но для уже сгруппированных данных):
SELECT city, COUNT(*) AS cnt
FROM customers
GROUP BY city
HAVING COUNT(*) > 1;

Вернёт только Москву (там 3 клиента).
Запомните порядок написания частей запроса — он всегда одинаковый: SELECT → FROM → JOIN → WHERE → GROUP BY → HAVING → ORDER BY → LIMIT. Если переставить местами, база выдаст ошибку. Это именно порядок в тексте запроса — база выполняет их в другой последовательности (сначала находит и фильтрует строки, и только потом вычисляет SELECT), но для старта важнее не перепутать порядок написания.

Пошаговый план изучения SQL (roadmap)

Теперь — главное, ради чего многие и открыли эту статью. Вот понятная дорожная карта, или SQL roadmap: что учить, в каком порядке и сколько это примерно займёт. Сроки указаны для человека, который занимается по 1–2 часа в день. У всех по-разному, это ориентир, а не норматив.
Этап 1. Основы выборки (1–2 недели)
Учим то, что разобрано выше: SELECT, WHERE, ORDER BY, LIMIT, операторы сравнения, LIKE, AND/OR. Цель этапа — уверенно доставать и фильтровать данные из одной таблицы. Это фундамент, на котором держится всё остальное.
Этап 2. Агрегация и группировка (1–2 недели)
Изучаем GROUP BY, HAVING и агрегатные функции COUNT, SUM, AVG, MIN, MAX. К концу этапа вы должны уметь отвечать на вопросы вроде «сколько заказов в каждом месяце» или «средний чек по городам».
Этап 3. Связи между таблицами (2–3 недели)
Главная тема — JOIN. Сначала INNER JOIN, затем LEFT JOIN (он оставляет все строки левой таблицы, даже без пары). Здесь же — понимание первичных и внешних ключей и того, как таблицы связаны между собой. Это самый важный навык для собеседований: задачи на JOIN спрашивают почти всегда.
Этап 4. Подзапросы и более сложные конструкции (2–4 недели)
Подзапросы (запрос внутри запроса), CASE для условной логики, DISTINCT (убрать дубликаты), работа с датами, операторы IN и BETWEEN. На этом этапе вы перестаёте бояться многоэтажных запросов.
Этап 5. Продвинутые темы (по необходимости)
Оконные функции (OVER, PARTITION BY), CTE (конструкция WITH), индексы и основы производительности, представления (views). Это уже уровень уверенного специалиста — к нему имеет смысл переходить, когда первые четыре этапа отскакивают от зубов.
Сами этапы занимают примерно полтора-три месяца, но к ним добавляется время на самостоятельную практику и нарешивание задач, которое идёт внахлёст. С учётом этого до уверенного джуниор-уровня обычно уходит примерно 2–3 месяца регулярных занятий. Не три дня и не год — где-то посередине, и сильно зависит от того, сколько вы практикуетесь.

Как и где практиковаться: главное правило обучения

Здесь — самый честный совет во всей статье. SQL невозможно выучить чтением. Можно прочитать десять статей и посмотреть курс на двадцать часов — и зависнуть на первой же реальной задаче. Язык запросов укладывается в голову только через руки: вы должны сами писать запросы, ошибаться, видеть результат и исправлять.
Соотношение примерно такое: 20% времени — теория, 80% — практика. Прочитали про JOIN — тут же напишите пять запросов с JOIN. Узнали про GROUP BY — посчитайте что-нибудь сгруппированное. Только так знания превращаются в навык.
Где практиковаться:
Онлайн-тренажёры. Самый удобный вариант для старта: база уже готова, задачи подобраны по сложности, результат проверяется автоматически. Ничего устанавливать не нужно. Из известных — sql-ex.ru и LeetCode (раздел Database), а из русскоязычных с разбором ошибок — SQL Arena.
Своя локальная база. Поставьте PostgreSQL или MySQL себе на компьютер, залейте учебную базу и тренируйтесь. Чуть сложнее на старте, но ближе к реальной работе.
Реальные данные. Когда освоитесь — берите открытые датасеты и задавайте им свои вопросы. Это лучшая тренировка перед работой.
Тренажёр SQL Arena — практика на русском с AI-ментором
Если хочется начать практиковаться прямо сегодня и без установки баз, обратите внимание на SQL Arena — русскоязычный тренажёр от школы Quality Academy. Он хорошо подходит именно новичкам, и вот почему:
Большая бесплатная часть — от самых простых задач на SELECT до задач с JOIN и группировкой. Задачи отсортированы по возрастанию сложности — это ровно та дорожная карта, которую мы описали выше, только в виде практики.
AI-ментор помогает на каждом шаге. Застряли на задаче — он объясняет ошибку и помогает дойти до решения самому. Для новичка это решает главную боль самостоятельного обучения: когда ошибся, но не понимаешь почему.
Для тех, кто хочет пройти путь со структурой и разбором — в Premium есть отдельный курс «SQL с нуля до оффера»: пошаговые видео-модули, которые идут примерно по той же логике, что и дорожная карта выше, с уроками и разбором вокруг практики.
Открыли, выбрали первую задачу, написали запрос — и сразу видите, верно или нет. Именно такой цикл «попробовал → увидел результат → исправил» и двигает обучение быстрее всего.

Частые ошибки новичков

На этих граблях спотыкаются почти все, кто учит SQL для начинающих. Если знать о них заранее, путь будет заметно легче.
Учить только теорию. Самая частая и самая дорогая ошибка. Перечитывать материал по третьему разу вместо того, чтобы решать задачи. Запомните: написанный своими руками запрос стоит десяти прочитанных.
Путать `WHERE` и `HAVING`. WHERE фильтрует строки до группировки, HAVING — уже готовые группы после GROUP BY. Нельзя писать WHERE COUNT(*) > 1 — для этого есть HAVING.
Забывать про кавычки у текста. WHERE city = Москва выдаст ошибку. Правильно — WHERE city = 'Москва'. Текст всегда в одинарных кавычках, числа без них.
Сравнивать с `NULL` через `=`. NULL — это «значение неизвестно», а не «пусто» или «ноль». Проверка WHERE age = NULL не сработает. Нужно WHERE age IS NULL или WHERE age IS NOT NULL.
Бояться `JOIN`. Многие застревают на соединении таблиц и пытаются всё уместить в одну таблицу. JOIN — это норма и основа реальной работы, его надо именно практиковать, а не обходить.
Нарушать порядок написания частей запроса. ORDER BY перед WHERE или GROUP BY после ORDER BY — частая ошибка новичка. Держите в голове порядок написания: SELECT → FROM → WHERE → GROUP BY → HAVING → ORDER BY.
Пытаться выучить всё сразу. Оконные функции и оптимизация важны, но не на второй день. Идите по этапам — фундамент сначала.

Частые вопросы про изучение SQL с нуля

Сколько времени нужно, чтобы выучить SQL с нуля? При регулярных занятиях по 1–2 часа в день — примерно 2–4 месяца до уровня уверенного джуниора. Первые осмысленные запросы получаются уже в первую неделю.
Можно ли выучить SQL самостоятельно и бесплатно? Да. Материалов достаточно, а бесплатных тренажёров с проверкой результата — тоже: например, весь уровень Easy на SQL Arena открыт без оплаты. Главное — не застревать в чтении, а сразу решать задачи руками.
Нужно ли уметь программировать, чтобы учить SQL? Нет. SQL — декларативный язык: вы описываете, что хотите получить, а не как это технически сделать. Программистский бэкграунд не требуется, это одна из причин, почему SQL — удобная точка входа в IT для новичков.
Какой SQL учить — PostgreSQL или MySQL? Для старта разницы почти нет: базовые команды (SELECT, WHERE, JOIN, GROUP BY) в обеих базах пишутся одинаково. Различия проявляются в продвинутых темах. Выбирайте ту базу, которая используется на работе или в тренажёре, которым пользуетесь.
Сложно ли учить SQL новичку без технического бэкграунда? Не сложнее многих других навыков входа в IT. SQL часто называют одним из самых дружелюбных языков для старта именно из-за декларативного синтаксиса — вы не думаете про циклы и алгоритмы, а формулируете вопрос к данным на языке, близком к обычной речи.

Сколько времени занимает и что дальше

Подведём итог по срокам. Чтобы уверенно писать базовые запросы и проходить начальные задачи на собеседовании, при регулярных занятиях обычно достаточно 2–4 месяцев. Первые осмысленные запросы вы напишете уже в первую неделю — и это сильно мотивирует продолжать.
Что дальше, когда основы освоены:
Собеседование. На джуниорские позиции аналитиков и тестировщиков почти всегда дают практические задачи на SQL: написать выборку, соединить таблицы, что-то сгруппировать. Если вы прошли этапы 1–4 и реально нарешали задач — вы готовы.
Работа. В реальных проектах вы будете применять те же команды, просто на таблицах побольше и в связке с другими инструментами. Базовый SQL не устаревает: SELECT, JOIN и GROUP BY остаются вашими рабочими лошадками и через год, и через пять лет.
Развитие. Дальше — оконные функции, оптимизация запросов, проектирование баз данных. Но это уже надстройка над фундаментом, который вы заложите сейчас.
Главный совет на весь путь простой: меньше читайте про SQL и больше пишите на SQL. Возьмите дорожную карту из этой статьи, откройте любой тренажёр с бесплатными задачами и начните с первой задачи прямо сегодня. Через пару месяцев регулярной практики вы сами напишете выборку с JOIN и группировкой под реальную задачу — то, что сейчас кажется китайской грамотой.
Базовый SQL осваивается быстрее, чем кажется на старте, — главное начать решать задачи руками.
Дальше — вторая часть серии: агрегатные функции и подзапросы.

-------

Полезные ссылки школы

Сайт Quality Academy:
https://quality-academy.ru/main
Telegram-канал:
https://t.me/quality_academy
YouTube-канал:
https://www.youtube.com/@quality_academy
ВКонтакте:
https://vk.com/quality_academy
Канал отзывов учеников (58+ отзывов):
https://t.me/quality_academy_reviews
Задать вопрос менеджеру:
https://t.me/quality_academy_bot
Тест «Подойдёт ли вам тестирование»:
https://quiz.quality-academy.ru
5000+ вопросов с собесов тестировщика — бот-тренажёр:
https://t.me/quality_academy_interview_bot
3 практические задачи и дорожная карта:
https://t.me/quality_academy_tasks_bot
Бесплатные тренажёры — SQL Arena, Playwright Arena, Python Arena:
SQL Arena · Playwright Arena · Python Arena