SQL для начинающих - полный курс
SQL (Structured Query Language) - язык для работы с базами данных. Это главный инструмент аналитика данных, который используется в 90% задач. В этой статье разберем основы SQL с примерами.
1. SELECT - выборка данных
SELECT - самая частая команда. Она позволяет получить данные из таблицы.
-- Выбрать все столбцы из таблицы users
SELECT * FROM users;
-- Выбрать конкретные столбцы
SELECT name, email, age FROM users;
Результат:
name | email | ageАнна | support@data-analytics-hub.ru | 25
Борис | support@data-analytics-hub.ru | 32
2. WHERE - фильтрация
WHERE позволяет отфильтровать строки по условию.
-- Пользователи старше 25 лет
SELECT * FROM users WHERE age > 25;
-- Пользователи из Москвы
SELECT * FROM users WHERE city = 'Москва';
-- Комбинация условий
SELECT * FROM users
WHERE age > 25 AND city = 'Москва';
Операторы сравнения: = (равно), != или <> (не равно), > (больше), < (меньше), >= (больше или равно), <= (меньше или равно), BETWEEN, IN, LIKE
3. ORDER BY - сортировка
ORDER BY сортирует результаты по указанному столбцу.
-- Сортировка по возрасту (по возрастанию)
SELECT * FROM users ORDER BY age;
-- Сортировка по убыванию
SELECT * FROM users ORDER BY age DESC;
-- Сортировка по нескольким столбцам
SELECT * FROM users ORDER BY city, age DESC;
4. LIMIT - ограничение результатов
-- Первые 10 записей
SELECT * FROM users LIMIT 10;
-- Пропустить 5, взять следующие 10
SELECT * FROM users LIMIT 10 OFFSET 5;
5. GROUP BY - группировка
GROUP BY группирует строки и позволяет применять агрегатные функции.
-- Количество пользователей в каждом городе
SELECT city, COUNT(*) as user_count
FROM users
GROUP BY city;
-- Средний возраст по городам
SELECT city, AVG(age) as avg_age
FROM users
GROUP BY city;
Агрегатные функции: COUNT() - количество, SUM() - сумма, AVG() - среднее, MIN() - минимум, MAX() - максимум
6. HAVING - фильтрация групп
HAVING фильтрует результаты после группировки (WHERE - до).
-- Города с более чем 100 пользователями
SELECT city, COUNT(*) as user_count
FROM users
GROUP BY city
HAVING COUNT(*) > 100;
7. JOIN - объединение таблиц
JOIN объединяет данные из нескольких таблиц.
-- INNER JOIN - только совпадающие записи
SELECT users.name, orders.amount
FROM users
INNER JOIN orders ON users.id = orders.user_id;
-- LEFT JOIN - все из левой + совпадения из правой
SELECT users.name, orders.amount
FROM users
LEFT JOIN orders ON users.id = orders.user_id;
| Тип JOIN | Описание |
|---|---|
| INNER JOIN | Только совпадающие записи |
| LEFT JOIN | Все из левой таблицы + совпадения |
| RIGHT JOIN | Все из правой таблицы + совпадения |
| FULL JOIN | Все записи из обеих таблиц |
8. Подзапросы
Подзапрос - это запрос внутри другого запроса.
-- Пользователи с заказами выше среднего
SELECT name FROM users
WHERE id IN (
SELECT user_id FROM orders
WHERE amount > (SELECT AVG(amount) FROM orders)
);
Порядок выполнения SQL
SQL выполняется в определенном порядке:
- FROM - выбор таблицы
- WHERE - фильтрация строк
- GROUP BY - группировка
- HAVING - фильтрация групп
- SELECT - выбор столбцов
- ORDER BY - сортировка
- LIMIT - ограничение
Практикуйся на тренажере
30+ бесплатных задач по SQL с проверкой