아우터 조인 - OUTER JOIN
이너 조인의 반대로 조인 조건에 맞지 않는 데이터들도 표현하고자 할 때 사용
아우터 조인의 종류
LEFT, RIGHT, FULL
아우터 조인은 [ LEFT, RIGHT, FULL ] OUTER JOIN 사용 할 수 있고 OUTER를 생략한
[ LEFT, RIGHT, FULL ] JJOIN 으로도 사용 가능
합치고자하는 테이블 2개를 선정하여 주인공,나머지 관계를 파악해야 한다.
보통은 A,B 테이블의 관계가 1:N (일대다) 관계이며 A테이블은 주인공(부모), B테이블은 나머지(자식)이다.
하지만 아우터 조인은 1:N 관계를 단정짓기보다 2 테이블 중 한 테이블에 다른 테이블이 곁다리로 붙는 관계
ex )
NAME | AGE |
김철수 | 30 |
이영희 | 35 |
박영수 | 40 |
엄영수 | 40 |
NAME | AGE |
김철수 | 30 |
최수영 | 50 |
하희영 | 55 |
위에는 TB1 테이블 아래는 TB2 테이블이다.
한쪽 테이블에 값이 있을 경우에 다른쪽 테이블이 조건에 맞지 않아도 가져오게 되는데
left는 왼쪽, right는 오른쪽 테이블에 값이 있을 경우 반대 테이블이 조건에 맞지 않아도 가져온다
LEFT OUTER JOIN ( 왼쪽 테이블에 값이 있으면 오른쪽 테이블이 조건에 맞지 않아도 나옴)
SELECT TB1.NAME
, TB1.AGE
, TB2.NAME
, TB2.AGE
FROM TB1 LEFT OUTER JOIN TB2 ON TB1.NAME = TB2.NAME
결과 :
NAME | AGE | NAME | AGE |
김철수 | 30 | 김철수 | 30 |
이영희 | 35 | NULL | NULL |
박영수 | 40 | NULL | NULL |
엄영수 | 40 | NULL | NULL |
RIGHT OUTER JOIN ( 오른쪽 테이블에 값이 있으면 왼쪽 테이블이 조건에 맞지 않아도 나옴)
SELECT TB1.NAME
, TB1.AGE
, TB2.NAME
, TB2.AGE
FROM TB1 RIGHT OUTER JOIN TB2 ON TB1.NAME = TB2.NAME
결과 :
NAME | AGE | NAME | AGE |
김철수 | 30 | 김철수 | 30 |
NULL | NULL | 최수영 | 50 |
NULL | NULL | 하희영 | 55 |
FULL OUTER JOIN ( 한쪽 테이블에 값이 있으면 다른 쪽 테이블이 조건에 맞지 않아도 나옴)
SELECT TB1.NAME
, TB1.AGE
, TB2.NAME
, TB2.AGE
FROM TB1 FULL OUTER JOIN TB2 ON TB1.NAME = TB2.NAME
결과 :
NAME | AGE | NAME | AGE |
김철수 | 30 | 김철수 | 30 |
이영희 | 35 | NULL | NULL |
박영수 | 40 | NULL | NULL |
엄영수 | 40 | NULL | NULL |
NULL | NULL | 최수영 | 50 |
NULL | NULL | 하희영 | 55 |
정리
INNER JOIN : 두 테이블 간 조건이 맞는 값만 가져온다
LEFT, RIGHT OUTER JOIN : 조건에 맞지 않아도 LEFT 혹은 RIGHT에 값이 존재하면 값을 가져오게 된다
FULL OUTER JOIN : 두 테이블 중 한 테이블에만 값이 있다면 조건에 맞지 않아도 값을 가져오게 된다