6. Виды Joinов?
UNKNOWNJOIN - оператор языка SQL, который является реализацией операции соединения реляционной алгебры. Предназначен для обеспечения выборки данных из двух таблиц и включения этих данных в один результирующий набор.
Особенностями операции соединения являются следующее:
- в схему таблицы-результата входят столбцы обеих исходных таблиц (таблиц-операндов), то есть схема результата является «сцеплением» схем операндов;
- каждая строка таблицы-результата является «сцеплением» строки из одной таблицы-операнда со строкой второй таблицы-операнда;
- при необходимости соединения не двух, а нескольких таблиц, операция соединения применяется несколько раз (последовательно).
SELECT поля_таблиц
FROM таблица_1
[INNER] | [[LEFT | RIGHT | FULL][OUTER]] JOIN таблица_2
ON условие_соединения
[[INNER] | [[LEFT | RIGHT | FULL][OUTER]] JOIN таблица_n
ON условие_соединения]
https://habr.com/ru/post/450528/
- LEFT [OUTER]:
SELECT поля_таблиц
FROM левая_таблица LEFT JOIN правая_таблица
ON правая_таблица.ключ = левая_таблица.ключ
Получение всех данных из левой таблицы, соединённых с соответствующими данными из правой INNER JOIN, но дополнительно мы добавляем null для строк из первой таблицы, для которой ничего не нашлось во второй
RIGHT [OUTER]:
SELECT поля_таблиц
FROM левая_таблица RIGHT JOIN правая_таблица
ON правая_таблица.ключ = левая_таблица.ключ
Получение всех данных из правой таблицы, соединённых с соответствующими данными из левой это INNER JOIN + null для строк из второй таблицы, для которой ничего не нашлось в первой
- LEFT [OUTER]: правая_таблица.ключ IS NULL :
SELECT поля_таблиц
FROM левая_таблица LEFT JOIN правая_таблица
ON правая_таблица.ключ = левая_таблица.ключ
WHERE правая_таблица.ключ IS NULL
- RIGHT [OUTER] левая_таблица.ключ IS NULL:
SELECT поля_таблиц
FROM левая_таблица RIGHT JOIN правая_таблица
ON правая_таблица.ключ = левая_таблица.ключ
WHERE левая_таблица.ключ IS NULL
Получение данных, относящихся только к правой таблице
- INNER
SELECT поля_таблиц
FROM левая_таблица INNER JOIN правая_таблица
ON правая_таблица.ключ = левая_таблица.ключ
Тот же самый CROSS JOIN, у которого оставлены только те элементы, которые удовлетворяют условию, записанному в конструкции "ON".
- FULL OUTER:
SELECT поля_таблиц
FROM левая_таблица
FULL OUTER JOIN правая_таблица
ON правая_таблица.ключ = левая_таблица.ключ
- FULL OUTER Без совместных данных:
SELECT поля_таблиц
FROM левая_таблица
FULL OUTER JOIN правая_таблица
ON правая_таблица.ключ = левая_таблица.ключ
WHERE левая_таблица.ключ IS NULL
OR правая_таблица.ключ IS NULL
- CROSS JOIN декартово произведение
При выборе каждая строка одной таблицы объединяется с каждой строкой второй таблицы, давая тем самым все возможные сочетания строк двух таблиц. Порядок таблиц для оператора не важен, поскольку оператор является симметричным.

Предыдущий вопрос: 5. Нюансы работы с NULL в SQL. Как проверить поле на NULL?
Следующий вопрос: 7. Что лучше использовать join или подзапросы? Почему?
Все вопросы по теме: список
Все темы: список
Вопросы/замечания/предложения/нашли ошибку: напишите мне