Я бы начинал SQL не с толстого учебника, а с очень бытовой задачи. Есть заказы: кто купил, что купил, на какую сумму и оплачен ли заказ. Нужно за минуту ответить на вопрос: какие оплаченные заказы дороже 5000 рублей?
В Excel это можно сделать фильтрами. Но если данные лежат в базе сайта, CRM, интернет-магазина или аналитической системы, руками их уже не покрутишь. Там нужен SQL — язык, которым мы задаем вопросы таблицам
В этом уроке мы не будем пытаться выучить весь SQL. Цель проще: создать маленькую таблицу, положить в нее несколько строк и написать первые запросы через SELECT, WHERE и ORDER BY. После этого SQL перестает быть абстрактным словом из вакансий и становится понятным инструментом
- Что получится в конце
- Что такое SQL простыми словами
- Где запустить SQL без установки
- Создаем таблицу заказов
- Первый SELECT
- Фильтр через WHERE
- Сортировка через ORDER BY
- Собираем рабочий запрос
- Мини-задание
- Частые ошибки новичка
- Неверное имя столбца
- Кавычки вокруг текста
- Условие написано не там
- Звездочка остается навсегда
- Когда этого уже недостаточно
- Ответы на эти вопросы могут быть для вас полезными
- SQL сложно учить с нуля?
- Где тренироваться SQL онлайн?
- Какой SQL учить первым?
- Чем SQL отличается от Excel?
- Нужен ли SQL программисту?
- Что почитать дальше по SQL
Что получится в конце
К концу урока у тебя будет рабочая мини-таблица orders, несколько строк с заказами и запрос, который выбирает только нужные данные:
SELECT customer, product, amount
FROM orders
WHERE status = 'paid' AND amount > 5000
ORDER BY amount DESC;
Этот запрос можно будет изменить под себя: искать неоплаченные заказы, сортировать от дешевых к дорогим, выводить только клиента и сумму или добавлять другие условия
Что такое SQL простыми словами
SQL — это язык запросов к реляционным базам данных. Реляционная база хранит данные в таблицах: строки похожи на записи, столбцы — на свойства записи
Например, таблица заказов может выглядеть так:
| 1 | Анна | Курс по SQL | 7900 | paid |
|---|---|---|---|---|
| 2 | Игорь | Консультация | 4500 | paid |
SQL нужен не для красоты, а для вопросов:
- покажи все заказы;
- покажи только оплаченные;
- покажи покупки дороже 5000;
- отсортируй по сумме;
- посчитай выручку;
- найди клиентов, у которых еще нет заказов.
Новичку важно не перепутать две вещи. SQL — это язык. А PostgreSQL, MySQL, SQL Server, SQLite — это разные базы данных, которые этот язык понимают. Синтаксис в основе похожий, но детали могут отличаться
Где запустить SQL без установки
Для первого занятия не нужно ставить SQL Server или MySQL. Достаточно любого SQL online editor, где можно выполнить запрос в браузере. Хороший тренажер должен давать три вещи:
- поле для SQL-кода;
- кнопку запуска;
- таблицу с результатом или понятную ошибку.
Если сервис просит выбрать диалект, для старта бери SQLite или PostgreSQL. В этом уроке код написан максимально просто, поэтому в большинстве online-редакторов он выполнится без переделок
Создаем таблицу заказов
Сначала создадим таблицу. Не переживай, если часть слов пока выглядит непривычно. На первом проходе важно увидеть результат
CREATE TABLE orders (
id INTEGER PRIMARY KEY,
customer TEXT,
product TEXT,
amount INTEGER,
status TEXT
);
Что здесь произошло:
CREATE TABLE ordersсоздает таблицу с именемorders;id— номер строки;customer— имя клиента;product— что купили;amount— сумма заказа;status— статус оплаты.
Теперь добавим несколько заказов:
INSERT INTO orders (id, customer, product, amount, status) VALUES
(1, 'Анна', 'Курс по SQL', 7900, 'paid'),
(2, 'Игорь', 'Консультация', 4500, 'paid'),
(3, 'Мария', 'Подписка', 1200, 'pending'),
(4, 'Олег', 'Настройка сайта', 15000, 'paid'),
(5, 'Светлана', 'Шаблон лендинга', 3900, 'cancelled');
Текстовые значения пишем в одинарных кавычках: 'Анна', 'paid', 'Курс по SQL'. Это одна из первых мелочей, на которой новички часто спотыкаются
Первый SELECT
Самый простой запрос:
SELECT *
FROM orders;
Звездочка означает: покажи все столбцы. Для знакомства это нормально, но в реальной работе я стараюсь быстрее переходить к явному списку столбцов. Так запрос легче читать
SELECT customer, product, amount
FROM orders;
Теперь база вернет только клиента, товар и сумму. Уже полезнее: мы не тащим в результат все подряд
Фильтр через WHERE
Теперь выберем только оплаченные заказы:
SELECT customer, product, amount, status
FROM orders
WHERE status = 'paid';
WHERE отвечает за условие. База проходит по строкам и возвращает только те, где status равен 'paid'
Добавим условие по сумме:
SELECT customer, product, amount, status
FROM orders
WHERE amount > 5000;
Здесь мы просим показать заказы дороже 5000. Обрати внимание: число 5000 пишется без кавычек, потому что это число, а не текст
Условия можно объединять:
SELECT customer, product, amount, status
FROM orders
WHERE status = 'paid' AND amount > 5000;
Теперь запрос отвечает на исходный вопрос: какие оплаченные заказы дороже 5000 рублей
Сортировка через ORDER BY
Без сортировки база может вернуть строки в порядке, который кажется случайным. Если порядок важен, его нужно попросить явно:
SELECT customer, product, amount
FROM orders
WHERE status = 'paid'
ORDER BY amount DESC;
ORDER BY amount DESC сортирует по сумме от большей к меньшей. Если нужно наоборот:
SELECT customer, product, amount
FROM orders
WHERE status = 'paid'
ORDER BY amount ASC;
ASC — по возрастанию. Во многих базах это направление используется по умолчанию, но я люблю писать его явно, когда материал учебный: так меньше магии
Собираем рабочий запрос
Вот версия, которую уже можно считать маленьким рабочим инструментом:
SELECT customer, product, amount
FROM orders
WHERE status = 'paid' AND amount > 5000
ORDER BY amount DESC;
Прочитаем его по-русски:
- взять столбцы
customer,product,amount; - из таблицы
orders; - оставить только оплаченные заказы дороже 5000;
- отсортировать по сумме от большей к меньшей.
Когда SQL начинает читаться вот так, обучение резко становится проще. Ты уже не зубришь команды, а переводишь обычный вопрос к данным в формальный запрос
Мини-задание
Попробуй изменить запросы самостоятельно
- Выведи все заказы со статусом
pending. - Покажи только
customerиamount. - Найди все заказы дешевле 5000.
- Отсортируй все заказы от дешевых к дорогим.
- Выведи оплаченные заказы дороже 3000.
Возможное решение последнего задания:
SELECT customer, product, amount
FROM orders
WHERE status = 'paid' AND amount > 3000
ORDER BY amount ASC;
Частые ошибки новичка
Неверное имя столбца
Если написать cost вместо amount, база не угадает, что ты имел в виду:
SELECT customer, cost
FROM orders;
Ошибка обычно будет похожа на no such column или invalid column name. Проверяем не на глаз, а по структуре таблицы: какие столбцы действительно были созданы
Кавычки вокруг текста
Так правильно:
WHERE status = 'paid'
Так часто ломается:
WHERE status = paid
Без кавычек база решит, что paid — это имя столбца или переменной. А у нас это текстовое значение
Условие написано не там
Порядок частей в простом запросе такой:
SELECT ...
FROM ...
WHERE ...
ORDER BY ...;
Если поставить ORDER BY перед WHERE, запрос не выполнится. SQL довольно строгий к порядку ключевых слов
Звездочка остается навсегда
SELECT * удобен для разведки. Но если запрос пойдет в код, отчет или регулярную выгрузку, лучше перечислять столбцы явно. Так ты не сломаешь результат, если в таблицу позже добавят новое поле
Когда этого уже недостаточно
Первый SQL-запрос закрывает только простые вопросы к одной таблице. В реальной базе таблиц много: клиенты отдельно, заказы отдельно, товары отдельно, платежи отдельно. Чтобы соединять их, понадобится JOIN
Еще одна граница — подсчеты. Если нужно не просто вывести заказы, а посчитать выручку по каждому статусу, понадобится GROUP BY
Это нормально. SQL лучше учить слоями: сначала выборка, потом фильтр, потом сортировка, потом соединения и группировки
Ответы на эти вопросы могут быть для вас полезными
SQL сложно учить с нуля?
Не сложнее, чем научиться пользоваться формулами в Excel. Сложность начинается не в командах, а в привычке думать таблицами: строки, столбцы, условия, связи. Первую пользу можно получить уже после SELECT, WHERE и ORDER BY
Где тренироваться SQL онлайн?
Подойдет любой SQL online editor с поддержкой SQLite или PostgreSQL. Для первых уроков важно, чтобы можно было создать таблицу, добавить данные и увидеть результат запроса
Какой SQL учить первым?
Начинай с базового синтаксиса: SELECT, WHERE, ORDER BY, JOIN, GROUP BY. Не надо сразу выбирать "идеальный" диалект. Потом можно углубиться в PostgreSQL, MySQL или SQL Server под конкретные задачи
Чем SQL отличается от Excel?
Excel удобен, когда данные небольшие и ты работаешь с ними руками. SQL нужен, когда данные лежат в базе, их много, они связаны между собой и к ним нужно регулярно задавать точные вопросы
Нужен ли SQL программисту?
Если программист делает сайты, бэкенд, CRM, аналитику, автоматизацию или внутренние инструменты, SQL почти наверняка пригодится. Даже простые запросы помогают понимать, что реально происходит с данными приложения
Что почитать дальше по SQL
Если вы собираете тему по шагам, рядом лучше открыть:
- SQL online: где тренироваться без установки — потренироваться в браузере без установки сервера.
- JOIN в SQL: INNER, LEFT и ошибки новичка — перейти от одной таблицы к связям между таблицами.
- GROUP BY и HAVING: группировка без каши — посчитать итоги по статусам, клиентам и группам.
- INSERT, UPDATE, DELETE без потери данных — научиться менять данные без случайных потерь.



