Перейти к основному контенту
Tech Path Finder
КурсыИнтервьюКод-ревьюБлог
Tech Path Finder

Персонализированный путеводитель в IT. Квизы, мок-интервью, код ревью и аналитика прогресса.

@potapov_me

Платформа

  • Курсы
  • Прогресс
  • Мок-интервью
  • Код ревью
  • Живое ревью с ИИ
  • Тренажёр переговоров
  • Закладки

Контент

  • Блог
  • Главная
  • Обратная связь

Компания

  • О проекте
  • Тарифы
  • Условия использования
  • Конфиденциальность
  • Согласие на обработку данных
  • Cookie
  • Реквизиты

Аккаунт

  • Войти
  • Зарегистрироваться
  • Профиль

© 2026 Tech Path Finder. Все права защищены.

·ИП Потапов К.С.·Политика конфиденциальности·
Сделано с ❤️ в России
  1. SQL JOIN: Полное руководство по объединению таблиц
Базы данных·8 тем·48 вопросов·уровень Junior, Middle

SQL JOIN: Полное руководство по объединению таблиц

Полный курс по SQL JOIN для PostgreSQL. От базовых концепций до продвинутой оптимизации. Изучите INNER, LEFT, RIGHT, FULL, CROSS, SELF JOIN, сложные условия, агрегацию, подзапросы и оптимизацию производительности.

Начать курс

SQL JOIN в PostgreSQL

LEFT JOIN, у которого условие по правой таблице переехало из ON в WHERE, молча превращается в INNER JOIN. Ошибки не будет — просто из результата исчезнут строки, и заметят это в лучшем случае на код-ревью, в худшем — по расхождению в отчёте через месяц. Курс во многом про такие вещи: не про синтаксис соединений, а про то, что именно база делает с вашими строками.

Восемь тем. Сначала базовая модель: что вообще происходит при соединении и почему количество строк на выходе может оказаться больше, чем в обеих таблицах вместе. INNER JOIN с равенством и без него. Внешние соединения — LEFT, RIGHT, FULL — и работа с NULL, который появляется не из данных, а из самого соединения. CROSS JOIN и SELF JOIN для иерархий вроде «сотрудник — руководитель».

Дальше сложнее: составные ключи, соединение по диапазону дат, CASE внутри условия. Соединение вместе с агрегацией — тема, где чаще всего портятся суммы: одна строка слева, три справа, и SUM внезапно втрое больше. Подзапросы, CTE и LATERAL для случаев, где обычным соединением не обойтись.

Последняя тема — производительность: какие индексы нужны для соединения, как читать EXPLAIN и чем в плане отличаются nested loop, hash join и merge join, почему база иногда выбирает не тот и что с этим делать.

Нужен базовый SQL: SELECT, WHERE, GROUP BY. Примеры на PostgreSQL.

  1. 1

    Базовые концепции JOIN

    Введение в JOIN: что это, зачем нужен, базовый синтаксис и типы соединений

    6 вопросов
  2. 2

    INNER JOIN

    Внутреннее соединение таблиц: экви- и неэкви-условия, множественные условия

    6 вопросов
  3. 3

    Внешние соединения: LEFT, RIGHT, FULL

    Внешние JOIN для работы с отсутствующими данными и NULL-значениями

    6 вопросов
  4. 4

    CROSS и SELF JOIN

    Декартово произведение и соединение таблицы с самой собой для иерархий

    6 вопросов
  5. 5

    Сложные условия JOIN

    Множественные условия, составные ключи, диапазоны и CASE в JOIN

    6 вопросов
  6. 6

    JOIN с агрегацией

    Комбинация JOIN с GROUP BY, HAVING и агрегатными функциями

    6 вопросов
  7. 7

    Подзапросы в JOIN

    Использование подзапросов, CTE и lateral JOIN для сложных сценариев

    6 вопросов
  8. 8

    Оптимизация JOIN

    Индексы, план выполнения, типичные проблемы и техники оптимизации

    6 вопросов
  9. Зачёт

    Доступен после всех тем (0 из 8)

  10. Экзамен

    Доступен после зачёта

22 / 22

JOIN

Базовые концепции

Операция SQL для объединения строк из двух или более таблиц на основе связанных колонок.

Пример

SELECT * FROM users JOIN orders ON users.id = orders.user_id;

Связанные термины

ON clause

Базовые концепции

Часть синтаксиса JOIN, определяющая условие соединения таблиц. Указывает, какие строки считаются связанными.

Пример

SELECT * FROM users JOIN orders ON users.id = orders.user_id;

Связанные термины

Primary Key (Первичный ключ)

Базовые концепции

Уникальный идентификатор строки в таблице. Не может содержать NULL-значения.

Пример

CREATE TABLE users (id SERIAL PRIMARY KEY, name VARCHAR(100));

Связанные термины

Foreign Key (Внешний ключ)

Базовые концепции

Колонка или набор колонок, ссылающихся на первичный ключ другой таблицы. Создаёт связь между таблицами.

Пример

CREATE TABLE orders (id SERIAL PRIMARY KEY, user_id INTEGER REFERENCES users(id));

Связанные термины

INNER JOIN

Типы JOIN

Тип соединения, возвращающий только те строки, для которых есть совпадение в обеих таблицах.

Пример

SELECT * FROM users INNER JOIN orders ON users.id = orders.user_id;

Связанные термины

LEFT JOIN

Типы JOIN

Тип внешнего соединения, возвращающий все строки из левой таблицы и совпадающие строки из правой. Если совпадения нет — NULL справа.

Пример

