Логотип YeaHub

База вопросов

Собеседования

Тренажёр

База ресурсов

Обучение

Навыки

Войти

Выбери, каким будет IT завтра — вместе c нами!

YeaHub — это полностью открытый проект, призванный объединить и улучшить IT-сферу. Наш исходный код доступен для просмотра на GitHub. Дизайн проекта также открыт для ознакомления в Figma.

© 2026 YeaHub

AI info

Карта сайта

Документы

Медиа

Назад

Как работает JOIN в SQL?

Вопрос проверяет понимание оператора JOIN в SQL, который используется для объединения строк из двух или более таблиц на основе связанного столбца между ними, что необходимо для извлечения связанных данных в реляционных базах данных.

Короткий ответ

JOIN в SQL — это оператор, который объединяет строки из двух или более таблиц на основе условия связи между ними. Чаще всего используется INNER JOIN, который возвращает только те строки, где есть совпадение в обеих таблицах. Также существуют LEFT JOIN (возвращает все строки из левой таблицы и совпадения из правой), RIGHT JOIN и FULL OUTER JOIN. JOIN позволяет извлекать связанные данные, избегая избыточности хранения информации в одной таблице.

Длинный ответ

JOIN — это фундаментальная операция в SQL, позволяющая комбинировать данные из нескольких таблиц в одном запросе. В реляционных базах данных информация часто разделена на разные таблицы для избежания дублирования (нормализация). JOIN восстанавливает связи между этими таблицами, используя ключи.

Основные типы JOIN

  • INNER JOIN: Возвращает только строки, где есть совпадение в обеих таблицах по условию.
  • LEFT (OUTER) JOIN: Возвращает все строки из левой таблицы и совпадающие строки из правой. Если совпадения нет, поля из правой таблицы будут NULL.
  • RIGHT (OUTER) JOIN: Аналогичен LEFT JOIN, но возвращает все строки из правой таблицы.
  • FULL (OUTER) JOIN: Возвращает все строки, когда есть совпадение в левой или правой таблице. Отсутствующие значения заполняются NULL.
  • CROSS JOIN: Возвращает декартово произведение строк из обеих таблиц (каждую строку из первой с каждой строкой из второй).

Пример использования

Предположим, у нас есть таблицы users и orders.

-- Создание таблиц
CREATE TABLE users (
    id INT PRIMARY KEY,
    name VARCHAR(100)
);

CREATE TABLE orders (
    order_id INT PRIMARY KEY,
    user_id INT,
    amount DECIMAL(10,2),
    FOREIGN KEY (user_id) REFERENCES users(id)
);

-- Вставка данных
INSERT INTO users (id, name) VALUES (1, 'Alice'), (2, 'Bob');
INSERT INTO orders (order_id, user_id, amount) VALUES (101, 1, 50.0), (102, 1, 30.0), (103, 3, 20.0);

-- INNER JOIN: Получить заказы с именами пользователей
SELECT users.name, orders.order_id, orders.amount
FROM users
INNER JOIN orders ON users.id = orders.user_id;
-- Результат: Alice (2 строки заказов). Bob не появится, так как у него нет заказов.

-- LEFT JOIN: Получить всех пользователей и их заказы (если есть)
SELECT users.name, orders.order_id, orders.amount
FROM users
LEFT JOIN orders ON users.id = orders.user_id;
-- Результат: Alice (2 строки), Bob (order_id и amount будут NULL).

JOIN применяется практически в любом запросе, где данные распределены по нескольким таблицам: отчёты, аналитика, отображение связанных сущностей в приложениях (например, список товаров с категориями). Условие соединения (ON) обычно ссылается на первичный ключ одной таблицы и внешний ключ другой.

Вывод: Используйте JOIN для извлечения связанных данных из нормализованных таблиц. INNER JOIN — для строгих совпадений, LEFT/RIGHT JOIN — когда нужно включить все записи из одной таблицы даже без соответствий, например, для подсчёта количества заказов у каждого клиента, включая тех, у кого их нет.

Уровень

  • Рейтинг:

    5

  • Сложность:

    3

Навыки

  • SQL

Ключевые слова

#SQL

#JOIN

#database

#relational

#query

Подпишись на Java Developer в телеграм