← Back to Questions
SQL

What are the different types of joins in SQL?

Learn What are the different types of joins in SQL? with simple explanations, real-time examples, interview tips and practical use cases.

What are the Different Types of Joins in SQL?

SQL JOINs are used to combine data from multiple related tables based on common columns.

In simple words:

JOINs help fetch related information stored across multiple database tables.


Why JOINs are Important

In relational databases:

  • Data is stored in separate tables
  • Tables are connected using relationships

JOINs allow:

  • Combining related data
  • Generating reports
  • Building analytics
  • Fetching complete business information

Real-Time Example

Suppose a learning platform stores:

  • Students
  • Courses

Students Table

Student ID Name Course ID
1 Naresh 101
2 Rahul 102
3 Arjun 105

Courses Table

Course ID Course Name
101 MySQL
102 Spring Boot
103 Microservices

Types of JOINs in SQL

  • INNER JOIN
  • LEFT OUTER JOIN
  • RIGHT OUTER JOIN
  • FULL OUTER JOIN
  • CROSS JOIN
  • SELF JOIN

JOIN Architecture

Table A
    |
    v
JOIN CONDITION
    |
    v
Table B
    |
    v
Combined Result

1. INNER JOIN

INNER JOIN returns:

Only matching rows from both tables.


INNER JOIN Syntax

SELECT columns

FROM table1

INNER JOIN table2
ON table1.column = table2.column;

Example

SELECT s.name,
       c.course_name

FROM students s

INNER JOIN courses c
ON s.course_id = c.course_id;

INNER JOIN Result

Name Course Name
Naresh MySQL
Rahul Spring Boot

Important Observation

Arjun is not included because:

course_id = 105

does not exist in courses table.


INNER JOIN Visualization

Students Table    Courses Table

     [ MATCHING RECORDS ]

2. LEFT OUTER JOIN

LEFT JOIN returns:

  • All rows from left table
  • Matching rows from right table

LEFT JOIN Syntax

SELECT columns

FROM table1

LEFT JOIN table2
ON table1.column = table2.column;

Example

SELECT s.name,
       c.course_name

FROM students s

LEFT JOIN courses c
ON s.course_id = c.course_id;

LEFT JOIN Result

Name Course Name
Naresh MySQL
Rahul Spring Boot
Arjun NULL

Why NULL Appears?

Because no matching course exists for:

course_id = 105

LEFT JOIN Visualization

All LEFT TABLE Rows
        +
Matching RIGHT TABLE Rows

3. RIGHT OUTER JOIN

RIGHT JOIN returns:

  • All rows from right table
  • Matching rows from left table

RIGHT JOIN Example

SELECT s.name,
       c.course_name

FROM students s

RIGHT JOIN courses c
ON s.course_id = c.course_id;

RIGHT JOIN Result

Name Course Name
Naresh MySQL
Rahul Spring Boot
NULL Microservices

Why NULL Appears?

Because:

course_id = 103

has no matching student.


RIGHT JOIN Visualization

Matching LEFT TABLE Rows
        +
All RIGHT TABLE Rows

4. FULL OUTER JOIN

FULL OUTER JOIN returns:

  • All matching rows
  • All non-matching rows from both tables

FULL OUTER JOIN Example

SELECT s.name,
       c.course_name

FROM students s

FULL OUTER JOIN courses c
ON s.course_id = c.course_id;

FULL OUTER JOIN Result

Name Course Name
Naresh MySQL
Rahul Spring Boot
Arjun NULL
NULL Microservices

FULL OUTER JOIN Visualization

All LEFT TABLE Rows
        +
All RIGHT TABLE Rows

5. CROSS JOIN

CROSS JOIN returns:

Cartesian product of both tables.


What is Cartesian Product?

Every row from first table combines with:

  • Every row from second table

CROSS JOIN Syntax

SELECT columns

FROM table1

CROSS JOIN table2;

Example

SELECT s.name,
       c.course_name

FROM students s

CROSS JOIN courses c;

Result Understanding

If:

  • Students = 3 rows
  • Courses = 3 rows

Result:

3 × 3 = 9 rows

CROSS JOIN Visualization

Student1 -> All Courses
Student2 -> All Courses
Student3 -> All Courses

