Ответ
JOIN — это оператор SQL, предназначенный для объединения строк из двух или более таблиц на основе логической связи (условия совпадения) между столбцами этих таблиц.
Основные типы JOIN (на примере таблиц Orders и Customers):
-
INNER JOIN Возвращает только те строки, где есть совпадение в обеих таблицах.
SELECT Orders.OrderID, Customers.CustomerName FROM Orders INNER JOIN Customers ON Orders.CustomerID = Customers.CustomerID; -
LEFT (OUTER) JOIN Возвращает все строки из левой таблицы (
Orders) и совпадающие строки из правой. Если совпадения нет, в колонках правой таблицы будутNULL.SELECT Orders.OrderID, Customers.CustomerName FROM Orders LEFT JOIN Customers ON Orders.CustomerID = Customers.CustomerID; -
RIGHT (OUTER) JOIN Обратный
LEFT JOIN. Возвращает все строки из правой таблицы и совпадающие строки из левой. -
FULL (OUTER) JOIN Возвращает все строки, когда есть совпадение либо в левой, либо в правой таблице. Если для строки одной таблицы нет совпадения в другой, недостающие колонки заполняются
NULL. (Не поддерживается в MySQL, но может быть эмулирован). -
CROSS JOIN Возвращает декартово произведение таблиц — каждая строка первой таблицы соединяется с каждой строкой второй. Используется редко, требует осторожности.
SELECT * FROM Table1 CROSS JOIN Table2;
Практические советы:
- Для производительности всегда используйте индексы на столбцах, участвующих в условии
ON. INNER JOIN— самый распространенный и часто самый эффективный.- Четко понимайте бизнес-логику, чтобы выбрать между
INNERиLEFT JOIN(нужны ли вам строки без соответствия?). - Избегайте
CROSS JOINи сложных соединений многих таблиц в одном запросе, если это возможно — это может серьезно снизить производительность.
Видео-ответы
▶
▶
▶
▶
▶
▶
▶
▶
▶
▶
▶
▶
▶
▶
▶