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