← Назад ко всем вопросам

В чем разница между LEFT, RIGHT и INNER JOIN

1️⃣ Как кратко ответить

LEFT JOIN возвращает все записи из левой таблицы и совпадающие записи из правой. RIGHT JOIN возвращает все записи из правой таблицы и совпадающие записи из левой. INNER JOIN возвращает только те записи, которые имеют совпадения в обеих таблицах.

2️⃣ Подробное объяснение темы

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

LEFT JOIN (или LEFT OUTER JOIN):

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

Пример:

SELECT employees.name, departments.name
FROM employees
LEFT JOIN departments ON employees.department_id = departments.id;
  • SELECT employees.name, departments.name: выбираем имена сотрудников и названия отделов.
  • FROM employees: основная таблица — сотрудники.
  • LEFT JOIN departments ON employees.department_id = departments.id: присоединяем таблицу отделов, используя department_id как ключ. Если у сотрудника нет отдела, в колонке с названием отдела будет NULL.

RIGHT JOIN (или RIGHT OUTER JOIN):

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

Пример:

SELECT employees.name, departments.name
FROM employees
RIGHT JOIN departments ON employees.department_id = departments.id;
  • SELECT employees.name, departments.name: выбираем имена сотрудников и названия отделов.
  • FROM employees: основная таблица — сотрудники.
  • RIGHT JOIN departments ON employees.department_id = departments.id: присоединяем таблицу отделов, используя department_id как ключ. Если в отделе нет сотрудников, в колонке с именем сотрудника будет NULL.

INNER JOIN:

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

Пример:

SELECT employees.name, departments.name
FROM employees
INNER JOIN departments ON employees.department_id = departments.id;
  • SELECT employees.name, departments.name: выбираем имена сотрудников и названия отделов.
  • FROM employees: основная таблица — сотрудники.
  • INNER JOIN departments ON employees.department_id = departments.id: присоединяем таблицу отделов, используя department_id как ключ. В результирующий набор данных попадут только те строки, где есть совпадение по department_id.

Зачем это нужно:

JOIN-ы позволяют объединять данные из разных таблиц, что необходимо для получения комплексной информации из базы данных. Например, чтобы получить список сотрудников и их отделов, необходимо объединить таблицы сотрудников и отделов. Выбор типа JOIN-а зависит от того, какие данные вы хотите получить: все данные из одной таблицы с возможными совпадениями из другой (LEFT или RIGHT JOIN) или только совпадающие данные (INNER JOIN).

Тема: SQL и базы данных
Стадия: Tech

🔒 Подпишись на бусти автора и стань Алигатором, чтобы получить полный доступ к функционалу сайта и отслеживать свой прогресс!

Твои заметки