解释关系代数 (DBMS) 中的二元运算?
查询是一个问题或请求信息。查询语言是一种用于从数据库中检索信息的语言。
查询语言分为两种类型 −
过程式语言
非过程式语言
过程式语言
通过指定要执行的操作序列从数据库中检索信息。
例如 −关系代数。
结构化查询语言 (SQL) 基于关系代数。
关系代数由一组运算组成,这些运算以一个或两个关系作为输入,并产生一个新的关系作为输出。
关系代数运算的类型
关系代数运算的不同类型如下 −
选择运算
投影运算
重命名运算
并运算
交运算
差运算
笛卡尔积运算
连接运算
除运算运算
并集、交集、差集、笛卡尔运算、连接、除集都属于二元运算(对两个表进行运算)。
并集运算
并集运算将 R1 和 R2 中的值合并,并删除重复值。
语法
并集运算的语法如下 −
∏ regno(R1) ∪ ∏ regno(R2)
显示 R1 和 R2 的所有 regno。
示例
考虑如下所示的两个表 R1 和 R2 −
表 R1
| Regno | Branch | Section |
|---|---|---|
| 1 | CSE | A |
| 2 | ECE | B |
| 3 | MECH | B |
| 4 | CIVIL | A |
| 5 | CSE | B |
表 R2
| Regno | Branch | Section |
|---|---|---|
| 1 | CIVIL | A |
| 2 | CSE | A |
| 3 | ECE | B |
要显示 R1 和 R2 的所有 regno,请使用以下命令 −
∏ regno(R1) ∪ ∏ regno(R2)
输出
| Regno |
|---|
| 1 |
| 2 |
| 3 |
| 4 |
| 5 |
该条目不允许替换。
Union All 用于重复条目。
如果使用公共交集,则会显示公共条目。
交集运算
显示 R1 和 R2 中的公共值。它用 ∩ 表示。
交集运算的语法如下 −
∏ regno(R1) ∩ ∏ regno(R2)
示例 1
考虑两个集合,
A={1,2,4,6} 和 B={1,2,7}
A 和 B 的交集
A ∩ B ={1,2}
集合 A 和 B 中都存在的元素,也会出现在 A 和 B 交集所得的集合中。
在关系代数中,如果 R1 和 R2 是关系的两个实例,则
R1 ∩ R2 ={ x | x€ R1 和 x € R2
也就是说,在 R1 和 R2 的交集处,只有同时存在于 R1 和 R2 中的元组才会出现。
示例 2
查找所有在银行有账户且已贷款的客户。
表达式如下 −
∏Name(Depositor) ∩ ∏Name(Borrower)
存款人
| ID | Name |
|---|---|
| 1 | A |
| 2 | B |
| 3 | C |
借款人
| ID | Name |
|---|---|
| 2 | B |
| 3 | A |
| 5 | D |
因此,存款人和借款人的交集如下 −
| A |
| B |
笛卡尔积运算
它无条件地组合 R1 和 R2。
它用 X 表示。
R1 的度 XR2 = R1 的度 + R2 的度
{degree = 总列数}
示例
考虑如下所示的 R1 表 −
| RegNo | Branch | Section |
|---|---|---|
| 1 | CSE | A |
| 2 | ECE | B |
| 3 | CIVIL | A |
| 4 | IT | B |
表 R2 如下−
| Name | RegNo |
|---|---|
| Bhanu | Priya |
| 2 | 4 |
因此,R1 X R2 的结果如下 −
| RegNo | Branch | Section | Name | RegNo |
|---|---|---|---|---|
| 1 | CSE | A | Bhanu | 2 |
| 1 | CSE | A | Priya | 4 |
| 2 | ECE | B | Bhanu | 2 |
| 2 | ECE | B | Priya | 4 |
| 3 | CIVIL | A | Bhanu | 2 |
| 3 | CIVIL | A | Priya | 4 |
| 4 | IT | B | Bhanu | 2 |
| 4 | IT | B | Priya | 4 |
连接操作
它根据一个条件将关系 R1 和 R2 组合起来。它用⋈表示。
不同类型的连接操作如下 −
Theta 连接
自然连接
外连接
外连接
左外连接
右外连接
全外连接
Theta 连接
如果我们连接 R1 和 R2,但条件不相等,则称为 Theta 连接/非等值连接。
示例
考虑 R1 表
| RegNo | Branch | Section |
|---|---|---|
| 1 | CSE | A |
| 2 | ECE | B |
| 3 | CIVIL | A |
| 4 | IT | B |
| 5 | IT | A |
表 R2
| Name | RegNo |
|---|---|
| Bhanu | 2 |
| Priya | 4 |
R1 ⋈ R2 条件为 R1.regno > R2.regno
| RegNo | Branch | Section | Name | Regno |
|---|---|---|---|---|
| 3 | CIVIL | A | Bhanu | 2 |
| 4 | IT | B | Bhanu | 2 |
| 5 | IT | A | Bhanu | 2 |
| 5 | IT | B | Priya | 4 |
在连接操作中,我们从笛卡尔积中选择满足 R1.regno>R2.regno 的行。
连接操作 = 选择操作 + 笛卡尔积操作
自然连接
如果我们在相等条件下连接 R1 和 R2,则称为自然连接或等值连接。通常,连接被称为自然连接。
R1 和 R2 的自然连接如下 −
{我们从笛卡尔积中选择满足 R1.regno=R2.regno 的元组}
R1 ⋈ R2
| Regno | Branch | Section | Name |
|---|---|---|---|
| 2 | - | - | Bhanu |
| 4 | - | - | Priya |
外连接
它是自然连接的扩展,用于处理关系中的缺失值。
考虑如下所示的 R1 和 R2 −
表 R1
| Regno | Branch | Section |
|---|---|---|
| 1 | CSE | A |
| 2 | ECE | B |
| 3 | CIVIL | A |
| 4 | IT | B |
| 5 | IT | A |
表 R2
| Name | Regno |
|---|---|
| Bhanu | 2 |
| Priya | 4 |
| Hari | 7 |
外连接有三种类型。下面将通过示例进行解释。
左外连接
表示为 R1 ⋈ R2
| Regno | Branch | Section | Name | Regno |
|---|---|---|---|---|
| 2 | - | - | Bhanu | 2 |
| 4 | - | - | Priya | 4 |
| 1 | - | - | NULL | NULL |
| 3 | - | - | NULL | NULL |
| 5 | - | - | NULL | NULL |
此处,R1(左表)的所有元组都出现在输出中。
R2 中不匹配的值填充为 NULL。
左外连接 = 自然连接 + 不匹配 / R1 的额外元组。
右外连接
表示为 R1 ⋈ R2
此处,R2(右表)的所有元组都出现在输出中。R1 中不匹配的值填充为 NULL。
| Regno | Branch | Section | Name | Regno |
|---|---|---|---|---|
| 2 | - | - | Bhanu | 2 |
| 4 | - | - | Priya | 4 |
| NULL | NULL | NULL | Hari | 7 |
右外连接 = 自然连接 + R2 的不匹配/额外元组。
全外连接
表示为 R1 ⋈ R2。
全外连接 = 左外连接 + 右外连接。
| Regno | Branch | Section | Name | Regno |
|---|---|---|---|---|
| 2 | - | - | Bhanu | 2 |
| 4 | - | - | Priya | 4 |
| 1 | - | - | NULL | NULL |
| 3 | - | - | NULL | NULL |
| 5 | - | - | NULL | NULL |
| NULL | NULL | NULL | Hari | 7 |
示例
下图描述了全外连接 −

除法运算
除法运算符用于涉及"全部"的查询。
R1 ÷ R2 = R1 的元组与 R2 的所有元组相关联。
示例
检索所有课程中教授的科目名称
| Name | Course |
|---|---|
| System | Btech |
| Database | |
| Database | Btech |
| Algebra | Btech |
| Course |
|---|
| Btech |
| Btech |
÷
| Name |
|---|
| database |
=
结果操作必须具有第一个关系或 R 中存在的关系 S 的元组的所有组合。

