DBMS 连接:内连接、THETA 连接、外连接、等值连接操作类型

DBMS中的JOIN是什么?

DBMS中的JOIN是一种二元操作,它允许您在单个语句中组合JOIN乘积和选择。创建JOIN条件的目标是它有助于您从一个或多个DBMS表中组合数据。DBMS中的表通过主键和外键关联。

JOIN的类型

DBMS中主要有两种JOIN类型

  1. 内连接:Theta、自然、等值连接
  2. 外连接:左、右、全

让我们详细看看它们

内连接 (Inner Join)

内连接用于返回两个表中满足给定条件的行。它是使用最广泛的JOIN操作,并且可以被视为默认的JOIN类型。

内连接或等值连接是一种基于比较的连接,它在JOIN谓词中使用相等比较。但是,如果您使用“>”等其他比较运算符,则不能称为等值连接。

内连接进一步分为三个子类型

  • Theta join
  • Natural join
  • EQUI join

Theta Join

Theta Join允许您根据theta表示的条件合并两个表。Theta JOIN适用于所有比较运算符。它用符号θ表示。JOIN操作的通用情况称为Theta Join。

语法

A ⋈θ B

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 Join

EQUI Join是在Theta Join仅使用等价条件时执行的。EQUI Join是实现RDBMS的最高难度操作,也是RDBMS存在基本性能问题的原因之一。

例如

A ⋈ A.column 2 =  B.column 2 (B)
A ⋈ A.column 2 = B.column 2 (B)
列 1 列 2
1 1

自然连接 (⋈)

Natural Join不使用任何比较运算符。在此类JOIN中,属性应具有相同的名称和域。在Natural Join中,两个关系之间至少应有一个共同属性。

它通过在两个关系中都存在的属性上进行相等选择,并消除重复的属性。

示例

考虑以下两个表

C
数字 平方
2 4
3 9
D
数字 Cube
2 8
3 18
C ⋈ D
C ⋈ D
数字 平方 Cube
2 4 8
3 9 18

外连接 (Outer Join)

Outer Join不需要两个JOIN表中的每个记录都有匹配的记录。在此类JOIN中,即使不存在其他匹配记录,表也会保留每个记录。

外连接有三种类型:

  • 左外连接
  • Right Outer Join
  • Full Outer Join

左外连接 (A ⟕ B)

左外连接会返回左表中的所有行,即使在右表中找不到匹配的行。当在右表中找不到匹配的记录时,将返回NULL。

Left Outer Join

考虑以下2个表

A
数字 平方
2 4
3 9
4 16
B
数字 Cube
2 8
3 18
5 75
A Left Outer Join B
A ⋈ B
数字 平方 Cube
2 4 8
3 9 18
4 16

右外连接 ( A ⟖ B )

右外连接会返回右表中的所有列,即使在左表中找不到匹配的行。在左表中找不到匹配项的地方,将返回NULL。右外连接是左连接的相反。

在我们的示例中,假设您需要获取成员姓名以及他们租借的电影。现在我们有一个新成员,他还没有租借任何电影。

Right Outer Join

A Right Outer Join B
A ⋈ B
数字 Cube 平方
2 8 4
3 18 9
5 75

全外连接 ( A ⟗ B)

全外连接中,无论匹配条件如何,都将两个关系的所有元组包含在结果中。

示例

A Full B
A ⋈ B
数字 平方 Cube
2 4 8
3 9 18
4 16
5 75

摘要

  • DBMS中主要有两种JOIN类型:1)内连接 2)外连接
  • 内连接是使用最广泛的JOIN操作,并且可以被视为默认的JOIN类型。
  • 内连接进一步分为三个子类型:1) Theta Join 2) Natural Join 3) EQUI Join
  • Theta Join允许您根据Theta表示的条件合并两个表。
  • 当Theta Join仅使用等价条件时,它就变成了一个Equi Join。
  • Natural Join不使用任何比较运算符。
  • 外连接不需要两个JOIN表中的每个记录都有匹配的记录。
  • 外连接进一步分为三个子类型:1)左外连接 2) 右外连接 3) 全外连接
  • 左外连接返回左表中的所有行,即使在右表中找不到匹配的行。
  • 右外连接返回右表中的所有列,即使在左表中找不到匹配的行。
  • 在全外连接中,无论匹配条件如何,都将两个关系的所有元组包含在结果中。