[Comporison] LEFT JOIN 과 RIGHT JOIN


LEFT JOIN 과 RIGHT JOIN


left, right등의 outer join은 기준이 되는 테이블이 무엇이냐에 따른 것입니다.

결과가 왼쪽 테이블 전체 데이터 대상이라면 left를 ,오른쪽 테이블의 전체 데이터가 대상이라면 right를 사용합니다.


1. 조인 대상 테이블


(1) EMP 테이블

SELECT * FROM  EMP;


(2) DEPT 테이블

SELECT * FROM DEPT;


2.  LEFT JOIN 과 RIGHT JOIN 차이


(1) [ A left join B on (a.id = b.id) ]


LEFT OUTER JOIN은 오른쪽 테이블(아래 예제에서 emp테이블)에 조인시킬 컬럼의 값이 없는 경우 사용한다.

SELECT * FROM dept d LEFT OUTER JOIN emp e ON d.deptno = e.deptno; 

A(왼쪽) 테이블과 B(오른쪽) 테이블을 조인을 걸건데, B테이블에 A테이블과 맵핑되는 값이 있건 없건 A의 값은 반드시 모두 나오게 됩니다.

(outer는 적어도 그만 안 적어도 그만이지만, 명시적으로 적어주는 것이 좋습니다 .^^)


위의 결과를 보면, A 에 있는 모든 값이 나오고,B와 맵핑 되지 않는 값은 NULL 이 됨을 볼 수 있습니다.

 

(2) [ A right join B on (a.id = b.id) ]


RIGHT OUTERL JOIN은 왼쪽 테이블(아래 예제에서 emp테이블)에 조인시킬 컬럼의 값이 없는 경우 사용한다.

SELECT * FROM dept d RIGHT OUTER JOIN emp e ON d.deptno = e.deptno; 

B(오른쪽) 테이블을 기준으로 A(왼쪽) 테이블을 조인 거는 경우입니다.

이럴 경우도 left 와 마찬가지로 생각해본다면, B테이블의 전체값이 결과로 나올 것이고, A 테이블의 값은 있으면 나오고 없으면 안나온다.