Sobes.tech
Back to questions
Junior — Middle
59

Можешь перечислить типы объединений таблиц в SQL и объяснить их различия?

Answer from AI

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 — все из обеих.

Это позволяет гибко выбирать данные в зависимости от задачи.