Join / Sql / database

JOINS

author

id	name
1	Вася
2	Коля
3	Петя

util

id	author_id	name
1	1	Вася Мега продукт
2	0	Крутая, но неизвестная утилита

SQL INNER / INNER JOIN - естественное или внутреннее соединение

Возвращает записи, у которых есть соответствующие записи в обеих таблицах.

-- Выводим все поля SELECT * -- Указываем таблицу авторов FROM author -- Соединяем с таблицей программ INNER JOIN util -- Указываем условие ON author.id = util.author_id
id	name	id	author_id	name
1	Вася	1	1	Вася Мега продукт

LEFT JOIN

Возвращает все записи из левой таблицы и соответствующие записи из правой таблицы. Если соответствия нет, возвращает NULL для правой таблицы.

-- Выводим все поля SELECT * -- Указываем таблицу авторов FROM author -- Соединяем с таблицей программ LEFT JOIN util -- Указываем условие ON author.id = util.author_id
id	name	id	author_id	name
1	Вася	1	1	Вася Мега продукт
2	Коля	NULL	NULL	NULL
3	Петя	NULL	NULL	NULL

RIGHT JOIN

Возвращает все записи из правой таблицы и соответствующие записи из левой таблицы. Если соответствия нет, возвращает NULL для левой таблицы.

-- Выводим все поля SELECT * -- Указываем таблицу авторов FROM author -- Соединяем с таблицей программ RIGHT JOIN util -- Указываем условие ON author.id = util.author_id
id	name	id	author_id	name
1	Вася	1	1	Вася Мега продукт
NULL	NULL	2	0	Крутая, но неизвестная утилита

LEFT OUTER JOIN - левое внешнее соединение

Возвращает все записи из левой таблицы и соответствующие записи из правой таблицы. Если соответствия нет, возвращает NULL для правой таблицы.

RIGHT OUTER JOIN - правое внешнее соединение

Возвращает все записи из правой таблицы и соответствующие записи из левой таблицы. Если соответствия нет, возвращает NULL для левой таблицы.

FULL JOIN - полное внешнее соединение

Возвращает все записи, когда есть соответствие в одной из таблиц.

CROSS JOIN - перекрестное или декартово соединение

Выполняет декартово произведение двух таблиц, объединяя каждую строку первой таблицы с каждой строкой второй таблицы.

UNIOUN