Перейти к содержимому
шпаргалка.
Esc
навигацияоткрыть⌘Jпредпросмотр
На этой странице

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

Все темы 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');

Эта страница была полезной?