Skip to content

조인을 집합으로 보면: INNER vs OUTER ​

조인을 벤 다이어그램(집합)으로 생각하면 종류별 차이가 한눈에 들어옵니다. 두 테이블 A, B가 있다고 할 때:

INNER JOIN          LEFT OUTER JOIN      RIGHT OUTER JOIN     FULL OUTER JOIN
  A ∩ B                A 전체 + 교집합       교집합 + B 전체        A ∪ B (합집합)

  (A)(B)               (A)(B)               (A)(B)               (A)(B)
   ▓▓                   ██▓▓                 ▓▓██                 ██▓▓██
  교집합만              A는 다 살리고         B는 다 살리고         둘 다 다 살리고
                        매칭 없으면 NULL      매칭 없으면 NULL      없는 쪽은 NULL
  • INNER JOIN: 양쪽에 다 매칭되는 행만 남깁니다. 교집합입니다.
  • LEFT OUTER JOIN: 왼쪽(기준) 테이블은 무조건 다 남기고, 오른쪽은 매칭되면 채우고 안 되면 NULL로 둡니다.
  • RIGHT OUTER JOIN: LEFT의 반대. 오른쪽 테이블을 기준으로 전부 살립니다. RIGHT OUTER JOIN은 사실 기준 테이블 순서만 바꾸면 LEFT OUTER JOIN으로 똑같이 쓸 수 있어서, 실무에서는 LEFT만 통일해서 쓰고 RIGHT은 잘 안 쓰는 경우가 많습니다.
  • FULL OUTER JOIN: 양쪽 테이블의 모든 행을 다 살립니다(합집합). 매칭이 안 되는 쪽은 NULL로 채웁니다. 사실상 "기준 테이블"이라는 개념 자체가 의미 없어집니다.
sql
-- 오른쪽 외부 조인
SELECT Star.Name, Dep.Name
FROM Star
RIGHT OUTER JOIN Dep ON Star.DepNo = Dep.DepNo;

-- 완전 외부 조인 (합집합)
SELECT Star.Name, Dep.Name
FROM Star
FULL OUTER JOIN Dep ON Star.DepNo = Dep.DepNo;

그 밖에 조인 방식을 부르는 이름 몇 가지도 알아두면 좋습니다.

  • 등가 조인(Equi Join): = 연산자로 매칭하는 가장 흔한 조인 (지금까지 본 예시가 전부 이 방식)
  • 비등가 조인(Non-Equi Join): =가 아닌 <, BETWEEN 등으로 매칭하는 조인 (예: 급여가 어떤 등급 구간에 속하는지 찾기)
  • 셀프 조인(Self Join): 같은 테이블을 자기 자신과 조인하는 것. 사원 테이블에서 "이 사원의 상사 이름"을 찾을 때처럼, 자기 참조 관계가 있는 테이블에서 씁니다.

참고: 개인 Notion 학습 노트