OUTER JOIN 심화 (ANSI/ISO SQL 표준방식의 OUTER JOIN)
참고1 ) (+)로 조인시, 불명확하게 보일 수도 있고, DMBS 마다 문법이 다르며,
(+)가 누락된 조인 및 검색 조건 존재시 INNER JOIN으로 수행, FULL OUTER JOIN 미지원 등 불편함이 있다.
참고2 ) 그리하여, ANSI/ISO SQL 표준 방식의 OUTER JOIN 문법을 사용하면 높은 호환성을 가질 수 있다.
본문은 ANSI/ISO SQL 표준 방식을 사용할 것이다. (FROM절에서 정의한다.)
수행에 사용한 데이터


1. LEFT OUTER JOIN
- 조인 수행시 좌측 테이블이 기준이 되며 먼저 읽는다. 우측 테이블에서 조인 대상 데이터를 읽어온다.
- 즉, 우측 테이블에서 조인 조건을 만족하는 값이 없으면, NULL 값을 반환한다.
- LEFT JOIN 으로 OUTER 키워드를 생략 할 수 있다.
# LEFT OUTER JOIN
SQL> SELECT A.ENAME, B.DNAME
FROM EMP A LEFT OUTER JOIN DEPT B #(=FROM EMP A LEFT JOIN DEPT B)
ON B.DEPTNO = A.DEPTNO;
# 실행결과
ENAME DNAME
------------------
유희선 영업
고종수 유통
이천수 마케팅
이청용 영업
박지성 생산
도롱뇽
2. RIGHT OUTER JOIN
- 조인 수행시 우측 테이블이 기준이 되며 먼저 읽는다. 좌측 테이블에서 조인 대상 데이터를 읽어온다.
- 즉, 좌측 테이블에서 조인 조건을 만족하는 값이 없으면, NULL 값을 반환한다.
- RIGHT JOIN 으로 OUTER 키워드를 생략 할 수 있다.
# RIGHT OUTER JOIN
SQL> SELECT A.ENAME, B.DNAME
FROM EMP A RIGHT OUTER JOIN DEPT B #(=FROM EMP A RIGHT JOIN DEPT B)
ON B.DEPTNO = A.DEPTNO;
# 실행결과
ENAME DNAME
------------------
유희선 영업
이청용 영업
고종수 유통
박지성 생산
이천수 마케팅
SW개발
DMBS관리
3. FULL OUTER JOIN
- LEFT 와 RIGHT OUTER JOIN의 결과를 합집합으로 처리한 결과와 동일하다.
(조인에 성공한 행들은 교집합으로 간주하고 한번만 표시한다.)
(출력순서는 RIGHT -> LEFT 순이다)
- FULL JOIN 으로 OUTER 키워드를 생략 할 수 있다.
# FULL OUTER JOIN
SQL> SELECT *
FROM EMP A FULL OUTER JOIN DEPT B #(=FROM EMP A FULL JOIN DEPT B)
ON B.DEPTNO = A.DEPTNO;
# 실행결과
ENAME DEPTNO DEPTNO DNAME
---------------------------------------------------------------------
유희선 D01 D01 영업
이청용 D01 D01 영업
고종수 D02 D03 유통
박지성 D03 D03 생산
이천수 D04 D04 마케팅
D05 D05 SW개발
D06 D06 DMBS관리
도롱뇽