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 | 
 
 
 
  
  
 |