SQL is a powerful tool for interacting with relational databases. When working with tables in SQL, you often need to combine data from multiple tables. This is where JOIN operations help. LEFT JOIN and LEFT OUTER JOIN are two commonly used commands. Although they seem different, they actually perform the same function. Let’s understand the working and difference between SQL LEFT JOIN vs. LEFT OUTER JOIN.
A LEFT JOIN is a type of SQL JOIN operation that combines rows from two tables based on a related column. The key feature of a LEFT JOIN is that it returns all rows from the left table and the matched rows from the right table. If there’s no match, the result will include NULL values for columns from the right table.
Syntax
SELECT columns
FROM left_table
LEFT JOIN right_table
ON left_table.column_name = right_table.column_name;
In the above syntax:
Example of LEFT JOIN
SELECT employees.name, departments.department_name
FROM employees
LEFT JOIN departments
ON employees.department_id = departments.id;
This query retrieves all employees and their corresponding department names. If an employee is not assigned to any department, the result will show NULL for the department name.
Also Read: Joins In SQL – Inner, Left, Right and Full Joins Explained
The LEFT OUTER JOIN operates exactly like the LEFT JOIN. It returns all rows from the left table and the matched rows from the right table. If there’s no match, it returns NULL for columns from the right table. The term “OUTER” is optional and does not change the behavior of the JOIN. It’s often used for clarity in some SQL dialects.
Syntax
SELECT columns
FROM left_table
LEFT OUTER JOIN right_table
ON left_table.column_name = right_table.column_name;
Using the same example as above, we could rewrite our query as follows:
As you can see, the syntax is identical to the LEFT JOIN. The only difference is the inclusion of the word OUTER.
Example of LEFT OUTER JOIN
SELECT employees.name, departments.department_name
FROM employees
LEFT OUTER JOIN departments
ON employees.department_id = departments.id;
This query also retrieves all employees and their corresponding department names, just like the LEFT JOIN. If an employee is not assigned to any department, the result will show NULL for the department name.
Also Read: SQL Guide from Basics to Advance Level
While the terms LEFT JOIN and LEFT OUTER JOIN may appear different, they are functionally identical in SQL. The only difference lies in the syntax:
Both commands return the same results, so the choice between them is a matter of personal or organizational preference.
To create a sample database with employees and departments tables, and then use the LEFT JOIN and RIGHT JOIN examples, you can use the following SQL commands.
First, create the database where the tables will reside.
CREATE DATABASE company_db;
USE company_db;
Now, let’s create the employees and departments tables.
-- Create the 'departments' table
CREATE TABLE departments (
id INT PRIMARY KEY,
department_name VARCHAR(100) NOT NULL
);
-- Create the 'employees' table
CREATE TABLE employees (
id INT PRIMARY KEY,
name VARCHAR(100) NOT NULL,
department_id INT,
FOREIGN KEY (department_id) REFERENCES departments(id)
);
Now, insert some sample data into both tables:
-- Insert data into 'departments' table
INSERT INTO departments (id, department_name) VALUES
(1, 'HR'),
(2, 'IT'),
(3, 'Finance'),
(4, 'Marketing');
Output:
-- Insert data into 'employees' table
INSERT INTO employees (id, name, department_id) VALUES
(1, 'Alice', 2),
(2, 'Bob', 3),
(3, 'Charlie', NULL),
(4, 'David', 1);
Output:
Now that the database and tables are created and populated with data, you can run the LEFT JOIN and RIGHT JOIN queries.
SELECT employees.name, departments.department_name
FROM employees
LEFT JOIN departments
ON employees.department_id = departments.id;
Output:
SELECT employees.name, departments.department_name
FROM employees
RIGHT JOIN departments
ON employees.department_id = departments.id;
Output:
In summary, both LEFT JOIN and LEFT OUTER JOIN are synonymous terms in SQL that serve the same purpose of combining data from two tables while ensuring that all records from the left table are included in the result set. The choice between using one term over the other often comes down to personal or organizational preference. Understanding this can enhance your efficiency when writing SQL queries and prevent confusion during data manipulation tasks.
Put your SQL knowledge to test with these SQL Projects!
A. There is no difference. LEFT JOIN and LEFT OUTER JOIN are functionally identical. The term “OUTER” is optional and used for clarity.
A. Use a LEFT JOIN when you need all records from the left table, even if there are no matching records in the right table.
A. Yes, a LEFT JOIN returns NULL values for columns from the right table when there is no match for a row in the left table.
A. Yes, you can use LEFT JOIN and LEFT OUTER JOIN interchangeably in SQL queries. Both produce the same results.