← К блогу

SQL для начинающих - полный курс

📅 Декабрь 2024 - 20 мин чтения

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 выполняется в определенном порядке:

  1. FROM - выбор таблицы
  2. WHERE - фильтрация строк
  3. GROUP BY - группировка
  4. HAVING - фильтрация групп
  5. SELECT - выбор столбцов
  6. ORDER BY - сортировка
  7. LIMIT - ограничение

Практикуйся на тренажере

30+ бесплатных задач по SQL с проверкой