Назад к вопросам
Junior — Middle
60
Можешь перечислить типы объединений таблиц в SQL и объяснить их различия?
Ответ от нейросети
sobes.tech AI
В SQL существуют несколько основных типов объединений (JOIN), которые позволяют связать строки из двух таблиц по определённому условию:
- INNER JOIN — возвращает только те строки, у которых есть совпадения в обеих таблицах.
- LEFT JOIN (LEFT OUTER JOIN) — возвращает все строки из левой таблицы и совпадающие строки из правой; если совпадений нет, в столбцах правой таблицы будут NULL.
- RIGHT JOIN (RIGHT OUTER JOIN) — аналогично LEFT JOIN, но возвращает все строки из правой таблицы и совпадающие из левой.
- FULL JOIN (FULL OUTER JOIN) — возвращает все строки из обеих таблиц; если совпадений нет, в соответствующих столбцах будет NULL.
- CROSS JOIN — декартово произведение; каждая строка из первой таблицы соединяется с каждой строкой из второй.
Пример:
SELECT * FROM A
INNER JOIN B ON A.id = B.a_id;
Вернёт только те записи, где A.id совпадает с B.a_id.
Различия в том, какие строки сохраняются при отсутствии совпадений:
- INNER JOIN — только совпадающие.
- LEFT JOIN — все из левой + совпадающие из правой.
- RIGHT JOIN — все из правой + совпадающие из левой.
- FULL JOIN — все из обеих.
Это позволяет гибко выбирать данные в зависимости от задачи.