SQL 조인 완전 정복: INNER, LEFT, RIGHT, CROSS (그리고 콤마 조인)
Published: 2026-02-04
SQL 조인은 서로 관련된 컬럼을 기준으로 두 테이블의 행을 결합할 수 있게 해 줍니다. 이 짧은 튜토리얼에서는 네 가지 핵심 조인 타입을 보여 주고, 콤마 조인이 CROSS JOIN과 동일한 이유를 설명합니다.
샘플 데이터
모든 예제에서 다음 두 테이블을 사용합니다:
employees 테이블:
| id | name | dept_id |
|---|---|---|
| 1 | Ava | 10 |
| 2 | Ben | 20 |
| 3 | Cara | NULL |
departments 테이블:
| dept_id | dept_name |
|---|---|
| 10 | Sales |
| 20 | Engineering |
| 30 | Support |
브라우저에서 조인 직접 실행해 보기
예제 쿼리를 페이지에서 바로 실행할 수 있습니다. 쿼리를 수정한 뒤 Run을 클릭하세요.
INNER JOIN
두 테이블 모두에서 일치하는 행만 반환합니다.
결과: Ava/Sales, Ben/Engineering. Cara는 일치하는 부서가 없기 때문에 제외되고, Support는 30번 부서에 속한 직원이 없기 때문에 제외됩니다.
LEFT JOIN (LEFT OUTER JOIN)
왼쪽 테이블의 모든 행과, 오른쪽 테이블에서 일치하는 행을 반환합니다. 일치하지 않는 오른쪽 테이블의 값은 NULL이 됩니다.
결과: Ava/Sales, Ben/Engineering, Cara/NULL. 모든 직원이 유지됩니다.
RIGHT JOIN (RIGHT OUTER JOIN)
오른쪽 테이블의 모든 행과, 왼쪽 테이블에서 일치하는 행을 반환합니다. 일치하지 않는 왼쪽 테이블의 값은 NULL이 됩니다.
결과: Ava/Sales, Ben/Engineering, NULL/Support. 모든 부서가 유지됩니다.
참고: 많은 개발자는 가독성과 일관성을 위해 테이블 순서를 바꿔
RIGHT JOIN을LEFT JOIN으로 다시 쓰는 방식을 선호합니다.
CROSS JOIN
두 테이블의 데카르트 곱(모든 조합)을 반환합니다.
결과: 3 × 3 = 9개의 행(모든 직원이 모든 부서와 짝지어짐).
콤마 조인 (레거시 문법)
콤마 조인은 CROSS JOIN과 동일합니다. FROM 절에서 테이블을 콤마로 나열하는 방식입니다:
이는 CROSS JOIN과 동일한 데카르트 곱을 생성합니다. WHERE 절에 필터를 추가하면 INNER JOIN처럼 동작합니다:
여전히 유효한 문법이긴 하지만, 조인 로직과 필터를 섞어 쓰게 되어 가독성이 떨어질 수 있기 때문에 콤마 문법은 구식으로 간주됩니다. 명시적인 JOIN ... ON 문법을 사용하는 것이 좋습니다.
DbGate: 컬럼 확장 시 자동 LEFT JOIN
DbGate의 데이터 브라우저에서는 외래 키 컬럼을 확장하면 관련 데이터를 가져오기 위해 자동으로 LEFT JOIN이 포함된 쿼리를 생성합니다. 이렇게 하면 기본 데이터셋을 그대로 유지하면서도 관련 필드를 즉시 사용할 수 있습니다.
요약
INNER JOIN은 일치하는 행만 유지합니다.LEFT JOIN은 왼쪽 테이블의 모든 행을 유지합니다.RIGHT JOIN은 오른쪽 테이블의 모든 행을 유지합니다.CROSS JOIN은 모든 조합을 반환합니다.- 콤마 조인은
CROSS JOIN과 동일하며,WHERE필터를 추가하면INNER JOIN과 동일하게 동작합니다.