Database

아우터 조인 - OUTER JOIN

Sun-Koo 2023. 3. 16. 15:29

이너 조인의 반대로 조인 조건에 맞지 않는 데이터들도 표현하고자 할 때 사용

 

아우터 조인의 종류

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 : 두 테이블 중 한 테이블에만 값이 있다면 조건에 맞지 않아도 값을 가져오게 된다