반응형

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

테이블간 JOIN 시 일치하지 않는 행도 포함시켜서 조회 가능하게 한다

기준이 되는 테이블을 지정하여 LEFT 또는 RIGHT를 필수로 지정한다

일치하는행 + 기준이 되는 테이블 기준으로 일치하지 않는 행도 포함 시켜서 조회된다

 

LEFT OUTER JOIN

왼쪽에 기술한 테이블 기준으로 JOIN

//ORACLE
SELECT 컬럼명, ...
FROM 테이블명1, 테이블명2, ...
WHERE 기준컬럼=조인컬럼(+);

//ANSI
SELECT 컬럼명, ...
FROM 기준테이블명
LEFT OUTER JOIN 조인테이블명 ON (기준컬럼=조인컬럼);
--오라클 구문
SELECT EMP_NAME,SALARY,DEPT_TITLE
FROM EMPLOYEE,DEPARTMENT
WHERE DEPT_CODE=DEPT_ID(+); 
--기준으로 삼지 않는 테이블의 컬럼명에 (+)를 붙여준다

--ANSI구문
SELECT EMP_NAME,SALARY,DEPT_TITLE
FROM EMPLOYEE
LEFT /*OUTER*/ JOIN DEPARTMENT ON (DEPT_CODE=DEPT_ID); --OUTER 생략가능

--EMPLOYEE테이블이 기준이 되었기 때문에 EMPLOYEE테이블에 존재하는 데이터는 모두 조회해옴

 

RIGHT OUTER JOIN

오른쪽에 기술한 테이블 기준으로 JOIN

//ORACLE
SELECT 컬럼명, ...
FROM 테이블명1, 테이블명2, ...
WHERE 조인컬럼(+)=기준컬럼;

//ANSI
SELECT 컬럼명, ...
FROM 기준테이블명
RIGHT OUTER JOIN 조인테이블명 ON (기준컬럼=조인컬럼);
--ORACLE 구문
SELECT EMP_NAME, SALARY, DEPT_TITLE
FROM EMPLOYEE, DEPARTMENT
WHERE DEPT_CODE(+)=DEPT_ID;

--ANSI 구문
SELECT EMP_NAME, SALARY, DEPT_TITLE
FROM EMPLOYEE
RIGHT /*OUTER*/ JOIN DEPARTMENT ON (DEPT_CODE=DEPT_ID); --OUTER 생략가능

 

FULL OUTER JOIN

두 테이블이 가진 모든 행을 조회 (ANSI 구문 존재)

//ANSI
SELECT 컬럼명, ...
FROM 기준테이블명
FULL OUTER JOIN 조인테이블명 ON (기준컬럼=조인컬럼);
--ANSI 구문
SELECT EMP_NAME,SALARY,DEPT_TITLE
FROM EMPLOYEE
FULL /*OUTER*/ JOIN DEPARTMENT ON (DEPT_CODE=DEPT_ID); --OUTER 생략 가능

 

반응형

+ Recent posts