SELECT * FROM users LEFT JOIN orders ON users.id = orders.user_id;

Связанные термины

RIGHT JOIN

Типы JOIN

Тип внешнего соединения, возвращающий все строки из правой таблицы и совпадающие строки из левой. Если совпадения нет — NULL слева.

Пример

SELECT * FROM users RIGHT JOIN orders ON users.id = orders.user_id;

Связанные термины

FULL JOIN

Типы JOIN

Тип внешнего соединения, возвращающий все строки из обеих таблиц. Если совпадения нет — NULL с соответствующей стороны.

Пример

SELECT * FROM users FULL JOIN orders ON users.id = orders.user_id;

Связанные термины

CROSS JOIN

Типы JOIN

Декартово произведение таблиц — возвращает все возможные комбинации строк из обеих таблиц.

Пример

SELECT * FROM colors CROSS JOIN sizes;

Связанные термины

SELF JOIN

Типы JOIN

Соединение таблицы с самой собой. Используется для работы с иерархическими данными.

Пример

SELECT e.name, m.name AS manager FROM employees e LEFT JOIN employees m ON e.manager_id = m.id;

Связанные термины

Equijoin

Продвинутые концепции

JOIN с условием равенства (=). Самый распространённый тип соединения.

Пример

SELECT * FROM users JOIN orders ON users.id = orders.user_id;

Связанные термины

Nonequijoin

Продвинутые концепции

JOIN с условием, отличным от равенства (>, <, BETWEEN, LIKE и т.д.).

Пример

SELECT * FROM salaries JOIN tax_brackets ON salaries.amount BETWEEN tax_brackets.min AND tax_brackets.max;

Связанные термины

NULL

Продвинутые концепции

Специальное значение, обозначающее отсутствие данных или неизвестное значение. Требует особой обработки в JOIN.

Пример

SELECT * FROM users LEFT JOIN orders ON users.id = orders.user_id WHERE orders.id IS NULL;

Связанные термины

CTE (Common Table Expression)

Продвинутые концепции

Именованный временный результат, который можно использовать в основном запросе. Определяется через WITH.

Пример

WITH active_users AS (SELECT * FROM users WHERE active = true) SELECT * FROM active_users JOIN orders ON active_users.id = orders.user_id;

Связанные термины

LATERAL JOIN

Продвинутые концепции

Специальный тип JOIN в PostgreSQL, позволяющий подзапросу справа ссылаться на колонки слева.

Пример

SELECT * FROM users, LATERAL (SELECT * FROM orders WHERE orders.user_id = users.id ORDER BY created_at DESC LIMIT 1) AS latest_order;

Связанные термины

Cartesian Product (Декартово произведение)

Продвинутые концепции

Результат соединения каждой строки одной таблицы с каждой строкой другой. Размер = rows1 × rows2.

Пример

SELECT * FROM colors CROSS JOIN sizes; -- 5 цветов × 3 размера = 15 строк

Связанные термины

Index (Индекс)

Оптимизация

Структура данных, ускоряющая поиск строк по значению колонки. Критически важен для производительности JOIN.

Пример

CREATE INDEX idx_orders_user_id ON orders(user_id);

Связанные термины

Query Plan (План выполнения)

Оптимизация

Последовательность операций, которые PostgreSQL выполняет для получения результата запроса. Анализируется через EXPLAIN.

Пример

EXPLAIN ANALYZE SELECT * FROM users JOIN orders ON users.id = orders.user_id;

Связанные термины

Hash Join

Оптимизация

Алгоритм JOIN, строящий хэш-таблицу из одной таблицы и проверяющий совпадения в другой. Эффективен для больших таблиц.

Пример

-- Появляется в EXPLAIN ANALYZE как Hash Join

Связанные термины

Nested Loop Join

Оптимизация

Алгоритм JOIN, перебирающий строки одной таблицы и для каждой ищущий совпадения в другой. Эффективен для малых таблиц или при наличии индекса.

Пример

-- Появляется в EXPLAIN ANALYZE как Nested Loop

Связанные термины

Merge Join

Оптимизация

Алгоритм JOIN, требующий отсортированных входов. Эффективен для больших отсортированных наборов данных.

Пример

-- Появляется в EXPLAIN ANALYZE как Merge Join

Связанные термины

Join Blowup (Раздувание результата)

Оптимизация

Ситуация, когда JOIN создаёт значительно больше строк, чем ожидается, обычно из-за связей один-ко-многим.

Пример

-- users (1000) JOIN orders (10000) может дать 10000+ строк

Связанные термины

Частые вопросы о курсе «SQL JOIN: Полное руководство по объединению таблиц»

Состав курса, уровни, практика и способы проверки знаний.

Что входит в курс «SQL JOIN: Полное руководство по объединению таблиц»?

Курс включает 8 тем и 48 вопросов с разбором ответа. Начать можно с первой темы курса.

Для какого уровня рассчитан курс «SQL JOIN: Полное руководство по объединению таблиц»?

Маршрут охватывает уровни Junior, Middle. Темы расположены от основы к более сложным инженерным задачам, поэтому можно начать с подходящего места и не пропускать важные зависимости.

Как проверить, что материал усвоен?

После прохождения тем доступен зачёт по курсу «SQL JOIN: Полное руководство по объединению таблиц» — 20 случайных вопросов с порогом 80%. После зачёта открывается экзамен с развёрнутыми ответами и автоматической оценкой, приближённый к техническому собеседованию.

Курс «SQL JOIN: Полное руководство по объединению таблиц» бесплатный?

Да, курс полностью бесплатный: все 8 тем доступны без оплаты.