Найти в Дзене
БизнеС++

Просто SQL Шпаргалка

Почти любой SQL-запрос строится из ключевых слов (они пишутся заглавными буквами по традиции, но база поймет и строчные). Их порядок важен! Запомни эту последовательность: SELECT -> FROM -> [WHERE] -> [GROUP BY] -> [HAVING] -> [ORDER BY] [ ] — необязательные части. С них и начнем. Без этих команд не обходится ни один запрос. SELECT выбирает столбцы, FROM указывает на таблицу. Пример 1: Просто посмотреть на данные sql SELECT * FROM employees; Разбор: Пример 2: Конкретные столбцы и арифметика sql SELECT
first_name,
last_name,
salary,
salary * 1.1 as new_salary -- Увеличиваем зп на 10% и даем псевдоним
FROM employees; Разбор: Тут мы говорим базе: «Дай мне не всё подряд, а только то, что соответствует такому-то условию». Пример 3: Фильтрация по числам и датам sql SELECT product_name, price, category
FROM products
WHERE price > 1000; -- Только товары дороже 1000 sql SELECT *
FROM orders
WHERE order_date >= '2024-01-01'; -- Заказы начиная с 1 января 2024 Пример 4: Фильтраци
Оглавление

Фундамент: Из Чего Состоит Запрос

Почти любой SQL-запрос строится из ключевых слов (они пишутся заглавными буквами по традиции, но база поймет и строчные). Их порядок важен! Запомни эту последовательность:

SELECT -> FROM -> [WHERE] -> [GROUP BY] -> [HAVING] -> [ORDER BY]

[ ] — необязательные части. С них и начнем.

1. SELECT и FROM — «Что Показать» и «Откуда»

Без этих команд не обходится ни один запрос. SELECT выбирает столбцы, FROM указывает на таблицу.

Пример 1: Просто посмотреть на данные

sql

SELECT * FROM employees;

Разбор:

  • SELECT * — значит «покажи все столбцы».
  • FROM employees — из таблицы с названием employees.
  • ; — точка с запятой говорит базе: «запрос окончен, можно выполнять».

Пример 2: Конкретные столбцы и арифметика

sql
SELECT
first_name,
last_name,
salary,
salary * 1.1 as new_salary -- Увеличиваем зп на 10% и даем псевдоним
FROM employees;

Разбор:

  • Перечисляем нужные столбцы через запятую.
  • Можно проводить вычисления прямо в запросе.
  • Ключевое слово AS задает псевдоним (alias) для нового столбца (new_salary). Это делает результат понятнее.

2. WHERE — «Фильтр по Условию»

Тут мы говорим базе: «Дай мне не всё подряд, а только то, что соответствует такому-то условию».

Пример 3: Фильтрация по числам и датам

sql
SELECT product_name, price, category
FROM products
WHERE price > 1000; -- Только товары дороже 1000
sql
SELECT *
FROM orders
WHERE order_date >= '2024-01-01'; -- Заказы начиная с 1 января 2024

Пример 4: Фильтрация по тексту и несколько условий

sql
SELECT first_name, last_name, department
FROM employees
WHERE department = 'Marketing' -- Обрати внимание на одинарные кавычки для текста!
AND salary < 50000; -- Логическое "И": оба условия должны быть true
sql
SELECT product_name, category
FROM products
WHERE category IN ('Electronics', 'Books'); -- "Входит в список": Electronics ИЛИ Books

3. ORDER BY — «Сортировка»

Покажи результаты в нужном мне порядке.

Пример 5: Сортировка по убыванию и возрастанию

sql
SELECT company_name, revenue
FROM companies
ORDER BY revenue DESC; -- DESC (descending) - по убыванию. ASC (ascending) - по возрастанию (по умолчанию).
sql
SELECT first_name, last_name, hire_date
FROM employees
ORDER BY department ASC, hire_date DESC; -- Сначала по отделу (А-Я), затем внутри отдела по дате приема (сначала новейшие)

4. GROUP BY и Агрегатные функции — «Суммируй, Посчитай, Найди Среднее»

Вот здесь начинается магия аналитики. GROUP BY группирует строки по одинаковым значениям, а агрегатные функции (COUNT, SUM, AVG, MAX, MIN) проводят расчеты для каждой группы.

Пример 6: Количество сотрудников в каждом отделе

sql
SELECT
department,
COUNT(id) as employee_count -- Считаем количество id (или *) в каждой группе
FROM employees
GROUP BY department; -- Группируем все строки по уникальным значениям в столбце "department"

Пример 7: Общая выручка и средний чек по клиентам

sql
SELECT
customer_id,
SUM(amount) as total_revenue, -- Суммируем сумму всех заказов для клиента
AVG(amount) as average_check, -- Считаем средний чек
COUNT(order_id) as orders_count -- Считаем количество заказов
FROM orders
GROUP BY customer_id; -- Группируем все заказы по клиентам

5. HAVING — «Фильтр для Групп»

WHERE фильтрует строки до группировки, а HAVING фильтрует результаты после группировки.

Пример 8: Найти отделы, где средняя ЗП больше 70к

sql
SELECT
department,
AVG(salary) as avg_salary
FROM employees
GROUP BY department
HAVING AVG(salary) > 70000; -- Фильтруем сгруппированный результат

Главный Принцип SQL: Порядок Выполнения Запроса

База данных выполняет части твоего запроса НЕ в том порядке, в котором ты их пишешь. Понимание этого — суперсила.

  1. FROM: База сначала определяет, с какой таблицей (таблицами) работает.
  2. WHERE: Затем отфильтровывает ненужные строки из этой таблицы.
  3. GROUP BY: Потом группирует оставшиеся строки.
  4. HAVING: Фильтрует получившиеся группы.
  5. SELECT: Только теперь выбирает конкретные столбцы и вычисляет выражения.
  6. ORDER BY: И в самом конце сортирует итоговый результат.

Вот почему нельзя использовать псевдоним из SELECT в WHERE — на момент выполнения WHERE он еще не известен! Но его можно использовать в ORDER BY.

💡 Бонус: Шаблон для Ежедневного Использования

Вот универсальный каркас. Копируй и просто меняй значения под свои задачи.

sql
SELECT
[столбец1],
[столбец2],
COUNT(*) as count,
SUM([столбец_с_числом]) as total
FROM [имя_таблицы]
WHERE [столбец] = 'какое_то_значение' -- Опционально
AND [другой_столбец] > 1000 -- Опционально
GROUP BY [столбец1], [столбец2] -- Опционально
HAVING SUM([столбец_с_числом]) > 100 -- Опционально
ORDER BY total DESC; -- Опционально

Что дальше? Освоив это, переходи к JOIN (соединению таблиц) и более сложным конструкциям. Но этот базовый набор закрывает 80% задач.

Ставь лайк, если шпаргалка была полезна, и сохраняй к себе в закладки! В комментариях пиши, про какие еще фишки SQL тебе интересно узнать.