Типы 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.- Используется редко, так как может привести к очень большому количеству строк в результате.
🔒 Подпишись на бусти автора и стань Алигатором, чтобы получить полный доступ к функционалу сайта и отслеживать свой прогресс!
Подписаться