Что такое Join в СУБД?
Объединение в СУБД — это бинарная операция, которая позволяет объединить продукт объединения и выбор в одном выражении. Цель создания условия соединения состоит в том, что оно помогает объединить данные из двух или более таблиц СУБД. Таблицы в СУБД связаны с использованием первичного ключа и внешних ключей.
В этом уроке по СУБД вы узнаете:
Типы Присоединения
В СУБД в основном есть два типа соединений:
- Внутренние объединения: Theta, Natural, EQUI
- Внешнее соединение: слева, справа, полностью
Давайте посмотрим на них подробно:
Внутреннее соединение
INNER JOIN используется для возврата строк из обеих таблиц, которые удовлетворяют данному условию. Это наиболее широко используемая операция соединения и может рассматриваться как тип соединения по умолчанию
Внутреннее соединение или equijoin — это соединение на основе компаратора, которое использует сравнения равенства в предикате соединения. Однако, если вы используете другие операторы сравнения, такие как «>», это нельзя назвать equijoin.
Inner Join далее делится на три подтипа:
- Тета присоединиться
- Естественное соединение
- EQUI присоединиться
Тета Присоединиться
THETA JOIN позволяет объединять две таблицы на основе условия, представленного theta. Тета объединяет работу для всех операторов сравнения. Обозначается символом θ . Общий случай операции JOIN называется тэта-соединением.
Синтаксис:
A ⋈θ B
Тета-соединение может использовать любые условия в критериях выбора.
Рассмотрим следующие таблицы.
Таблица А | Таблица Б | |||
колонка 1 | колонка 2 | колонка 1 | колонка 2 | |
1 | 1 | 1 | 1 | |
1 | 2 | 1 | 3 |
Например:
A ⋈ A.column 2 > B.column 2 (B)
A ⋈ A.column 2> B.column 2 (B) | |
колонка 1 | колонка 2 |
1 | 2 |
EQUI Присоединиться
EQUI JOIN выполняется, когда соединение Theta использует только условие эквивалентности. Объединение EQUI является наиболее сложной операцией, которую можно эффективно реализовать в СУБД, и одной из причин, по которой СУБД имеют существенные проблемы с производительностью.
Например:
A ⋈ A.column 2 = B.column 2 (B)
A ⋈ A.column 2 = B.column 2 (B) | |
колонка 1 | колонка 2 |
1 | 1 |
Естественное соединение (⋈)
NATURAL JOIN не использует ни один из операторов сравнения. В этом типе объединения атрибуты должны иметь одинаковые имя и домен. В Natural Join должен быть хотя бы один общий атрибут между двумя отношениями.
Он выполняет выборку, формируя равенство для тех атрибутов, которые появляются в обоих отношениях, и удаляет дубликаты атрибутов.
Пример:
Рассмотрим следующие две таблицы
С | |
Num | Квадрат |
2 | 4 |
3 | 9 |
D | |
Num | куб |
2 | 8 |
3 | 18 |
C ⋈ D
C ⋈ D | ||
Num | Квадрат | куб |
2 | 4 | 8 |
3 | 9 | 18 |
Внешнее соединение
OUTER JOIN не требуется каждая запись в два объединении таблиц , чтобы иметь соответствующую запись. При таком типе соединения таблица сохраняет каждую запись, даже если не существует другой подходящей записи.
Три типа внешних соединений:
- Левое внешнее соединение
- Правое внешнее соединение
- Полное внешнее соединение
Левое внешнее соединение (A B)
LEFT JOIN возвращает все строки из таблицы слева, даже если в таблице справа не найдено подходящих строк. Если в таблице справа не найдено ни одной подходящей записи, возвращается NULL.
Рассмотрим следующие 2 таблицы
A | |
Num | Квадрат |
2 | 4 |
3 | 9 |
4 | 16 |
В | |
Num | куб |
2 | 8 |
3 | 18 |
5 | 75 |
A B
A ⋈ B | ||
Num | Квадрат | куб |
2 | 4 | 8 |
3 | 9 | 18 |
4 | 16 | — |
Правое внешнее соединение (A B)
RIGHT JOIN возвращает все столбцы из таблицы справа, даже если в таблице слева не найдено подходящих строк. Если в таблице слева не найдено совпадений, возвращается NULL. ПРАВИЛЬНОЕ внешнее СОЕДИНЕНИЕ — противоположность ЛЕВОГО СОЕДИНЕНИЯ
В нашем примере давайте предположим, что вам нужно получить имена участников и фильмы, взятые ими напрокат. Теперь у нас есть новый участник, который еще не арендовал ни одного фильма.
A B
A ⋈ B | ||
Num | куб | Квадрат |
2 | 8 | 4 |
3 | 18 | 9 |
5 | 75 | — |
Полное внешнее соединение (A B)
В FULL OUTER JOIN все кортежи из обоих отношений включаются в результат независимо от условия соответствия.
Пример:
A B
A ⋈ B | ||
Num | Квадрат | куб |
2 | 4 | 8 |
3 | 9 | 18 |
4 | 16 | — |
5 | — | 75 |
Резюме:
- В СУБД есть в основном два типа соединений 1) Внутреннее соединение 2) Внешнее соединение
- Внутреннее соединение является широко используемой операцией соединения и может рассматриваться как тип соединения по умолчанию.
- Внутреннее соединение подразделяется на три подтипа: 1) тета-соединение 2) естественное соединение 3) EQUI соединение
- Theta Join позволяет объединить две таблицы на основе условия, представленного theta
- Когда тэта-соединение использует только условие эквивалентности, оно становится равным соединению.
- При естественном объединении не используются операторы сравнения.
- Внешнее соединение не требует, чтобы каждая запись в двух таблицах соединения имела соответствующую запись.
- Наружное соединение далее подразделяется на три подтипа: 1) левое внешнее соединение 2) правое внешнее соединение 3) полное внешнее соединение
- Функция LEFT Outer Join возвращает все строки из таблицы слева, даже если в таблице справа не найдено соответствующих строк.
- RIGHT Outer Join возвращает все столбцы из таблицы справа, даже если в таблице слева не найдено подходящих строк.
- При полном внешнем объединении все кортежи из обоих отношений включаются в результат независимо от условия соответствия.