INNER
JOIN
, LEFT JOIN
, RIGHT JOIN
и FULL JOIN
, а также разберем их различия на примерах.INNER JOIN
INNER JOIN возвращает только те записи, для которых существует соответствие в обеих таблицах. Это наиболее часто используемый тип соединения.
Синтаксис:
SELECT колонки
FROM таблица1
INNER JOIN таблица2
ON таблица1.столбец = таблица2.столбец;
Допустим, у нас есть две таблицы:
employees
и departments
.
SELECT employees.name, departments.department_name
FROM employees
INNER JOIN departments
ON employees.department_id = departments.id;
Этот запрос вернет только тех сотрудников, для которых существует соответствующий отдел.
LEFT JOIN (или LEFT OUTER JOIN)
LEFT JOIN возвращает все записи из левой таблицы и соответствующие записи из правой таблицы. Если соответствия нет, то в результате будут NULL-значения для столбцов правой таблицы.
Синтаксис:
SELECT колонки
FROM таблица1
LEFT JOIN таблица2
ON таблица1.столбец = таблица2.столбец;
Пример:
SELECT employees.name, departments.department_name
FROM employees
LEFT JOIN departments
ON employees.department_id = departments.id;
Этот запрос вернет всех сотрудников, даже если для некоторых из них нет соответствующего отдела.
RIGHT JOIN (или RIGHT OUTER JOIN)
RIGHT JOIN аналогичен LEFT JOIN, но возвращает все записи из правой таблицы и соответствующие записи из левой таблицы. Если соответствия нет, то в результате будут NULL-значения для столбцов левой таблицы.
Синтаксис:
SELECT колонки
FROM таблица1
RIGHT JOIN таблица2
ON таблица1.столбец = таблица2.столбец;
Пример:
SELECT employees.name, departments.department_name
FROM employees
RIGHT JOIN departments
ON employees.department_id = departments.id;
Этот запрос вернет все отделы, даже если в них нет сотрудников.
FULL JOIN (или FULL OUTER JOIN)
FULL JOIN возвращает все записи из обеих таблиц. Если соответствия нет, то в результате будут NULL-значения для столбцов той таблицы, где нет соответствия.
Синтаксис:
SELECT колонки
FROM таблица1
FULL JOIN таблица2
ON таблица1.столбец = таблица2.столбец;
Пример:
SELECT employees.name, departments.department_name
FROM employees
FULL JOIN departments
ON employees.department_id = departments.id;
Этот запрос вернет всех сотрудников и все отделы, даже если для некоторых из них нет соответствия.
INNER JOIN
, LEFT JOIN
, RIGHT JOIN
и FULL JOIN
— это мощные инструменты для работы с данными в MySQL. Выбор правильного типа JOIN
зависит от того, какие данные вам нужны и как они связаны между собой. Понимание различий между этими типами соединений поможет вам эффективно управлять данными и получать нужные результаты.