Published 2022. 11. 17. 18:41

-  포괄조인 / 외부조인 (OUTER JOIN)

  두 테이블간의 JOIN시 일치하지 않는 행도 포함시켜서 조회하고자 할 때
   단, 반드시 LEFT/RIGHT 지정해야함 (기준이 되는 테이블 지정)

1)  LEFT [OUTER] JOIN 

두 테이블 중 왼편에 기술된 테이블을 기준으로 JOIN
(왼편에 있는 테이블(FROM절에 기술된)에 있는 데이터는 일치하는게 없더라도 조회되도록)

>> ANSI 구문 : EMPLOYEE테이블을 기준으로 해서 모든사원은 무조건 나오게끔 조회

SELECT EMP_NAME, DEPT_TITLE, SALARY, SALARY*12
FROM EMPLOYEE
LEFT /*OUTER*/ JOIN DEPARTMENT ON (DEPT_CODE = DEPT_ID);

>> 오라클 전용구문 : 기준으로 삼고자하는 테이블의 반대편 테이블의 컬럼뒤에 (+) 붙이기

SELECT EMP_NAME, DEPT_TITLE, SALARY, SALARY*12
FROM EMPLOYEE, DEPARTMENT
WHERE DEPT_CODE = DEPT_ID(+);

>>부서배치를 받지 않았던 2명의 사원 (하동운, 이오리) 조회됨

 

2) RIGHT[OUTER] JOIN

>> ANSI구문 

SELECT EMP_NAME, DEPT_TITLE, SALARY, SALARY*12
FROM EMPLOYEE
RIGHT JOIN DEPARTMENT ON (DEPT_CODE = DEPT_ID);

>>오라클 전용구문 

SELECT EMP_NAME, DEPT_TITLE, SALARY, SALARY*12
FROM EMPLOYEE, DEPARTMENT
WHERE DEPT_CODE(+) = DEPT_ID;

>>부서에 배정된 사원이 없는 세개의 부서(D3,D4,D7) 정보도 조회됨

 

3) FULL [OUTER] JOIN 

두 테이블이 가진 모든행을 조회할 수 있음 (단, 오라클 전용구문으로는 안됨)

 >>ANSI구문 

SELECT EMP_NAME, DEPT_TITLE, SALARY, SALARY*12
FROM EMPLOYEE
FULL JOIN DEPARTMENT ON (DEPT_CODE = DEPT_ID);

 

 

복사했습니다!