Назад к вопросам
Middle
8
Типы JOIN в SQL (логические и физические)?
Компании, где спрашивали
FOM GROUP
Ответ от нейросети
sobes.tech AI
В SQL существуют разные типы JOIN, которые позволяют объединять строки из двух и более таблиц на основе связанных столбцов.
Логические типы JOIN:
- INNER JOIN — возвращает только те строки, которые имеют совпадения в обеих таблицах.
- LEFT JOIN (LEFT OUTER JOIN) — возвращает все строки из левой таблицы и совпадающие строки из правой; если совпадений нет, в правой части будут NULL.
- RIGHT JOIN (RIGHT OUTER JOIN) — аналогично LEFT JOIN, но для правой таблицы.
- FULL JOIN (FULL OUTER JOIN) — возвращает все строки из обеих таблиц, заполняя NULL там, где нет совпадений.
- CROSS JOIN — декартово произведение двух таблиц, каждая строка первой таблицы соединяется с каждой строкой второй.
Физические типы JOIN — это способы реализации логических JOIN на уровне СУБД, которые зависят от оптимизатора и структуры данных:
- Nested Loop Join — для каждой строки из первой таблицы ищет совпадения во второй.
- Hash Join — строит хеш-таблицу по одной из таблиц и ищет совпадения по хешу.
- Merge Join — требует отсортированных данных, объединяет таблицы путём последовательного прохода по ним.
Пример INNER JOIN:
SELECT employees.name, departments.name
FROM employees
INNER JOIN departments ON employees.department_id = departments.id;