DBMS 连接:内部、THETA、外部、Equi 类型的连接 Opera系统蒸发散
DBMS 中的 Join 是什么?
加入 DBMS 是一种二元运算,它允许您在一个语句中组合连接产品和选择。创建连接条件的目的是帮助您组合来自两个或多个 DBMS 表的数据。DBMS 中的表使用主键和外键关联。
连接类型
DBMS 中主要有两种类型的连接:
- 内连接:Theta、Natural、EQUI
- 外连接:左连接、右连接、全连接
让我们详细了解一下:
内部联接
内部联接 用于返回两个表中满足给定条件的行。它是最广泛使用的连接操作,可以视为默认连接类型
内连接或等值连接是一种基于比较器的连接,它在连接谓词中使用相等比较。但是,如果您使用其他比较运算符(如“>”),则不能称为等值连接。
内连接进一步分为三个子类型:
- Theta 加入
- 自然连接
- 加入EQUI
Theta 加入
Theta 加入 允许您根据 theta 表示的条件合并两个表。Theta 连接适用于所有比较运算符。它用符号表示 θ. JOIN 操作的一般情况称为 Theta 连接。
语法:
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.列 2 > B.列 2 (B) | |
---|---|
列1 | 列2 |
1 | 2 |
加入EQUI
加入EQUI 当 Theta 连接仅使用等价条件时,EQUI 连接是最难在 RDBMS,这也是为什么 RDBMS 存在本质性能问题的一个原因。
例如:
A ⋈ A.column 2 = B.column 2 (B)
A ⋈ A.第 2 列 = B.第 2 列 (B) | |
---|---|
列1 | 列2 |
1 | 1 |
自然连接(⋈)
自然加入 不使用任何比较运算符。在这种类型的连接中,属性应具有相同的名称和域。在自然连接中,两个关系之间应至少有一个共同属性。
它对出现在两个关系中的属性执行选择形成相等性并消除重复的属性。
示例:
考虑以下两个表
C | |
---|---|
民 | 广场 |
2 | 4 |
3 | 9 |
D | |
---|---|
民 | 鱼块 |
2 | 8 |
3 | 18 |
C ⋈ D
C⋈D | ||
---|---|---|
民 | 广场 | 鱼块 |
2 | 4 | 8 |
3 | 9 | 18 |
外连接
An 外连接 不要求两个连接表中的每条记录都有匹配的记录。在这种类型的连接中,即使不存在其他匹配的记录,表也会保留每条记录。
外连接有三种类型:
- 左外连接
- 右外连接
- 完全外部加入
左外连接(A⟕B)
左外连接 即使在右表中未找到匹配的行,也会返回左表中的所有行。当在右表中未找到匹配的记录时,将返回 NULL。
考虑以下两个表格
A | |
---|---|
民 | 广场 |
2 | 4 |
3 | 9 |
4 | 16 |
B | |
---|---|
民 | 鱼块 |
2 | 8 |
3 | 18 |
5 | 75 |
A B
A⋈B | ||
---|---|---|
民 | 广场 | 鱼块 |
2 | 4 | 8 |
3 | 9 | 18 |
4 | 16 | – |
右外连接(A⟖B)
右外连接 即使左侧表中未找到匹配的行,也会返回右侧表中的所有列。如果左侧表中未找到匹配项,则返回 NULL。RIGHT 外连接与 LEFT 连接相反
在我们的示例中,假设您需要获取会员的姓名以及他们租借的电影。现在我们有一位新会员,他还没有租借任何电影。
A B
A⋈B | ||
---|---|---|
民 | 鱼块 | 广场 |
2 | 8 | 4 |
3 | 18 | 9 |
5 | 75 | – |
完全外连接 ( A ⟗ B )
在一个 完全外部加入 ,无论匹配条件如何,来自两个关系的所有元组都包含在结果中。
示例:
A B
A⋈B | ||
---|---|---|
民 | 广场 | 鱼块 |
2 | 4 | 8 |
3 | 9 | 18 |
4 | 16 | – |
5 | – | 75 |
总结
- 主要有两种类型的连接 DBMS 1)内连接 2)外连接
- 内连接是广泛使用的连接操作,可以被视为默认的连接类型。
- 内连接进一步分为三个子类型:1)Theta 连接 2)自然连接 3)EQUI 连接
- Theta Join 允许您根据 theta 所代表的条件合并两个表
- 当 theta 连接仅使用等价条件时,它就变成等值连接。
- 自然连接不使用任何比较运算符。
- 外连接不要求两个连接表中的每个记录都有匹配的记录。
- 外连接进一步分为三个子类型:1)左外连接 2)右外连接 3)全外连接
- 左外连接返回左侧表中的所有行,即使在右侧表中没有找到匹配的行。
- 右外连接返回右侧表中的所有列,即使在左侧表中未找到匹配的行。
- 在完全外连接中,无论匹配条件如何,来自两个关系的所有元组都包含在结果中。