Учебники

14) SQL-соединения (примеры)

Что такое Join в СУБД?

Объединение в СУБД — это бинарная операция, которая позволяет объединить продукт объединения и выбор в одном выражении. Цель создания условия соединения состоит в том, что оно помогает объединить данные из двух или более таблиц СУБД. Таблицы в СУБД связаны с использованием первичного ключа и внешних ключей.

В этом уроке по СУБД вы узнаете:

Типы Присоединения

В СУБД в основном есть два типа соединений:

  1. Внутренние объединения: Theta, Natural, EQUI
  2. Внешнее соединение: слева, справа, полностью

Давайте посмотрим на них подробно:

Внутреннее соединение

INNER JOIN используется для возврата строк из обеих таблиц, которые удовлетворяют данному условию. Это наиболее широко используемая операция соединения и может рассматриваться как тип соединения по умолчанию

Внутреннее соединение или equijoin — это соединение на основе компаратора, которое использует сравнения равенства в предикате соединения. Однако, если вы используете другие операторы сравнения, такие как «>», это нельзя назвать equijoin.

Inner Join далее делится на три подтипа:

  • Тета присоединиться
  • Естественное соединение
  • EQUI присоединиться

Синтаксис:

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

Например:

A ⋈ A.column 2 =  B.column 2 (B)
A ⋈ A.column 2 = B.column 2 (B)
колонка 1 колонка 2
1 1

Он выполняет выборку, формируя равенство для тех атрибутов, которые появляются в обоих отношениях, и удаляет дубликаты атрибутов.

Пример:

Рассмотрим следующие две таблицы

С
Num Квадрат
2 4
3 9
D
Num куб
2 8
3 18
C ⋈ D
C ⋈ D
Num Квадрат куб
2 4 8
3 9 18

Левое внешнее соединение (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 возвращает все столбцы из таблицы справа, даже если в таблице слева не найдено подходящих строк.
  • При полном внешнем объединении все кортежи из обоих отношений включаются в результат независимо от условия соответствия.