DEV Community

Cover image for Mastering SQL Joins - Inner, Outer, Cross, and Self-Joins with Examples
Luca Liu
Luca Liu

Posted on

Mastering SQL Joins - Inner, Outer, Cross, and Self-Joins with Examples

Introdution

SQL joins are a fundamental feature for combining data from multiple tables based on a related column. Understanding the different types of joins and their applications is essential for working with relational databases effectively. In this article, we’ll explore various SQL join types with clear explanations and practical examples.

Sample Tables

We’ll use the following Customers and Orders tables for examples:

Customers Table:

CustomerID Name Country
1 Alice USA
2 Bob Canada
3 Charlie UK
4 Diana Germany

Orders Table:

OrderID CustomerID Product Quantity
101 1 Laptop 2
102 1 Mouse 5
103 2 Keyboard 3
104 3 Monitor 1
105 5 Smartphone 2

1. INNER JOIN: Combining Matching Data

INNER JOIN retrieves rows that have matching values in both tables. It is the most commonly used join type.

Example: Combining Customers and Their Orders

Query:

SELECT Customers.Name, Orders.Product, Orders.Quantity
FROM Customers
INNER JOIN Orders
ON Customers.CustomerID = Orders.CustomerID;
Enter fullscreen mode Exit fullscreen mode

Result:

Name Product Quantity
Alice Laptop 2
Alice Mouse 5
Bob Keyboard 3
Charlie Monitor 1

Explanation:

  • Only customers with orders appear in the result.
  • Customer Diana and order 105 are excluded because they don’t have matching records in both tables.

2. LEFT JOIN: Including All Records from the Left Table

LEFT JOIN returns all rows from the left table (Customers), along with matching rows from the right table (Orders). Rows with no match in the right table will have NULL values.

Example: Including Customers Without Orders

Query:

SELECT Customers.Name, Orders.Product, Orders.Quantity
FROM Customers
LEFT JOIN Orders
ON Customers.CustomerID = Orders.CustomerID;
Enter fullscreen mode Exit fullscreen mode

Result:

Name Product Quantity
Alice Laptop 2
Alice Mouse 5
Bob Keyboard 3
Charlie Monitor 1
Diana NULL NULL

Explanation:

  • All customers are included, even if they don’t have orders.
  • Diana appears with NULL for Product and Quantity.

3. RIGHT JOIN: Including All Records from the Right Table

RIGHT JOIN is the opposite of LEFT JOIN. It includes all rows from the right table (Orders) and matching rows from the left table (Customers). Rows with no match in the left table will have NULL values.

Example: Including Orders Without Customers

Query:

SELECT Customers.Name, Orders.Product, Orders.Quantity
FROM Customers
RIGHT JOIN Orders
ON Customers.CustomerID = Orders.CustomerID;
Enter fullscreen mode Exit fullscreen mode

Result:

Name Product Quantity
Alice Laptop 2
Alice Mouse 5
Bob Keyboard 3
Charlie Monitor 1
NULL Smartphone 2

Explanation:

  • All orders are included, even if they don’t have matching customers.
  • Order 105 appears with NULL for Name because CustomerID = 5 is not in the Customers table.

4. FULL OUTER JOIN: Including All Records from Both Tables

FULL OUTER JOIN combines the results of LEFT JOIN and RIGHT JOIN, returning all rows from both tables. Rows with no match will have NULL values for the missing columns.

Example: Combining All Customers and Orders

Query:

SELECT Customers.Name, Orders.Product, Orders.Quantity
FROM Customers
FULL OUTER JOIN Orders
ON Customers.CustomerID = Orders.CustomerID;
Enter fullscreen mode Exit fullscreen mode

Result:

Name Product Quantity
Alice Laptop 2
Alice Mouse 5
Bob Keyboard 3
Charlie Monitor 1
Diana NULL NULL
NULL Smartphone 2

Explanation:

  • All customers and orders are included.
  • Diana (no orders) and order 105 (no matching customer) appear with NULL values.

5. CROSS JOIN: Cartesian Product

CROSS JOIN returns the Cartesian product of two tables, pairing every row from the left table with every row from the right table.

Example: Pairing Customers with Products

Query:

SELECT Customers.Name, Orders.Product
FROM Customers
CROSS JOIN Orders;
Enter fullscreen mode Exit fullscreen mode

Result:

Name Product
Alice Laptop
Alice Mouse
Alice Keyboard
Alice Monitor
Alice Smartphone
Bob Laptop
Bob Mouse
... ...

Explanation:

  • Every customer is paired with every product, resulting in 20 rows (4 Customers x 5 Orders).

6. SELF JOIN: Joining a Table with Itself

SELF JOIN is used to compare rows within the same table. It is useful for hierarchical or relationship data.

Example: Employee-Manager Relationship

Assume we have an Employees table:

EmployeeID Name ManagerID
1 Alice 3
2 Bob 3
3 Charlie NULL
4 Diana 1

Query: Find employees and their managers.

SELECT E1.Name AS Employee, E2.Name AS Manager
FROM Employees E1
LEFT JOIN Employees E2
ON E1.ManagerID = E2.EmployeeID;
Enter fullscreen mode Exit fullscreen mode

Result:

Employee Manager
Alice Charlie
Bob Charlie
Charlie NULL
Diana Alice

Explanation:

  • The table is joined with itself using ManagerID and EmployeeID to associate employees with their managers.

Summary of Joins

Join Type Description Example Use Case
INNER JOIN Matches rows in both tables. Customers with orders.
LEFT JOIN All rows from the left table, matching rows from the right. Customers with or without orders.
RIGHT JOIN All rows from the right table, matching rows from the left. Orders with or without customers.
FULL OUTER JOIN All rows from both tables, with NULLs for missing matches. Complete customer and order data.
CROSS JOIN Cartesian product of two tables. Pairing customers with products.
SELF JOIN Join a table with itself. Employee-manager relationships.

Conclusion

Understanding SQL joins is key to working with relational databases. Each join type serves a unique purpose, and mastering them will help you combine and analyze data efficiently. Practice these examples to solidify your understanding!


Explore more

Thank you for taking the time to explore data-related insights with me. I appreciate your engagement.

🚀 Connect with me on LinkedIn

Top comments (0)