Open In App

SQL Joins (Inner, Left, Right and Full Join)

Last Updated : 01 Aug, 2025
Comments
Improve
Suggest changes
Like Article
Like
Report

SQL joins are fundamental tools for combining data from multiple tables in relational databases.

  • For example, consider two tables where one table (say Student) has student information with id as a key and other table (say Marks) has information about marks of every student id. Now to display the marks of every student with name, we need to join the two tables.
  • Please remember, we store data into multiple tables as part of database normalization to avoid anomalies and redundancies.

Types of SQL Joins

Let us visualize how each join type operates:

1. SQL INNER JOIN

The INNER JOIN keyword selects all rows from both the tables as long as the condition is satisfied. This keyword will create the result set by combining all rows from both the tables where the condition satisfies i.e value of the common field will be the same. 

Syntax:

SELECT table1.column1,table1.column2,table2.column1,.... FROM table1 INNER JOIN table2 ON table1.matching_column = table2.matching_column;

Note: We can also write JOIN instead of INNER JOIN. JOIN is same as INNER JOIN. 

SQL-Join
Inner Join

Example of INNER JOIN

Consider the two tables, Student and StudentCourse, which share a common column ROLL_NO. Using SQL JOINS, we can combine data from these tables based on their relationship, allowing us to retrieve meaningful information like student details along with their enrolled courses. 

1. Student Table:

Student_table
Student

2. StudentCourse Table:

StudentCourse_Table
StudentCourse


Let's look at the example of INNER JOIN clause, and understand it's working. This query will show the names and age of students enrolled in different courses.  

Query:

SELECT StudentCourse.COURSE_ID, Student.NAME, Student.AGE FROM Student
INNER JOIN StudentCourse
ON Student.ROLL_NO = StudentCourse.ROLL_NO;

Output

Example_innerjoin
Output

2. SQL LEFT JOIN

A LEFT JOIN returns all rows from the left table, along with matching rows from the right table. If there is no match, NULL values are returned for columns from the right table. LEFT JOIN is also known as LEFT OUTER JOIN.

Syntax

SELECT table1.column1,table1.column2,table2.column1,....
FROM table1
LEFT JOIN table2
ON table1.matching_column = table2.matching_column;

Note: We can also use LEFT OUTER JOIN instead of LEFT JOIN, both are the same.

Left_Join
Left JOIN

LEFT JOIN Example

In this example, the LEFT JOIN retrieves all rows from the Student table and the matching rows from the StudentCourse table based on the ROLL_NO column.

Query:

SELECT Student.NAME,StudentCourse.COURSE_ID
FROM Student
LEFT JOIN StudentCourse
ON StudentCourse.ROLL_NO = Student.ROLL_NO;

Output

table31
Output

3. SQL RIGHT JOIN

RIGHT JOIN returns all the rows of the table on the right side of the join and matching rows for the table on the left side of the join. It is very similar to LEFT JOIN for the rows for which there is no matching row on the left side, the result-set will contain null. RIGHT JOIN is also known as RIGHT OUTER JOIN. 

Syntax

SELECT table1.column1,table1.column2,table2.column1,....
FROM table1
RIGHT JOIN table2
ON table1.matching_column = table2.matching_column;

Key Terms

  • table1: First table.
  • table2: Second table
  • matching_column: Column common to both the tables.

Note: We can also use RIGHT OUTER JOIN instead of RIGHT JOIN, both are the same

Right_join
Right JOIN

RIGHT JOIN Example

In this example, the RIGHT JOIN retrieves all rows from the StudentCourse table and the matching rows from the Student table based on the ROLL_NO column.

Query:

SELECT Student.NAME,StudentCourse.COURSE_ID
FROM Student
RIGHT JOIN StudentCourse
ON StudentCourse.ROLL_NO = Student.ROLL_NO;

Output

example_rightjoin
Output

4. SQL FULL JOIN

FULL JOIN creates the result-set by combining results of both LEFT JOIN and RIGHT JOIN. The result-set will contain all the rows from both tables. For the rows for which there is no matching, the result-set will contain NULL values.

Full_Join

Syntax

SELECT table1.column1,table1.column2,table2.column1,....
FROM table1
FULL JOIN table2
ON table1.matching_column = table2.matching_column;

Key Terms

  • table1: First table.
  • table2: Second table
  • matching_column: Column common to both the tables.

FULL JOIN Example

This example demonstrates the use of a FULL JOIN, which combines the results of both LEFT JOIN and RIGHT JOIN. The query retrieves all rows from the Student and StudentCourse tables. If a record in one table does not have a matching record in the other table, the result set will include that record with NULL values for the missing fields

Query:

SELECT Student.NAME,StudentCourse.COURSE_ID
FROM Student
FULL JOIN StudentCourse
ON StudentCourse.ROLL_NO = Student.ROLL_NO;

Output 

NAME

COURSE_ID

HARSH

1

PRATIK

2

RIYANKA

2

DEEP

3

SAPTARHI

1

DHANRAJ

NULL

ROHIT

NULL

NIRAJ

NULL

NULL

4

NULL

5

NULL

4

5. SQL Natural Join (?)

A Natural Join is a type of INNER JOIN that automatically joins two tables based on columns with the same name and data type. It returns only the rows where the values in the common columns match.

  • It returns rows where the values in these common columns are the same in both tables.
  • Common columns appear only once in the result, even if they exist in both tables.
  • Unlike a CROSS JOIN, which creates all possible combinations of rows, a Natural Join only includes rows with matching values

Example:

Look at the two tables below: Employee and Department

Employee 

Emp_idEmp_nameDept_id
1Ram 10
2Jon 30
3Bob50

Department 

Dept_idDept_name
10IT
30HR
40TIS

Find all Employees and their respective departments.

(Employee) ? (Department)

Output:

Emp_idEmp_nameDept_idDept_idDept_name
1Ram 1010IT 
2Jon3030HR

Joins in SQL
Visit Course explore course icon

Similar Reads