When CROSS JOIN is Used

  • Generating combinations
  • Matrix reports
  • Test data generation

6. SELF JOIN

SELF JOIN joins:

A table with itself.


Why SELF JOIN is Used

To find relationships within same table.


Real-Time Example

Employees table:

  • Employee
  • Manager

Employees Table

Employee ID Employee Name Manager ID
1 Naresh NULL
2 Rahul 1
3 Arjun 1

SELF JOIN Example

SELECT e.employee_name,
       m.employee_name AS manager_name

FROM employees e

LEFT JOIN employees m
ON e.manager_id = m.employee_id;

Result

Employee Manager
Rahul Naresh
Arjun Naresh

SELF JOIN Visualization

Employees Table
      |
      v
Join Same Table Again
      |
      v
Employee -> Manager Mapping

Summary of All JOIN Types

JOIN Type Description
INNER JOIN Only matching rows
LEFT JOIN All left rows + matching right rows
RIGHT JOIN All right rows + matching left rows
FULL OUTER JOIN All rows from both tables
CROSS JOIN Cartesian product
SELF JOIN Join table with itself

JOIN Execution Flow

Read Table A
      |
      v
Read Table B
      |
      v
Apply JOIN Condition
      |
      v
Generate Result Set

INNER JOIN vs OUTER JOIN

Feature INNER JOIN OUTER JOIN
Matching Rows Yes Yes
Non-Matching Rows No Yes
NULL Values Rare Common

Real-Time Banking Example

Banking systems use:

  • INNER JOIN for customer-account mapping
  • LEFT JOIN for customers without accounts

Example

SELECT c.customer_name,
       a.account_number

FROM customers c

LEFT JOIN accounts a
ON c.customer_id = a.customer_id;

Real-Time E-Commerce Example

E-commerce platforms use:

  • JOINs for orders, products, customers, payments

Example

SELECT o.order_id,
       c.customer_name,
       p.product_name

FROM orders o

INNER JOIN customers c
ON o.customer_id = c.customer_id

INNER JOIN products p
ON o.product_id = p.product_id;

Advantages of JOINs

  • Combine related data
  • Reduce data duplication
  • Support normalization
  • Improve reporting capabilities

Challenges of JOINs

  • Complex queries
  • Performance overhead on large tables
  • Improper indexing causes slow queries

JOIN Performance Best Practices

  • Index JOIN columns
  • Use INNER JOIN when possible
  • Avoid unnecessary CROSS JOINs
  • Filter data using WHERE clause

Related Learning Topics


Professional Interview Answer

The different types of JOINs in SQL are INNER JOIN, LEFT OUTER JOIN, RIGHT OUTER JOIN, FULL OUTER JOIN, CROSS JOIN, and SELF JOIN. INNER JOIN returns only matching rows from both tables. LEFT JOIN returns all rows from the left table and matching rows from the right table. RIGHT JOIN returns all rows from the right table and matching rows from the left table. FULL OUTER JOIN returns all matching and non-matching rows from both tables. CROSS JOIN returns the Cartesian product of both tables. SELF JOIN joins a table with itself to find hierarchical or related data within the same table. JOINs are widely used in relational databases for combining related information across multiple tables.


Why Interviewers Like This Answer

  • Explains all major JOIN types clearly
  • Includes real-world SQL examples
  • Shows relational database understanding
  • Explains practical business usage
  • Covers performance and optimization concepts

Frequently Asked Questions

What is INNER JOIN?

INNER JOIN returns only matching rows from both tables.

What is LEFT JOIN?

LEFT JOIN returns all rows from left table and matching rows from right table.

What is CROSS JOIN?

CROSS JOIN returns Cartesian product of both tables.

What is SELF JOIN?

SELF JOIN joins a table with itself.

Which JOIN is fastest?

INNER JOIN is usually the fastest because it processes only matching rows.

Why this SQL question is important?

This interview question helps candidates understand real-time backend development concepts, practical problem solving, coding fundamentals, system design basics and production-ready application behavior.

Practice this question carefully for Java backend roles, Spring Boot developer interviews, microservices interviews, company interviews and full-stack developer preparation.

About the Author

Naresh Kumar is a Senior Java Backend Engineer with experience building enterprise applications using Java, Spring Boot, Microservices, Docker, Kubernetes and Cloud technologies.