Inner Join은 서로 매칭 되는것만 엮어 조회 한다.
Outer Join은 매칭 뿐만 아니라, 미매칭 데이터도 조회한다.
Outer Join은 조인 조건에서 동일한 값이 없는 행도 반환할 때 사용하는 구문이다.
즉 A,B 테이블을 Join 할 경우, 조건에 맞지 않는 데이터도 표시하고 싶을 때 Outer Join을 사용한다.
Outer Join 종류로는
Left Outer Join, Right Outer Join, Full Outer Join이 있다.
Outer Join은 USING 또는 ON 조건절을 필수적으로 사용 해야 한다.
LEFT OUTER JOIN과 RIGHT OUTER JOIN은 기준이 되는 테이블이 조인 수행 시 무조건 드라이빙 테이블(첫번째로 ACCESS 되는 테이블)이 된다.
또한, 드라이빙 테이블이 어떤 테이블이냐에 따라 쿼리 성능이나 튜닝 부분에서 굉장히 중요한 영향을 끼치기 때문에 데이터 양보다는 무조건 적은 데이터를 추출하는 테이블을 드라이빙 테이블로 잡는 것이 중요하다.
SELECT * 조회할 컬럼을 선택한다 (모든 컬럼 조회)
FROM TABLE1 T1
LEFT/RIGHT/FULL OUTER JOIN TABLE2 T2
ON (T1.KEY = T2.KEY) 두 테이블을 연결할 조건을 명시한다
SELECT * 조회할 컬럼을 선택한다 (모든 컬럼 조회)
FROM TABLE1 T1
LEFT/RIGHT/FULL OUTER JOIN TABLE2 T2
USING (KEY) 두 테이블이 동일하게 갖고 있는 컬럼명으로 조건을 명시한다
'A 테이블에 LEFT OUTER JOIN B를 하는 경우'
A,B 테이블의 조인 조건이 맞는 경우 B 테이블의 컬럼에서 해당 데이터를 가져오고, 조인 조건이 맞지 않는 경우 각 테이블의 레코드 중 A 테이블의 레코드는 무조건 결과값에 포함되어 나오고 B테이블에서 가져온 컬럼들은 NULL로 채운다.
'FULL OUTER JOIN'
좌측테이블 A와 우측 테이블 B의 데이터를 모두 읽어 중복된 데이터는 삭제한 JOIN 결과를 보여준다.
SELECT A.TIMESTAMP , A.NUM , A.VERSION , A.MSG_ID , A.GRADE , B.TIMESTAMP , B.NUM , B.VERSION , B.MSG_ID , B.GRADE
FROM A FULL OUTER JOIN B ON(B.TIMESTAMP = A.TIMESTAMP AND B.NUM = A.NUM)
출처: https://haenny.tistory.com/34 [Haenny]