-
inner join vs outer joinDatabase/Basics 2019. 4. 6. 14:31
■조인(join)
- 2개 이상의 테이블들을 공통된 조건으로 데이터를 합쳐 표현!
- inner join과 outer join이 있다
■inner join
- 두 테이블간의 조인 조건을 만족하는 row'만' 리턴
- 예제 1)
select m.mem_no,o.order_no,p.prd_no
from member m,order o,product p
where 1=1
and m.mem_no=o.mem_no
and o.prd_no=p.prd_no
and m.mem_no like '1%'
- 예제 2)
select m.mem_no,o.order_no,p.prd_no
from member m
join order o
on m.mem_no=o.mem_no
join product p
on o.prd_no=p.prd_no
where 1=1
and m.mem_no like '1%'
■outer join
- 두 테이블간의 조인 조건을 만족하지 않는 row는 'null로 채워' 리턴
(주로 조인 조건을 만족하지 못하는 row들을 보기 위해 사용)
- 예제 1)
select m.mem_no,o.order_no,p.prd_no
from member m,order o,product p
where 1=1
and m.mem_no=o.mem_no(+)
and o.prd_no=p.prd_no(+)
and m.mem_no like '1%'
(데이터가 없을 수도 있는 쪽 join 컬럼에 (+)를 추가)
- 예제 2)
select m.mem_no,o.order_no,p.prd_no
from member m
left outer join order o
on m.mem_no=o.mem_no
left outer join product p
on o.prd_no=p.prd_no
where 1=1
and m.mem_no like '1%'
(left outer join의 경우 조인문 왼쪽에 있는 테이블의 모든 결과를 가져온 후,
오른쪽 테이블의 데이터를 매칭. 없는경우 null로 채움!)
(right outer join은 left outer join의 반대)
(full (two-way) outer join은 양쪽 다 outer join을 거는 경우. 잘 사용 안함)
댓글