조인 심화: INNER·OUTER·SELF·CROSS, Oracle (+)
6. 정리
INNER JOIN 은 양쪽에 다 있는 행만, LEFT·RIGHT·FULL OUTER JOIN 은 한쪽 또는 양쪽 전체를 남기고 짝 없는 자리를 NULL 로 채웁니다. ON 은 짝짓기 규칙, WHERE 는 그 결과를 거르는 조건이라 역할이 다르고, OUTER JOIN 뒤 WHERE 로 오른쪽 컬럼을 거르면 조용히 INNER JOIN 처럼 동작하는 함정이 있습니다.
SELF JOIN 은 같은 테이블을 별칭으로 나눠 자기 참조 관계(직원-관리자)를 찾고, CROSS JOIN 은 조건 없이 모든 조합을 만들어 보고서 틀 같은 곳에 씁니다. 급여 등급처럼 범위로 맞추는 비등가 조인, 조인 뒤 COUNT(*) 가 부풀려지는 문제와 COUNT(DISTINCT) 해법도 실무에서 자주 마주칩니다.
DB별로는 Oracle·Tibero 의 구식 (+), MySQL 의 FULL OUTER JOIN 미지원, MSSQL 의 폐지된 *=·USING 미지원처럼 문법 차이가 있어, 새 코드는 ANSI JOIN 문법으로 통일하는 것이 안전합니다. 다음 레슨(중급 04)은 UNION·INTERSECT·EXCEPT 같은 집합 연산을 다룹니다.