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;
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(+);
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로 연결될 수 없다.
- 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 |