← Назад ко всем вопросам

Типы JOIN'ов

1️⃣ Как кратко ответить

JOIN'ы в SQL используются для объединения строк из двух или более таблиц на основе связанного столбца. Основные типы JOIN'ов: INNER JOIN возвращает только совпадающие строки из обеих таблиц. LEFT JOIN возвращает все строки из левой таблицы и совпадающие строки из правой. RIGHT JOIN возвращает все строки из правой таблицы и совпадающие строки из левой. FULL OUTER JOIN возвращает все строки, когда есть совпадение в одной из таблиц. CROSS JOIN возвращает декартово произведение строк из обеих таблиц.

2️⃣ Подробное объяснение темы

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

INNER JOIN

INNER JOIN возвращает только те строки, которые имеют совпадения в обеих таблицах. Это наиболее часто используемый тип JOIN'а.

SELECT employees.name, departments.name
FROM employees
INNER JOIN departments ON employees.department_id = departments.id;
  • SELECT employees.name, departments.name: выбираем имена сотрудников и названия отделов.
  • FROM employees: основная таблица, из которой извлекаются данные.
  • INNER JOIN departments: соединяем таблицу employees с таблицей departments.
  • ON employees.department_id = departments.id: условие соединения, указывающее, что строки должны совпадать по department_id.

LEFT JOIN (или LEFT OUTER JOIN)

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

SELECT employees.name, departments.name
FROM employees
LEFT JOIN departments ON employees.department_id = departments.id;
  • LEFT JOIN departments: соединяем таблицу employees с таблицей departments, включая все строки из employees.
  • Если у сотрудника нет соответствующего отдела, в результате будет NULL для столбцов из departments.

RIGHT JOIN (или RIGHT OUTER JOIN)

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

SELECT employees.name, departments.name
FROM employees
RIGHT JOIN departments ON employees.department_id = departments.id;
  • RIGHT JOIN departments: соединяем таблицу employees с таблицей departments, включая все строки из departments.
  • Если у отдела нет соответствующих сотрудников, в результате будет NULL для столбцов из employees.

FULL OUTER JOIN

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

SELECT employees.name, departments.name
FROM employees
FULL OUTER JOIN departments ON employees.department_id = departments.id;
  • FULL OUTER JOIN departments: соединяем таблицу employees с таблицей departments, включая все строки из обеих таблиц.
  • Если у сотрудника или отдела нет соответствующих записей, в результате будет NULL для отсутствующих данных.

CROSS JOIN

CROSS JOIN возвращает декартово произведение строк из обеих таблиц. Каждая строка из первой таблицы соединяется с каждой строкой из второй таблицы.

SELECT employees.name, departments.name
FROM employees
CROSS JOIN departments;
  • CROSS JOIN departments: соединяем каждую строку из employees с каждой строкой из departments.
  • Используется редко, так как может привести к очень большому количеству строк в результате.

Тема: Базы данных
Стадия: Tech

🔒 Подпишись на бусти автора и стань Алигатором, чтобы получить полный доступ к функционалу сайта и отслеживать свой прогресс!

Твои заметки