programming/SQL

[SQL] left join과 full outer join의 차이점

Jofresh 2024. 3. 13. 13:48
728x90
반응형

LEFT JOIN FULL OUTER JOIN은 두 테이블을 결합할 때 사용하는 SQL 조인 유형입니다. 각각의 동작 방식과 차이점을 예시를 통해 설명하겠습니다.

gpt한테 그려달라고 했는데 너무 못 그리네요

 

예를 들어, 두 테이블 Employees와 Departments가 있다고 가정합시다.

Employees 테이블:

EmployeeID | EmployeeName | DepartmentID
-----------|--------------|-------------
1          | John         | 1
2          | Jane         | 2
3          | Bob          | 3

Departments 테이블:

DepartmentID | DepartmentName
-------------|---------------
1            | HR
2            | IT
4            | Marketing

 

 

1. LEFT JOIN

 

LEFT JOIN은 왼쪽 테이블(Employees)의 모든 행과 오른쪽 테이블(Departments)의 일치하는 행을 반환합니다. 일치하는 행이 없는 경우, 오른쪽 테이블의 해당 필드는 NULL 값을 가집니다.

 

SQL 쿼리:

SELECT Employees.EmployeeName, Departments.DepartmentName
FROM Employees
LEFT JOIN Departments ON Employees.DepartmentID = Departments.DepartmentID;

 

결과:

EmployeeName | DepartmentName
-------------|---------------
John         | HR
Jane         | IT
Bob          | NULL

 

Bob DepartmentID 3인데, Departments 테이블에는 DepartmentID 3인 부서가 없어 DepartmentName NULL로 표시됩니다.

 

2. FULL OUTER JOIN

 

FULL OUTER JOIN은 두 테이블의 모든 행을 반환합니다. 한 테이블에는 존재하지만 다른 테이블에는 존재하지 않는 행도 포함됩니다. 일치하지 않는 행의 경우, 해당 테이블의 나머지 열은 NULL 값을 가집니다.

 

SQL 쿼리:

SELECT Employees.EmployeeName, Departments.DepartmentName
FROM Employees
FULL OUTER JOIN Departments ON Employees.DepartmentID = Departments.DepartmentID;

 

결과:

EmployeeName | DepartmentName
-------------|---------------
John         | HR
Jane         | IT
Bob          | NULL
NULL         | Marketing

 

FULL OUTER JOIN에서는 Employees 테이블에 있는 Bob (DepartmentID 3) Departments 테이블에 있는 Marketing (DepartmentID 4)이 모두 결과에 포함되어 있습니다. 하나의 테이블에만 존재하는 행도 결과에 포함되므로, 이들의 일치하지 않는 열은 NULL 값을 가집니다.

 

 

Summary

요약하자면, LEFT JOIN은 왼쪽 테이블의 모든 행을 포함하고, FULL OUTER JOIN은 두 테이블의 모든 행을 포함합니다.

728x90
반응형

'programming > SQL' 카테고리의 다른 글

SQL COUNT, CASE WHEN함수 함께 사용하기  (0) 2023.07.17
JSON 데이터 추출하는 방법 (json_extract, json_array 함수 등)  (0) 2023.05.26
[SQL]17강_GROUP BY  (0) 2023.05.08
[SQL]16강_UNION  (0) 2023.05.01
[SQL]15강_FULL OUTER JOIN  (0) 2023.05.01