Какие существуют типы соединений (JOIN) в SQL

В языке SQL соединение (JOIN) используется для объединения строк из двух и более таблиц на основе связанного столбца. Существует несколько типов соединений, которые позволяют гибко управлять объединением данных.

INNER JOIN

INNER JOIN возвращает только те строки, у которых есть совпадение в обеих таблицах.

Пример

SELECT orders.id, customers.name, orders.amount
FROM orders
INNER JOIN customers ON orders.customer_id = customers.id;

LEFT JOIN (LEFT OUTER JOIN)

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

Пример

SELECT customers.name, orders.id, orders.amount
FROM customers
LEFT JOIN orders ON customers.id = orders.customer_id;

RIGHT JOIN (RIGHT OUTER JOIN)

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

Пример

SELECT orders.id, customers.name, orders.amount
FROM orders
RIGHT JOIN customers ON orders.customer_id = customers.id;

FULL JOIN (FULL OUTER JOIN)

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

Пример

SELECT customers.name, orders.id, orders.amount
FROM customers
FULL JOIN orders ON customers.id = orders.customer_id;

CROSS JOIN

CROSS JOIN выполняет декартово произведение таблиц, создавая все возможные комбинации строк.

Пример

SELECT customers.name, products.name
FROM customers
CROSS JOIN products;

SELF JOIN

SELF JOIN используется для соединения таблицы самой с собой.

Пример

SELECT e1.name AS employee, e2.name AS manager
FROM employees e1
JOIN employees e2 ON e1.manager_id = e2.id;