본문 바로가기

DB

Inner Join과 outer join의 차이점 (외부조인 내부조인)

728x90

1. 차이점

중복이 없는 A, B를 가정했을 때.

  • A와 B를 Inner-Join하면 A와 B의 교집합을 얻을 수 있다.
  • A와 B를 Outer-Join하면 A와 B의 합집합을 얻을 수 있다.

2. 외부 조인 유형

총 3 가지 유형이 있다.

왼쪽 외부 결합(LEFT JOIN) : LEFT 테이블의 모든 행과 두 테이블간에 일치하는 레코드를 반환한다.
오른쪽 외부 결합(RIGHT JOIN) : RIGHT 테이블의 모든 행과 두 테이블간에 일치하는 레코드를 반환한다.
전체 외부 결합(FULL OUTER JOIN) : Left Outer Join과 Right Outer Join의 결과를 결합한다.

 

3. 예시

Examples

각각 단 하나의 열만 있는 두 개의 테이블이 있고, 데이터가 다음과 같다고 가정해보자.

A B

- -

1 3

2 4

3 5

4 6

(1, 2)는 A에만 있고, (3, 4)는 같이 있으며, (5, 6)은 B만 갖고 있다.

 

1) Inner join

다음 쿼리로 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

 

2) Left outer join

Left-Outer-Join은 A에 있는 모든 행과 B에 함께 있는 행을 얻는다.

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

 

3) Full outer join

Full-Outer-Join은 A와 B의 합집합을 얻는다. 만약 어떤 행의 A에는 데이터가 있고 B에는 비어있는 경우 B 부분은 null이며, 반대의 경우에는 A 부분이 null이다.

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

 

출처: http://stackoverflow.com/a/38578

 

728x90

'DB' 카테고리의 다른 글

SQL VS NoSQL 차이 및 MongoDB란?  (0) 2023.05.25
SQL 쿼리 성능 향상 방법(1/2)  (0) 2023.05.21