outer join

join 조건에서 동일한 값이 없는 행도 반환하고 싶을 때 사용한다.


A LEFT OUTER JOIN B
좌측 테이블은 무조건 나온다. 좌측 테이블의 조인에 사용된 칼럼에 해당하는 우측 테이블의 칼럼이 없을 경우 NULL로 출력된다.
좌측 테이블을 기준으로 다 나오고, 우측 테이블은 일치하는 것만 나옴.

조인 수행 시에 좌측 테이블에 해당하는 데이터를 먼저 읽는다. 그 후 우측 테이블에서 JOIN된 칼럼에 해당하는 데이터를 읽어온다. 즉, A와 B를 비교해서 B의 JOIN 칼럼에서 같은 값이 있을 때 해당 데이터를 가져오고, 없을 땐 NULL로 값을 채운다.

OUTER JOIN은 JOIN 조건에 해당하지 않는 컬럼값도 결과값에 포함시키기 위해 사용한다.

추가로, LEFT/RIGHT OUTER JOIN 은 기준이 되는 테이블이 조인 수행 시 무조건 드라이빙 테이블이 된다. 드라이빙 테이블은 JOIN이 발생했을 때 첫번째로 ACCESS 되는 테이블을 뜻한다. 드라이빙 테이블이 어떤 테이블이냐에 따라 쿼리 성능과 튜닝 시 굉장히 중요하다. 데이터 양보다는 무조건 적은 데이터를 추출하는 테이블을 드라이빙 테이블로 잡는 것이 중요하다.

 

ANSI left outer join
select e.ename, e.job, d.dept, d.dname
from dept d left outer join emp e
on e.deptno=d.deptno;

 

오라클 조인
select e.ename, e.job, d.dept, d.dname
from emp e, dept d
where e.deptno(+) = d.deptno;

a(+) = b
a엔 해당하는 칼럼의 내용이 없어도, b에 있으면 a가 결과값에 들어간다.

a가 내용이 모자라니까 플러스(+)해준다고 생각하면 외우기 쉬울듯 ^^

 


reference

https://limkydev.tistory.com/144

'┝ DB' 카테고리의 다른 글

JPA와 Entity  (0) 2025.12.04