SQL

아웃터 조인 (Outer Join)

초코너무조코 2025. 1. 23. 11:45
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