Let’s understand SQL Joins with Examples

understand SQL Joins with Examples

In my journey working with databases, mastering SQL joins has been essential for retrieving data from multiple tables effectively. Below is a concise guide to different types of SQL joins, with clear explanations and practical examples. A use case for better understanding accompanies each query.


1. INNER JOIN

Query:

SELECT * 
FROM A 
INNER JOIN B ON A.key = B.key;

What it does:
Retrieves only the records with matching values in both tables.

Example:
Imagine two tables:

  • Orders: contains OrderID and CustomerID.
  • Customers: contains CustomerID and CustomerName.

To find all orders along with customer names:

SELECT Orders.OrderID, Customers.CustomerName 
FROM Orders 
INNER JOIN Customers ON Orders.CustomerID = Customers.CustomerID;

2. LEFT JOIN

Query:

SELECT * 
FROM A 
LEFT JOIN B ON A.key = B.key;

What it does:
Retrieves all records from the left table (A) and the matching ones from the right table (B). If no match, NULL is returned for B’s columns.

Example:
List all customers, including those who haven’t placed any orders:

SELECT Customers.CustomerName, Orders.OrderID 
FROM Customers 
LEFT JOIN Orders ON Customers.CustomerID = Orders.CustomerID;

3. LEFT JOIN with NULL Check

Query:

SELECT * 
FROM A 
LEFT JOIN B ON A.key = B.key 
WHERE B.key IS NULL;

What it does:
Finds records in the left table (A) that do not have a match in the right table (B).

Example:
Find customers who haven’t placed any orders:

SELECT Customers.CustomerName 
FROM Customers 
LEFT JOIN Orders ON Customers.CustomerID = Orders.CustomerID 
WHERE Orders.OrderID IS NULL;

4. RIGHT JOIN

Query:

SELECT * 
FROM A 
RIGHT JOIN B ON A.key = B.key;

What it does:
Retrieves all records from the right table (B) and the matching ones from the left table (A). If no match, NULL is returned for A’s columns.

Example:
List all products, including those not yet ordered:

SELECT Products.ProductName, Orders.OrderID 
FROM Products 
RIGHT JOIN Orders ON Products.ProductID = Orders.ProductID;

5. RIGHT JOIN with NULL Check

Query:

SELECT * 
FROM A 
RIGHT JOIN B ON A.key = B.key 
WHERE A.key IS NULL;

What it does:
Finds records in the right table (B) that do not have a match in the left table (A).

Example:
Identify products that have never been ordered:

SELECT Products.ProductName 
FROM Products 
RIGHT JOIN Orders ON Products.ProductID = Orders.ProductID 
WHERE Orders.OrderID IS NULL;

6. FULL JOIN

Query:

SELECT * 
FROM A 
FULL OUTER JOIN B ON A.key = B.key;

What it does:
Retrieves all records where there is a match in either table A or B.

Example:
Combine active and archived orders with their details:

SELECT A.OrderID, B.ArchivedOrderDetails 
FROM ActiveOrders A 
FULL OUTER JOIN ArchivedOrders B ON A.OrderID = B.OrderID;

7. FULL JOIN with NULL Check

Query:

SELECT * 
FROM A 
FULL OUTER JOIN B ON A.key = B.key 
WHERE A.key IS NULL OR B.key IS NULL;

What it does:
Finds records that exist in either table but not in both.

Example:
Find customers who have not placed an order or orders with no customer information:

SELECT Customers.CustomerName, Orders.OrderID 
FROM Customers 
FULL OUTER JOIN Orders ON Customers.CustomerID = Orders.CustomerID 
WHERE Customers.CustomerID IS NULL OR Orders.OrderID IS NULL;

Each of these SQL queries serves a unique purpose in database analysis. By understanding these joins and using the appropriate one for a given scenario, I’ve been able to unlock meaningful insights from relational data.

Scroll to Top