반응형
아우터 조인(Outer Join)
- INNER JOIN과 반대되는 개념이다.
- 데이터가 양쪽에 없다 하더라도 보여 줄 수 있는 JOIN이다.
(Equi Join은 두개의 테이블 중 한쪽 컬럼에 값이 없다면 나머지 테이블의 값을 반환하지 못하는 것과 대비된다.) - outer join의 연산자는 오라클 한정으로 "(+)" 기호를 쓸 수 있다.
- "(+)" 기호는 양쪽에 오지 못한다.
- 조인 시 값이 없는 조인측에 "(+)"를 위치한다.
기본 사용법
SELECT DISTINCT emp.deptno,dept.deptno AS 팀번호 FROM emp, dept
WHERE emp.deptno(+) = dept.deptno;
추가 조건절에도 (+)를 붙여줘야 한다.
SELECT DISTINCT emp.deptno,dept.deptno AS 팀번호 FROM emp, dept
WHERE emp.deptno(+) = dept.deptno;
AND emp.name(+) LIKE '김%';
ANSI SQL 표준
- ANSI SQL 표준은 값이 더 있는 쪽을 지목해줘야 한다.
- LEFT OUTER JOIN (왼쪽에 값이 더 존재한다.)
- RIGHT OUTER JOIN (오른쪽에 값이 더 존재한다.)
- FULL OUTER JOIN (양쪽 다 각기 다른 값이 존재한다.)
SELECT emp.deptno , dept.deptno AS 팀번호
FROM emp RIGHT OUTER JOIN dept
ON emp.deptno = dept.deptno;
SELECT DISTINCT (emp.deptno), dept.deptno AS 팀번호
FROM dept LEFT OUTER JOIN emp
ON emp.deptno = dept.deptno;
SELECT DISTINCT (emp.deptno), dept.deptno AS 팀번호
FROM dept FULL OUTER JOIN emp
ON emp.deptno = dept.deptno
아무리 오라클을 사용한다 하더라도 현업에서는 사용하는 데이터베이스가 언제든 바뀔 수 있기 때문에,
ANSI 표준 SQL 방식을 사용하는 것을 추천한다.
반응형
댓글