DBMS连接操作
精华
小牛编辑
177浏览
2023-03-14
当且仅当满足给定的连接条件时,连接操作才组合来自不同关系的相关元组。 它用⋈
符号来表示。
示例:
员工(EMPLOYEE
)表 -
EMP_CODE | EMP_NAME |
---|---|
101 | Stephan |
102 | Jack |
103 | Harry |
薪水(SALARY
)表 -
EMP_CODE | SALARY |
---|---|
101 | 50000 |
102 | 30000 |
103 | 25000 |
操作符号:
(EMPLOYEE ⋈ SALARY)
输出结果如下:
EMP_CODE | EMP_NAME | SALARY |
---|---|---|
101 | Stephan | 50000 |
102 | Jack | 30000 |
103 | Harry | 25000 |
连接操作的类型:
1.自然连接
自然连接是R
和S
中所有组合的元组集,它们的公共属性名称相等。它用符号⋈
表示。
示例 :使用上面的EMPLOYEE
表和SALARY
表:
输入:
∏EMP_NAME, SALARY (EMPLOYEE ⋈ SALARY)
输出结果如下 -
EMP_NAME | SALARY |
---|---|
Stephan | 50000 |
Jack | 30000 |
Harry | 25000 |
2. 外部连接
外连接操作是连接操作的扩展,它用于处理缺失的信息。
示例:
EMPLOYEE
表的结构和数据如下 -
EMP_NAME | STREET | CITY |
---|---|---|
Ram | Civil line | Mumbai |
Shyam | Park street | Kolkata |
Ravi | M.G. Street | Delhi |
Hari | Nehru nagar | Hyderabad |
FACT_WORKERS
表的结构和数据如下 -
EMP_NAME | BRANCH | SALARY |
---|---|---|
Ram | Infosys | 10000 |
Shyam | Wipro | 20000 |
Kuber | HCL | 30000 |
Hari | TCS | 50000 |
输入 -
(EMPLOYEE ⋈ FACT_WORKERS)
EMP_NAME | STREET | CITY | BRANCH | SALARY |
---|---|---|---|---|
Ram | Civil line | Mumbai | Infosys | 10000 |
Shyam | Park street | Kolkata | Wipro | 20000 |
Hari | Nehru nagar | Hyderabad | TCS | 50000 |
外连接基本上有三种类型:
- 左外连接
- 右外连接
- 全外连接
A. 左外连接:
- 左外连接包含
R
和S
中所有组合的元组集,它们的公共属性名称相等。 - 在左外连接中,
R
中的元组但在S
中没有匹配的元组。 - 它用
⟕
表示。
示例:使用上面的EMPLOYEE
表和FACT_WORKERS
表
输入 -
EMPLOYEE ⟕ FACT_WORKERS
输出 -
EMP_NAME | STREET | CITY | BRANCH | SALARY |
---|---|---|---|---|
Ram | Civil line | Mumbai | Infosys | 10000 |
Shyam | Park street | Kolkata | Wipro | 20000 |
Hari | Nehru street | Hyderabad | TCS | 50000 |
Ravi | M.G. Street | Delhi | NULL | NULL |
B. 右外连接:
- 右外连接包含
R
和S
中所有组合的元组集,它们的公共属性名称相等。 - 在右外连接中,
S
中的元组在R
中没有匹配的元组。 - 它使用
⟖
表示。
输入 -
EMPLOYEE ⟖ FACT_WORKERS
输出 -
EMP_NAME | BRANCH | SALARY | STREET | CITY |
---|---|---|---|---|
Ram | Infosys | 10000 | Civil line | Mumbai |
Shyam | Wipro | 20000 | Park street | Kolkata |
Hari | TCS | 50000 | Nehru street | Hyderabad |
Kuber | HCL | 30000 | NULL | NULL |
C. 全外连接:
- 完全外连接类似于左连接或右连接,除了它包含来自两个表的所有行。
- 在完全外连接中,包含
R
中的元组在S
中没有匹配的元组,S
中的元组在其公共属性名称中的R
中没有匹配的元组。 - 它使用
⟗
表示。
示例: 使用上面的EMPLOYEE
表和FACT_WORKERS
表
输入 -
EMPLOYEE ⟗ FACT_WORKERS
输出 -
EMP_NAME | STREET | CITY | BRANCH | SALARY |
---|---|---|---|---|
Ram | Civil line | Mumbai | Infosys | 10000 |
Shyam | Park street | Kolkata | Wipro | 20000 |
Hari | Nehru street | Hyderabad | TCS | 50000 |
Ravi | M.G. Street | Delhi | NULL | NULL |
Kuber | NULL | NULL | HCL | 30000 |
3. 相等连接
它也被称为内连接,这是最常见的加入。 它基于相等条件的匹配数据。相等连接使用比较运算符(=)。
示例:
CUSTOMER
表 -
CLASS_ID | NAME |
---|---|
1 | John |
2 | Harry |
3 | Jackson |
PRODUCT
表 -
PRODUCT_ID | CITY |
---|---|
1 | Delhi |
2 | Mumbai |
3 | Noida |
输入 -
CUSTOMER ⋈ PRODUCT
输出 -
CLASS_ID | NAME | PRODUCT_ID | CITY |
---|---|---|---|
1 | John | 1 | Delhi |
2 | Harry | 2 | Mumbai |
3 | Harry | 3 | Noida |