본문 바로가기

Windows Developer/Oracle

[Oracle] OUTER JOIN

OUTER JOIN은 JOIN조건을 만족하지 않는 경우에도 모든 행들을 다 보고자 할 경우에 사용하는 JOIN방법이다



EMP 테이블의 EMP_NUM 컬럼과 EMP_SKILL 테이블의 EMP_NUM 컬럼을 보자.
EMP_SKILL 케이블의 EMP_NUM중에 10005. 10007이 없다. 그럼 다음과 같이 검색을 하면 어떤 결과가 나올까?

SELECT A.EMP_NUM, LAST_NAME, B.SKILL_NO
FROM EMP A,        EMP_SKILL B
WHERE A.EMP_NUM = B.EMP_NUM;

만약 위의 식을 정확하게 입력했다면 7개의 검색 결과가 나타날 것이다. 중복된 것은 한번만 나타내라는 조건이 없으니 10005,10007이 없는 값들이 출력될 것이다.

그럼, 다음과 같이 검색을 해보자.

SELECT A.EMP_NUM, LAST_NAME, B.SKILL_NO
FROM EMP A,        EMP_SKILL B
WHERE A.EMP_NUM = B.EMP_NUM(+);

검색결과가 9개가 나타나는 것을 볼 수 있다.


검색 결과가 9개가 나타났다. 즉, B테이블에 없던 10005, 10007도 표시된다. SKILL_NO가 NULL인 상태로 출력이 된다. 

  [결과]
- OUTTER JOIN이란 JOIN조건을 만족하지 않는 경우에도 모든 행들을 다 보고자 할 경우에 사용하는 JOIN 
  방법이다. 
- OUTER JOIN을 하는 경우 (+)연산자를 사용한다
- (+)를 사용하는 위치는 JOIN할 Data가 부족한 쪽에 위치를 시킨다
- OUTER JOIN에서는 IN을 쓰거나 조건이 OR로 연결될 수 없다.


'Windows Developer > Oracle' 카테고리의 다른 글

[Oracle] 인덱스 란?  (0) 2011.01.08
[Oracle] 명시적 커서와 암시적 커서  (1) 2011.01.07
[Oracle] NON-EQUJOIN  (0) 2011.01.07
[Oracle] EquJoin  (0) 2011.01.07
[oracle] 프로시져 생성 및 in, out, in out 파라미터  (0) 2011.01.04