Какие join бывают ?

Спросят с вероятностью 8%



В реляционных базах данных JOIN — это операция, используемая для объединения строк из двух или более таблиц на основе связанного между ними столбца. Существует несколько типов JOIN, каждый из которых имеет свои особенности и используется в разных сценариях. Вот основные типы JOIN:



1️⃣INNER JOIN

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

-   SELECT employees.name, departments.name

FROM employees

INNER JOIN departments ON employees.department_id = departments.id;



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



2️⃣LEFT JOIN (или LEFT OUTER JOIN)

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

-   SELECT employees.name, departments.name

FROM employees

LEFT JOIN departments ON employees.department_id = departments.id;



Этот запрос возвращает всех сотрудников и соответствующие названия отделов. Если у сотрудника нет отдела, колонка с названием отдела будет содержать NULL.



3️⃣RIGHT JOIN (или RIGHT OUTER JOIN)

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

-   SELECT employees.name, departments.name

FROM employees

RIGHT JOIN departments ON employees.department_id = departments.id;



Этот запрос возвращает все отделы и соответствующие имена сотрудников. Если в отделе нет сотрудников, колонка с именем сотрудника будет содержать NULL.



4️⃣FULL JOIN (или FULL OUTER JOIN)

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

-   SELECT employees.name, departments.name

FROM employees

FULL OUTER JOIN departments ON employees.department_id = departments.id;



Этот запрос возвращает всех сотрудников и все отделы, включая те случаи, когда у сотрудников нет отдела или отдел не содержит сотрудников.



5️⃣CROSS JOIN

Возвращает декартово произведение двух таблиц, то есть каждая строка из одной таблицы соединяется с каждой строкой из другой таблицы.

-   SELECT employees.name, departments.name

FROM employees

CROSS JOIN departments;



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



6️⃣SELF JOIN

Это соединение таблицы самой с собой. Оно используется, когда нужно сравнить строки внутри одной и той же таблицы.

-   SELECT A.name AS Employee, B.name AS Manager

FROM employees A, employees B

WHERE A.manager_id = B.id;



Этот запрос возвращает список сотрудников и их менеджеров, где таблица employees соединяется сама с собой.



JOIN операции объединяют строки из разных таблиц на основе общих значений. Существуют разные типы JOIN: INNER JOIN, LEFT JOIN, RIGHT JOIN, FULL JOIN, CROSS JOIN и SELF JOIN.



👉 Можно посмотреть Примеры как отвечают люди на этот вопрос, или перейти К списку 1855 вопроса на Тестировщика. Ставь 👍 если нравится контент



🔐 База собесов | 🔐 База тестовых