-외부조인(Outer Join)-
외부조인은 일반적인 조인인 내부조인을 확장한 개념의 조인이라고 볼 수 있다.
내부는
두 테이블이 내부조인으로 연결되었을 경우 조인의 결과는 조인조건에서 명시된 컬럼값이 두 테이블 모두 같은 값을 가진 로우들만 추출된다.
외부조인은 어느 한 테이블의 공통 컬럼값이 없더라도(NULL인 경우) 해당 로우들이 조회결과에 포함된다
1. 조인에 참여하는 테이블 중 어느 한 테이블에 서만 조회조건을 만족하면 다른 한 테이블의 값이 없더라도 데이터를 조회할 수있다.
2. 외부조인은 조회조건에서 (+) 기호를 사용한 조인을 말하는 것이다.
3. 외부조인을 할 때에는 조인조건이 하나 이상일 경우에는 모든 조인조건에 (+)를 붙여야 한다.
(동일 테이블의 컬럼의 조건이 하나 이상일 경우)
-제약사항-
1. (+)는 WHERE 절에서만 사용이 가능하다.
2. 테이블간 외부조인 조건이 한 개 이상일경우, 모든 외부조인 조건에(+)를 붙여야 외부조인이 성립된다.
또한 정확한 외부조건 결과를 얻기 위해서는 조인조건 외의 일반조건에도 (+)를 붙여야 한다.
3. 테이블 자신에(+)를 붙일 수 없다.
SELECT emp_id , mng_id
from emp
where emp_id(+) = mng_id
-ORA-01416 : 두 개의 테이블을 outer-join 할 수 없습니다.-
4. (+)는 오직 컬럼에만 붙일 수 있으며 OR 연산자와 같이 사용할 수 없다.
SELECT emp_id , mng_id
from emp e, job j
where e.emp_id(+) = j.mng_id
OR
e.dept_id = e.dept_Id = j.dept_id
-Ora-01719 : 포괄 조인 운영 (+)는 OR 또는 IN의 연산수를 허용하지않습니다.-
5. 외부조인시에 대상 테이블은 오직 한 개의 테이블과만 외부조인이 가능하다.
-Ora-01417 : 하나의 테이블은 하나의 다른 테이블과 포괄 조인할 수 있습니다.-
6. 조인조건식에서 (+)가 붙은 컬럼과는 IN 연산자를 같이 사용 할 수 없다.
-Ora-01719 : 포괄 조인 운영(+)는 OR 또는 IN의 연산수를 허용하지 않습니다.-
7. 조인조건식에서 (+)가 붙은 컬럼과는 서브쿼리를 같이 사용할 수 없다.
-Ora-01799 : 옅은 하위 질의에 포괄 조인될 수 없습니다.-
8.조인조건의 오직 한 쪽에서만(+)를 붙일 수 있다.
'IT > oracle&mysql' 카테고리의 다른 글
oracle java에서 암호화된 파일 oracle에서 복호화 처리 (0) | 2016.03.23 |
---|---|
전자정부 프레임워크 ibatis xml table comment 생성 (0) | 2016.03.21 |
sql oracle with절 사용법 (0) | 2016.03.16 |
진행 중에 분산 트랜잭션을 결합할 수 없습니다 (0) | 2016.03.16 |
ORACLE 과 MYSQL 함수 대칭 (0) | 2016.03.10 |