Перейти к содержимому
На этой странице

Объединение данных

Все темы Java Developer

Что такое JOIN?

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


Какие существуют типы JOIN?

Виды JOIN:

  1. INNER JOIN :
    • Возвращает только те строки, у которых есть соответствующие строки в обеих таблицах.
    SELECT * FROM table1
    INNER JOIN table2 ON table1.id = table2.id;
  2. LEFT JOIN (или LEFT OUTER JOIN ):
    • Возвращает все строки из левой таблицы и соответствующие строки из правой таблицы. Если нет соответствия, заполняет правые столбцы NULL.
    SELECT * FROM table1
    LEFT JOIN table2 ON table1.id = table2.id;
  3. RIGHT JOIN (или RIGHT OUTER JOIN ):
    • Возвращает все строки из правой таблицы и соответствующие строки из левой таблицы. Если нет соответствия, заполняет левые столбцы NULL.
    SELECT * FROM table1
    RIGHT JOIN table2 ON table1.id = table2.id;
  4. FULL JOIN (или FULL OUTER JOIN ):
    • FULL JOIN возвращает все совпавшие пары, а также строки без пары с обеих сторон. Для отсутствующей стороны соответствующие столбцы заполняются NULL.
    SELECT * FROM table1
    FULL JOIN table2 ON table1.id = table2.id;

Пример:

SELECT employees.name, departments.name
FROM employees
INNER JOIN departments ON employees.department_id = departments.id;

Этот запрос соединяет таблицы employees и departments, возвращая только те строки, у которых есть соответствие по department_id.


Что лучше использовать JOIN или подзапросы?

JOIN vs Подзапросы:

JOIN

  • Производительность зависит от плана, данных и индексов. Оптимизатор может превратить JOIN и подзапрос в одинаковый план; сравнивайте EXPLAIN ANALYZE, сохраняя семантику и число строк результата.

  • Читаемость: Легче читать и понимать при объединении данных из нескольких таблиц.

  • Использование: Предпочтителен для выборки данных из связанных таблиц.

Подзапросы

  • Коррелированный подзапрос иногда требует повторных вычислений, но СУБД может его преобразовать. Для проверки существования EXISTS часто точнее выражает задачу, чем JOIN, который может размножить строки.

  • Читаемость: Может быть более понятным для выполнения простых фильтраций.

  • Использование: Удобен для вложенных условий и вычислений, которые сложно выразить с помощью JOIN.

Рекомендации

  • Используйте JOIN для объединения таблиц.

  • Используйте подзапросы для фильтрации данных или когда логика сложнее выражается с помощью подзапросов.

Примеры:

JOIN :
SELECT e.name, d.name
FROM employees e
JOIN departments d ON e.department_id = d.id;
Подзапрос :
SELECT name
FROM employees
WHERE department_id IN (SELECT id FROM departments WHERE location = 'New York');

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

Смотри записи интервью, узнай, какие вопросы задают и как отвечают кандидаты.

Вопросы и ответы

Не нашли ответ? Напишите мне в чат. Я делаю Шпаргалку и сам отвечаю на сообщения. Расскажите, что не работает или чего вам не хватает. Может, смогу сразу взять это в работу.

Откуда взяты вопросы?

Из реальных собеседований. Основой подборки стал опыт Вадима Новосёлова: он проходил интервью и записывал вопросы. Подробнее о материалах.

Насколько эти вопросы актуальны?

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

На какой уровень рассчитана подборка?

Мы проходили собеседования на вакансии уровня Middle+, а иногда и на Senior-позиции. Вопросы из этих интервью вошли в подборку. Направления работы: Java-разработчик, Backend-разработчик на Java. Глубина обсуждения зависит от вакансии: будь готов объяснить основную идею, привести практический пример и разобрать ограничения и альтернативы решения.

Этот вопрос точно будет на моём собеседовании?

Гарантии нет: набор вопросов зависит от компании, задач команды, уровня вакансии и самого интервьюера. Эти вопросы уже встречались на реальных собеседованиях, но на твоём интервью ту же тему могут проверить другой формулировкой, практической задачей или обсуждением твоего опыта. Используй подборку, чтобы разобраться в теме: объясняй идею своими словами, приводи примеры и готовься обсудить ограничения и альтернативы решения. Так будет проще ответить и на знакомый вопрос, и на неожиданные уточнения.