DBMS 连接:内连接、THETA 连接、外连接、等值连接操作类型
DBMS中的JOIN是什么?
DBMS中的JOIN是一种二元操作,它允许您在单个语句中组合JOIN乘积和选择。创建JOIN条件的目标是它有助于您从一个或多个DBMS表中组合数据。DBMS中的表通过主键和外键关联。
JOIN的类型
DBMS中主要有两种JOIN类型
- 内连接:Theta、自然、等值连接
- 外连接:左、右、全
让我们详细看看它们
内连接 (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。
考虑以下2个表
A | |
---|---|
数字 | 平方 |
2 | 4 |
3 | 9 |
4 | 16 |
B | |
---|---|
数字 | Cube |
2 | 8 |
3 | 18 |
5 | 75 |
AB
A ⋈ B | ||
---|---|---|
数字 | 平方 | Cube |
2 | 4 | 8 |
3 | 9 | 18 |
4 | 16 | – |
右外连接 ( A ⟖ B )
右外连接会返回右表中的所有列,即使在左表中找不到匹配的行。在左表中找不到匹配项的地方,将返回NULL。右外连接是左连接的相反。
在我们的示例中,假设您需要获取成员姓名以及他们租借的电影。现在我们有一个新成员,他还没有租借任何电影。
AB
A ⋈ B | ||
---|---|---|
数字 | Cube | 平方 |
2 | 8 | 4 |
3 | 18 | 9 |
5 | 75 | – |
全外连接 ( A ⟗ B)
在全外连接中,无论匹配条件如何,都将两个关系的所有元组包含在结果中。
示例
AB
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) 全外连接
- 左外连接返回左表中的所有行,即使在右表中找不到匹配的行。
- 右外连接返回右表中的所有列,即使在左表中找不到匹配的行。
- 在全外连接中,无论匹配条件如何,都将两个关系的所有元组包含在结果中。