IT이야기

INNER JOIN, LEFT OUTER JOIN, RIGHT OUTER JOIN, FULL JOIN의 차이점

cyworld 2021. 2. 18. 17:34
반응형

INNER JOIN, LEFT OUTER JOIN, RIGHT OUTER JOIN, FULL JOIN의 차이점들을 살펴보겠습니다.

 

우선 아래와 같이 A, B테이블과 데이터가 존재한다고 봤을때.

A    B
-    -
1    3
2    4
3    5
4    6

 

1. INNER JOIN (교집합)

SELECT * FROM A INNER JOIN B ON A.A = B.B;
SELECT A.*, B.*  FROM A,B WHERE A.A = B.B;

A | B
--+--
3 | 3
4 | 4

A 테이블과 B 테이블 양쪽에 동일한 값으로 존재하는 데이터만 추출하게 됩니다.

참고로 "INNER JOIN"을 "JOIN"문으로 줄여 사용할 수 있습니다.

 

 

2. LEFT OUTER JOIN (차집합)

SELECT * FROM A LEFT OUTER JOIN B ON A.A = B.B;
SELECT A.*, B.* FROM A,B WHERE A.A = B.B(+); -- 오라클 기준

A |  B
--+-----
1 | NULL
2 | NULL
3 |    3
4 |    4

"LEFT OUTER JOIN"문 기준으로 왼쪽에 정의된 A 테이블이 중심이 되며,

ON 조건문에 선언한 A 테이블의 A 컬럼과 B 테이블의 B 컬럼을 비교하여 A 테이블의 전체 행과 양쪽 테이블의 공통 행이 추출된다고 보시면 됩니다.

참고로 "LEFT OUTER JOIN"을 "LEFT JOIN"으로 줄여 사용할 수 있습니다.

 

 

3. RIGHT OUTER JOIN (차집합)

SELECT * FROM A RIGHT OUTER JOIN B ON A.A = B.B;
SELECT A.*, B.* FROM A,B WHERE A.A(+) = B.B; -- 오라클 기준

A    |  B
-----+----
3    |  3
4    |  4
NULL |  5
NULL |  6

"LEFT OUTER JOIN"과 반대로 "RIGHT OUTER JOIN"문 기준으로 오른쪽에 정의된 B 테이블이 중심이 되서 추출됩니다.

"RIGHT OUTER JOIN" 역시 "RIGHT JOIN"으로 줄여 사용할 수 있습니다.

 

4. FULL OUTER JOIN (합집합)

SELECT * FROM A FULL OUTER JOIN B ON A.A = B.B;

 A   |  B
-----+-----
   1 | NULL
   2 | NULL
   3 |    3
   4 |    4
NULL |    6
NULL |    5

"FULL OUTER JOIN"문 기준으로 양쪽 테이블에서 ON 조건문 선언된 컬럼들은 중복 제거되면서 나머지 데이터들을 모두 추출한다고 보시면 됩니다.

"FULL OUTER JOIN"도 "FULL JOIN"으로 줄여서 사용할 수 있습니다.

반응형