SQL JOIN 정리 (INNER, OUTER, CROSS, SELF JOIN)

박우진·2025년 5월 17일

SQLD

목록 보기
2/12

1. INNER JOIN

양쪽 테이블에서 조건을 만족하는 행만 조회

SELECT *
FROM A
INNER JOIN B
ON A.id = B.a_id;

특징

  • 양쪽 모두 조건을 만족하는 행만 반환
  • 조인 조건이 없으면 곱집합(Cartesian Product) 발생
  • 컬럼명이 달라도 가능, 단 데이터 타입은 호환되어야 함

2. OUTER JOIN (LEFT, RIGHT, FULL)

LEFT OUTER JOIN

SELECT *
FROM A
LEFT JOIN B
ON A.id = B.a_id;

왼쪽(A) 테이블은 모두 유지, 오른쪽(B)은 매칭되는 것만

RIGHT OUTER JOIN

SELECT *
FROM A
RIGHT JOIN B
ON A.id = B.a_id;

오른쪽(B) 테이블은 모두 유지, 왼쪽(A)은 매칭되는 것만

FULL OUTER JOIN (지원 여부는 DBMS에 따라 다름)

SELECT *
FROM A
FULL OUTER JOIN B
ON A.id = B.a_id;

양쪽 테이블의 모든 데이터 포함, 매칭 안 되는 곳은 NULL


3. CROSS JOIN

SELECT *
FROM A
CROSS JOIN B;

조인 조건 없이 모든 행 조합 (곱집합)

  • A가 3개, B가 4개 → 결과는 3 × 4 = 12개
  • 조건이 없기 때문에 실제 서비스에서는 잘 사용하지 않음

4. SELF JOIN

SELECT a.emp_no, b.emp_no AS mgr_no
FROM employees a
JOIN employees b
ON a.mgr_id = b.emp_no;

자기 자신을 조인해서 계층 관계 표현 (예: 사원-상사)

  • 테이블에 별칭(alias) 을 붙여야 구분 가능
  • 계층형 구조 (부서, 관리자 관계 등)에서 자주 사용

정리 요약

JOIN 종류설명NULL 포함사용 예시
INNER JOIN조건을 만족하는 행만두 테이블에 모두 존재하는 회원 정보
LEFT JOIN왼쪽 테이블 전체 + 오른쪽 조건 만족구매 이력 없는 회원도 조회
RIGHT JOIN오른쪽 테이블 전체 + 왼쪽 조건 만족담당자가 없는 프로젝트도 조회
FULL OUTER JOIN양쪽 테이블 전체전체 비교 및 누락 탐색
CROSS JOIN모든 행 조합조합 가능한 모든 경우의 수
SELF JOIN같은 테이블을 조인상사-직원 구조 표현

참고 개념

  • 컬럼명이 달라도 JOIN 가능 (ON A.user_id = B.id)
  • 데이터 타입은 호환되어야 비교 가능
  • JOIN 조건이 없으면 INNER JOIN은 곱집합 발생 → 주의!
  • 복수 조건은 AND, OR로 조합 가능

0개의 댓글