728x90
목차
아웃터 조인 (Outer Join)이란?
아웃터 조인(Outer Join)은 두 테이블을 조인할 때, 조건이 일치하지 않는 데이터도 포함하여 조회하는 방식입니다.
SQL에서는 LEFT JOIN, RIGHT JOIN, FULL OUTER JOIN이라는 세 가지 유형의 아웃터 조인이 있습니다.
1. 아웃터 조인의 종류
a) LEFT JOIN (LEFT OUTER JOIN)
- 왼쪽 테이블의 모든 데이터를 가져오며, 오른쪽 테이블과 일치하지 않는 데이터도 포함합니다.
- 일치하지 않는 경우에는 NULL로 표시됩니다.
b) RIGHT JOIN (RIGHT OUTER JOIN)
- 오른쪽 테이블의 모든 데이터를 가져오며, 왼쪽 테이블과 일치하지 않는 데이터도 포함합니다.
- 일치하지 않는 경우에는 NULL로 표시됩니다.
c) FULL OUTER JOIN
- 두 테이블의 모든 데이터를 가져옵니다.
- 일치하지 않는 경우, 각 테이블의 데이터가 NULL로 표시됩니다.
2. 아웃터 조인의 SQL 예제
a) LEFT JOIN 예제
SELECT e.emp_id, e.emp_name, d.dept_name
FROM employees e
LEFT JOIN departments d
ON e.dept_id = d.dept_id;
- 설명:
- employees 테이블에서 모든 데이터를 가져오고,
- departments 테이블과 dept_id가 일치하는 데이터를 가져옵니다.
- 일치하지 않는 경우, departments의 값은 NULL로 표시됩니다.
b) RIGHT JOIN 예제
SELECT e.emp_id, e.emp_name, d.dept_name
FROM employees e
RIGHT JOIN departments d
ON e.dept_id = d.dept_id;
- 설명
- departments 테이블에서 모든 데이터를 가져오고,
- employees 테이블과 dept_id가 일치하는 데이터를 가져옵니다.
- 일치하지 않는 경우, employees의 값은 NULL로 표시됩니다.
c) FULL OUTER JOIN 예제
SELECT e.emp_id, e.emp_name, d.dept_name
FROM employees e
FULL OUTER JOIN departments d
ON e.dept_id = d.dept_id;
- 설명
- employees와 departments의 모든 데이터를 가져옵니다.
- 양쪽 테이블에 없는 데이터는 NULL로 표시됩니다.
3. 아웃터 조인의 특징과 활용
특징
- 아웃터 조인은 한쪽 테이블의 데이터 손실 없이 결과를 조회하고 싶을 때 사용합니다.
- 일치하지 않는 데이터는 NULL 값으로 채워집니다.
활용 예시
- 직원 데이터(employees)와 부서 데이터(departments)를 조인
- 부서가 없는 직원을 찾고 싶다면 LEFT JOIN 사용.
- 직원이 없는 부서를 찾고 싶다면 RIGHT JOIN 사용.
- 전체 데이터를 조회하려면 FULL OUTER JOIN 사용.
4. LEFT JOIN, RIGHT JOIN, FULL OUTER JOIN 차이
조인 유형 포함 데이터 NULL 표시 영역
LEFT JOIN | 왼쪽 테이블의 모든 데이터 + 오른쪽 테이블의 매칭 데이터 | 오른쪽 테이블에서 매칭되지 않은 값 |
RIGHT JOIN | 오른쪽 테이블의 모든 데이터 + 왼쪽 테이블의 매칭 데이터 | 왼쪽 테이블에서 매칭되지 않은 값 |
FULL OUTER JOIN | 양쪽 테이블의 모든 데이터 | 양쪽 테이블에서 매칭되지 않은 값 |
5. 주의사항
- FULL OUTER JOIN은 일부 데이터베이스(MySQL 등)에서 기본적으로 지원하지 않을 수 있습니다.
- 해결 방법: LEFT JOIN과 RIGHT JOIN을 UNION으로 합쳐서 처리.
SELECT e.emp_id, e.emp_name, d.dept_name
FROM employees e
LEFT JOIN departments d
ON e.dept_id = d.dept_id
UNION
SELECT e.emp_id, e.emp_name, d.dept_name
FROM employees e
RIGHT JOIN departments d
ON e.dept_id = d.dept_id;
6. 정리
- LEFT JOIN: 왼쪽 테이블 데이터는 모두 포함, 오른쪽은 매칭된 데이터만.
- RIGHT JOIN: 오른쪽 테이블 데이터는 모두 포함, 왼쪽은 매칭된 데이터만.
- FULL OUTER JOIN: 양쪽 테이블 데이터 모두 포함, 매칭되지 않은 데이터는 NULL로 표시.
💡 한 줄 요약
아웃터 조인은 양쪽 테이블 간의 매칭 여부와 상관없이 데이터를 모두 조회하고 싶을 때 사용됩니다. 😊
728x90
'SQL' 카테고리의 다른 글
UNION ALL에 대하여 (0) | 2025.01.23 |
---|---|
SUBQUERY 가능한 절 정리 (0) | 2025.01.23 |
SQL -AS 사용 가능한 곳 (0) | 2025.01.23 |
SQL의 SELECT, FROM, WHERE, GROUP BY, HAVING, ORDER BY 쉽게 이해하기 (2) | 2025.01.23 |
SQL 명령어: DDL, DML, DCL 정리 (0) | 2025.01.21 |