База знаний Бинариум

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

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

SQL выглядит как код, но читается почти как обычная фраза: «выбери имена из таблицы клиентов, где город — Казань». Чтобы закрыть большую часть рабочих задач, достаточно десятка команд. Разбираем их на одном примере — данных небольшого интернет-магазина.

Б

Редакция Бинариума

Пишем о профессиях в дизайне, BIM и IT · 10 минут чтения

Наши данные

Представим магазин, у которого есть две таблицы.

ТаблицаКолонки
orders — заказыid, customer_id, city, amount, created_at
customers — клиентыid, name, email

SELECT: достать данные

SELECT city, amount
FROM orders;

Запрос вернёт город и сумму каждого заказа. Звёздочка — SELECT * — вернёт все колонки, но в рабочих запросах лучше перечислять нужные поля: так быстрее и понятнее.

WHERE, ORDER BY и LIMIT: отфильтровать и отсортировать

SELECT customer_id, amount
FROM orders
WHERE city = 'Казань' AND amount > 5000
ORDER BY amount DESC
LIMIT 10;

Десять самых крупных заказов из Казани дороже 5000 ₽. Пригодятся операторы IN ('Казань', 'Самара'), BETWEEN, LIKE 'Ан%' для поиска по началу строки и IS NULL для пустых значений.

GROUP BY и HAVING: посчитать итоги

SELECT city,
       COUNT(*)    AS orders_cnt,
       SUM(amount) AS revenue,
       AVG(amount) AS avg_check
FROM orders
GROUP BY city
HAVING SUM(amount) > 100000;

Количество заказов, выручка и средний чек по городам — только там, где выручка больше 100 000 ₽. Это классический запрос аналитика.

WHERE фильтрует строки до группировки, HAVING — уже посчитанные группы. Путаница между ними — одна из самых частых ошибок новичков.

Курс Бинариума

SQL с нуля до PRO — практика на реальных данных

Подробнее

JOIN: объединить таблицы

SELECT c.name, o.amount, o.created_at
FROM orders o
JOIN customers c ON c.id = o.customer_id;

Теперь рядом с каждым заказом — имя клиента. Основные виды объединений:

  • INNER JOIN — только строки, у которых нашлась пара в обеих таблицах.
  • LEFT JOIN — все строки левой таблицы, даже без пары. Так ищут, например, клиентов без заказов.
  • FULL JOIN — все строки из обеих таблиц.

INSERT, UPDATE, DELETE: изменить данные

INSERT INTO orders (customer_id, city, amount)
VALUES (7, 'Самара', 3200);

UPDATE orders SET amount = 3500 WHERE id = 15;

DELETE FROM orders WHERE id = 15;

Золотое правило: никогда не запускайте UPDATE и DELETE без WHERE. Иначе изменятся или удалятся все строки таблицы. Перед изменением полезно выполнить SELECT с тем же условием и убедиться, что затронете именно нужные строки.

Порядок выполнения запроса

Мы пишем запрос в одном порядке, а база выполняет его в другом:

  1. FROM и JOIN — откуда берём данные
  2. WHERE — фильтруем строки
  3. GROUP BY — группируем
  4. HAVING — фильтруем группы
  5. SELECT — выбираем колонки
  6. ORDER BY и LIMIT — сортируем и ограничиваем

Поэтому псевдоним, заданный в SELECT, нельзя использовать в WHERE: на этом шаге его ещё не существует. Понимание порядка избавляет от половины непонятных ошибок.

Главное

  • Базовый набор: SELECT, WHERE, ORDER BY, GROUP BY, HAVING, JOIN.
  • WHERE фильтрует строки, HAVING — группы.
  • UPDATE и DELETE — только с WHERE и после проверочного SELECT.
  • Дальше — подзапросы, CTE и оконные функции.

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

Сколько времени нужно, чтобы выучить SQL?

Основы — несколько недель регулярной практики. Уверенный уровень с подзапросами и оконными функциями — 2–3 месяца.

Нужно ли уметь программировать?

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

Курс Бинариума

SQL с нуля до PRO

Закрепите каждую команду на задачах из реального бизнеса.

  • От первого SELECT до оконных функций
  • Практика на реальных наборах данных
  • Навык, нужный аналитикам и разработчикам
10.11.2026
Читайте также