by 구루비 OUTER JOIN LEFT OUTER JOIN RIGHT OUTER JOIN FULL OUTER JOIN [2002.01.20]
Equi Join과 Outer Join의 비교.
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 | -- Equi Join 으로 부서 번호를 조회하는 예제 SELECT DISTINCT (e.deptno), d.deptno, d.dname FROM emp e, dept d WHERE e.deptno = d.deptno; DEPTNO DEPTNO ------ ---------- 10 10 20 20 30 30 -- Outer Join 으로 부서 번호를 조회하는 예제 SELECT DISTINCT (e.deptno), d.deptno FROM emp e, dept d WHERE e.deptno(+) = d.deptno; DEPTNO DEPTNO ------- -------- 10 10 20 20 30 30 40 |
Outer Join을 사용하는 테이블에 추가로 조건절이 있다면 (+)연산자를 모두 해야 한다.
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 | -- ename LIKE 조건절에 (+)연산자가 누락된 경우 SELECT DISTINCT (a.deptno), b.deptno FROM emp a, dept b WHERE a.deptno(+) = b.deptno AND a.ename LIKE '%' ; DEPTNO DEPTNO ---------- ---------- 10 10 20 20 30 30 -- ename LIKE 조건절에 (+)연산자를 추가해야 정상적으로 데이터가 조회 된다. SELECT DISTINCT (a.deptno), b.deptno FROM emp a, dept b WHERE a.deptno(+) = b.deptno AND a.ename(+) LIKE '%' ; DEPTNO DEPTNO ------- -------- 10 10 20 20 30 30 40 |
Oracle9i 부터는 ANSI/ISO SQL 표준인 LEFT OUTER JOIN , RIGHT OUTER JOIN, FULL OUTER JOIN를 지원 한다.
LEFT OUTERL JOIN은 오른쪽 테이블(아래 예제에서 emp테이블)에 조인시킬 컬럼의 값이 없는 경우 사용한다.
1 2 3 4 5 | -- LEFT OUTER JOIN 조인 예제 SELECT DISTINCT (e.deptno), d.deptno FROM dept d LEFT OUTER JOIN emp e ON d.deptno = e.deptno; |
RIGHT OUTERL JOIN은 왼쪽 테이블(아래 예제에서 emp테이블)에 조인시킬 컬럼의 값이 없는 경우 사용한다.
1 2 3 4 5 | -- RIGHT OUTER JOIN 조인 예제 SELECT DISTINCT (e.deptno), d.deptno FROM emp e RIGHT OUTER JOIN dept d ON e.deptno = d.deptno; |
FULL OUTERL JOIN은 양쪽 테이블 모두 Outer Join걸어야 하는 경우 사용 한다.
1 2 3 4 5 | -- FULL OUTER JOIN 조인 예제 SELECT DISTINCT (e.deptno), d.deptno FROM emp e FULL OUTER JOIN dept d ON e.deptno = d.deptno; |
- 강좌 URL : http://www.gurubee.net/lecture/1021
- 구루비 강좌는 개인의 학습용으로만 사용 할 수 있으며, 다른 웹 페이지에 게재할 경우에는 출처를 꼭 밝혀 주시면 고맙겠습니다.~^^
- 구루비 강좌는 서비스 제공을 위한 목적이나, 학원 홍보, 수익을 얻기 위한 용도로 사용 할 수 없습니다.