SQL (Structured Query Language) — язык для работы с реляционными базами данных. Он нужен не только разработчикам, но и аналитикам, менеджерам продукта, маркетологам — всем, кто работает с данными.

Базовый SELECT

-- basic_select.sql
-- Все столбцы из таблицы
SELECT * FROM users;

-- Конкретные столбцы с псевдонимами
SELECT
    first_name AS "Имя",
    last_name  AS "Фамилия",
    age
FROM users
WHERE age >= 18
ORDER BY last_name ASC
LIMIT 10;

Фильтрация с WHERE

-- filtering.sql
-- Операторы сравнения и логика
SELECT * FROM products
WHERE price BETWEEN 100 AND 500
  AND category IN ('Electronics', 'Books')
  AND name LIKE '%Pro%';

-- Проверка NULL
SELECT * FROM users WHERE email IS NOT NULL;

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

SQL выполняется не в том порядке, в котором написан: FROM → JOIN → WHERE → GROUP BY → HAVING → SELECT → ORDER BY → LIMIT. Понимание этого помогает избежать ошибок при использовании алиасов и агрегатных функций.

SQL базы данных и запросы

JOIN: соединение таблиц

-- joins.sql
-- INNER JOIN: только совпадающие записи
SELECT
    o.order_id,
    u.first_name,
    o.total_amount
FROM orders o
INNER JOIN users u ON o.user_id = u.id;

-- LEFT JOIN: все из левой + совпадения из правой
SELECT
    u.first_name,
    COUNT(o.id) AS orders_count
FROM users u
LEFT JOIN orders o ON u.id = o.user_id
GROUP BY u.id;

GROUP BY и агрегатные функции

-- aggregation.sql
SELECT
    category,
    COUNT(*) AS product_count,
    AVG(price) AS avg_price,
    MAX(price) AS max_price,
    SUM(price) AS total
FROM products
GROUP BY category
HAVING COUNT(*) > 5     -- фильтр после группировки
ORDER BY avg_price DESC;
Структура реляционной базы данных