Join Operations:
A Join operation combines related tuples from different relations, if and only if a given join condition is satisfied. It is denoted by ⋈.
Example:
EMPLOYEE
EMP_CODE |
EMP_NAME |
101 |
Stephan |
102 |
Jack |
103 |
Harry |
SALARY
EMP_CODE |
SALARY |
101 |
50000 |
102 |
30000 |
103 |
25000 |
Operation: (EMPLOYEE ⋈ SALARY)
Result:
EMP_CODE |
EMP_NAME |
SALARY |
101 |
Stephan |
50000 |
102 |
Jack |
30000 |
103 |
Harry |
25000 |
Types of Join operations:
1. Natural Join:
- A natural join is the set of tuples of all combinations in R and S that are equal on their common attribute names.
- It is denoted by ⋈.
Example: Let's use the above EMPLOYEE table and SALARY table:
Input:
∏EMP_NAME, SALARY (EMPLOYEE ⋈ SALARY)
Output:
EMP_NAME |
SALARY |
Stephan |
50000 |
Jack |
30000 |
Harry |
25000 |
2. Outer Join:
The outer join operation is an extension of the join operation. It is used to deal with missing information.
Example:
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 |
Input:
(EMPLOYEE ⋈ FACT_WORKERS)
Output:
EMP_NAME |
STREET |
CITY |
BRANCH |
SALARY |
Ram |
Civil line |
Mumbai |
Infosys |
10000 |
Shyam |
Park street |
Kolkata |
Wipro |
20000 |
Hari |
Nehru nagar |
Hyderabad |
TCS |
50000 |
An outer join is basically of three types:
- Left outer join
- Right outer join
- Full outer join
a. Left outer join:
- Left outer join contains the set of tuples of all combinations in R and S that are equal on their common attribute names.
- In the left outer join, tuples in R have no matching tuples in S.
- It is denoted by ⟕.
Example: Using the above EMPLOYEE table and FACT_WORKERS table
Input:
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. Right outer join:
- Right outer join contains the set of tuples of all combinations in R and S that are equal on their common attribute names.
- In right outer join, tuples in S have no matching tuples in R.
- It is denoted by ⟖.
Example: Using the above EMPLOYEE table and FACT_WORKERS Relation
Input:
Output:
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. Full outer join:
- Full outer join is like a left or right join except that it contains all rows from both tables.
- In full outer join, tuples in R that have no matching tuples in S and tuples in S that have no matching tuples in R in their common attribute name.
- It is denoted by ⟗.
Example: Using the above EMPLOYEE table and FACT_WORKERS table
Input:
Output:
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. Equi join:
It is also known as an inner join. It is the most common join. It is based on matched data as per the equality condition. The equi join uses the comparison operator(=).
Example:
CUSTOMER RELATION
CLASS_ID |
NAME |
1 |
John |
2 |
Harry |
3 |
Jackson |
PRODUCT
PRODUCT_ID |
CITY |
1 |
Delhi |
2 |
Mumbai |
3 |
Noida |
Input:
Output:
CLASS_ID |
NAME |
PRODUCT_ID |
CITY |
1 |
John |
1 |
Delhi |
2 |
Harry |
2 |
Mumbai |
3 |
Harry |
3 |
Noida |
|