JOIN : INNER JOIN & LEFT/RIGHT/FULL OUTER JOIN
INNER JOIN VS OUTER JOIN
INNER JOIN
: 기준 테이블(드라이빙 테이블)과 조인 테이블 모두에 데이터가 있어야 조회 가능
OUTER JOIN
: 기준 테이블에만 테이터가 있으면 일단 조회 가능
- 기준이 되는 테이블이 조인 수행 시에 첫번째로 access되는
드라이빙 테이블
이 된다.
- 무엇을 드라이빙 테이블로 하는가가 쿼리 성능이나 튜닝에 영향을 준다. 이때 적은 테이블을 추출하는 테이블을 드라이빙 테이블로 하는 것이 좋다.
- 쿼리 작성시에 USING, ON 조건절을 사용해야 한다.
LEFT OUTER JOIN
,RIGHT OUTER JOIN
, FULL OUTER JOIN
이 있다.
LEFT/RIGHT OUTER JOIN
LEFT OUTER JOIN
- A테이블에 LEFT OUTER JOIN B를 한다고 해보자.
- 둘의 조인 조건이 맞다면
- B 테이블의 컬럼에 찾고자 하는 데이터를 가져온다.
- 조인 조건이 맞지 않다면
- A테이블의 레코드는 무조건 결과값에 나오고 B테이블에서 가져오는 컬럼은 NULL로 설정한다.
RIGHT OUTER JOIN
- A테이블에 RIGHT OUTER JOIN B를 한다고 해보자.
- 둘이 조인 조건이 맞다면
- A 테이블의 컬럼에서 찾고자 하는 데이터를 가져온다.
- 조인 조건이 맞지 않다면
- B 테이블의 레코드는 무조건 결과값에 나오고 A테이블에서 가져오는 컬럼은 NULL로 설정한다.
FULL OUTER JOIN
- A테이블과 B테이블 모두에서 데이터를 읽어 중복된 데이터를 삭제한 JOIN 결과를 보여준다.