当且仅当满足给定的连接条件时,连接操作才组合来自不同关系的相关元组。 它用⋈
符号来表示。
示例:
员工(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 |
连接操作的类型:
自然连接是R
和S
中所有组合的元组集,它们的公共属性名称相等。它用符号⋈
表示。
示例 :使用上面的EMPLOYEE
表和SALARY
表:
输入:
∏EMP_NAME, SALARY (EMPLOYEE ⋈ SALARY)
输出结果如下 -
EMP_NAME | SALARY |
---|---|
Stephan | 50000 |
Jack | 30000 |
Harry | 25000 |
外连接操作是连接操作的扩展,它用于处理缺失的信息。
示例:
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 |
它也被称为内连接,这是最常见的加入。 它基于相等条件的匹配数据。相等连接使用比较运算符(=)。
示例:
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 |