본문 바로가기

IT/oracle&mysql

Oracle Ansi 외부조인 (outer join)

Ansi 조인

Sql은 국제적 표준이 존재하는데, 그 표준 중의 하나가 바로 Ansi표준이다.

- DBMS발전에 비해서 Sql 표준이 늦게 제정되었기 때문인지 오라클을 비롯한 여러 DBMS에서는 ANSI나 ISO 표준이 제정될 때부터 엄격히 지원하지 않은 것이 사실이다. -Oracle 책 내용중에-


ANSI 외부조인의 무법

[형식]

FROM TABLE A [Left | Right | Full ] OUTER JOIN B


기존 문법에서 외부조인을 할 때는 다음과 같이 조인에 참여하는 테이블 중 데이터가 없는 테이블쪽에(+) 기호를 붙였다.

ANSI 조인에서는 어느 테이블 쪽에 데이터가 없는지를 나타내기 위해서 LEFT 혹은 RIGHT 구문을 사용한다.

EX

1. FROM employess emp LEFT OUTER JOIN job_history his ON emp.employee_id = his.employee_id

2. FROM employess emp RIGHT OUTER JOIN job_history his ON emp.employee_id = his.employee_id


LEFT OUTER JOIN

기존 :  FROM employess emp job_history his WHERE emp.employee_id = his.employee_id(+)

ANSI FROM employess emp LEFT OUTER JOIN job_history his ON emp.employee_id = his.employee_id

RIGHT OUTER JOIN
기존 :  FROM employess emp job_history his WHERE emp.employee_id(+) = his.employee_id
ANSI FROM employess emp RIGHT OUTER JOIN job_history his ON emp.employee_id = his.employee_id


컬럼 조건이 동일한 경우 (USING 사용 가능)

FROM employess emp RIGHT OUTER JOIN job_history his USING(employee_id)

SELECT , ORDER BY 절에 공통 컬럼 사용시
"테이블명.컬럼명" 형태가 아니라 컬럼명만 명시해야한다.