Outer Join
용도 : 두개이상의 테이블 join시 한쪽테이블의 행에대해
다른쪽 테이블에 일치하는 행이 없더라도 다른 쪽 테이블의행을
Null로하여 Row를 Return한다.
문법 : SELECT COLUMN1,COLUMN2,.....
FROM TABLE1,TABLE2,.....
WHERE TABLE1.COLUMN = TABLE2.COLUMN (+)
이경우 기준이 되는 테이블은 TABLE1이다.
결합된 컬럼값이 테이블2에 없더라도 테이블1에 있으면
테이블2의 값들은 모두 NULL로 RETRUN 된다.
물론 양쪽모두에 존재하는값은 모두 나온다.
단, 테이블1에 없고 테이블2에만 있는 값은 리턴되지 않는다.
즉, OUTER JOIN 연산자 (+)를 지정한 테이블에 대해서는 일시적으로
특별한 NULL 열이 작성되고 통상의 JOIN에서는 리턴되지 않는 다른쪽의
테이블의 행 모두와 JOIN이 일어난다.
OUTER JOIN 기호는 컬럼명의 바로뒤에 붙어야 한다.
그리고 하나의 테이블이 OUTER JOIN의 대상으로 삼을 수 있는 테이블의
수는 한개뿐이다.
예제 : 다음은 OUTER JOIN 과 일반JOIN의 차이를 보여준다.
일반 JOIN :
SELECT EMP.EMPNO,EMP.DEPTNO,DEPT.DNAME
FROM EMP,DEPT
WHERE EMP.JOB='CLERK'
AND EMP.DEPTNO=DEPT.DEPTNO;
EMPNO DEPTNO DNAME
---------- ---------- --------------
7934 10 ACCOUNTING
7369 20 RESEARCH
7876 20 RESEARCH
7900 30 SALES
OUTER JOIN :
SELECT EMP.EMPNO,EMP.DEPTNO,DEPT.DNAME
FROM EMP,DEPT
WHERE EMP.JOB='CLERK'
AND EMP.DEPTNO=DEPT.DEPTNO(+);
EMPNO DEPTNO DNAME
---------- ---------- --------------
7934 10 ACCOUNTING
7369 20 RESEARCH
7876 20 RESEARCH
7900 30 SALES
7999 50
SELF JOIN
1.의미 : 대체로 JOIN이라고 하면 어떤 테이블과 또 다른 테이블간을
특정 COLUMN으로 연결하는 경우를 의미한다.
SELF JOIN은 테이블간의 JOIN은 맞는데 다른 테이블간의 JOIN이 아니고
같은 테이블을 마치 다른 테이블처럼 인식시켜 JOIN을 하는것이다.
그래서 SELF JOIN에서는 테이블에 반드시 ALIAS(별명)를 사용한다.
2.구문 :
SELECT ALIAS1.COLUMN1,ALIAS2.COLUMN2,.....
FROM TABLE1 ALIAS1,TABLE1 ALIAS2...
WHERE ALIAS1.COLUMN = ALIAS2.COLUMN
3.용도 : 특별히 어떤경우를 위해 사용해야한다는 규정은 없지만
경험적으로 볼때
주로 1단계 순환참조가 필요한 경우에 사용된다.
4 예제 :
SELECT A.EMPNO 사번, A.ENAME 사원명,
B.EMPNO 상급자,B.ENAME 상급자명
FROM EMP A,EMP B
WHERE B.EMPNO=A.MGR
사번 사원명 상급자 상급자명
---------- ---------- ---------- ----------
7788 SCOTT 7566 JONES
7902 FORD 7566 JONES
7499 ALLEN 7698 BLAKE
7521 WARD 7698 BLAKE
7900 JAMES 7698 BLAKE
7844 TURNER 7698 BLAKE
7654 MARTIN 7698 BLAKE
7934 MILLER 7782 CLARK
7999 TEST 7782 CLARK
7876 ADAMS 7788 SCOTT
7566 JONES 7839 KING
7782 CLARK 7839 KING
7698 BLAKE 7839 KING
7369 SMITH 7902 FORD
각 ROW가 사번에대한 상급자 정보를 MGR에 가지고 있을경우.
|