본문 바로가기
Study/SQL

[SQL] INNER JOIN과 OUTER JOIN의 차이

by 오늘만 사는 여자 2022. 3. 3.
728x90
반응형

중복 없는 열(column)들을 Join한다고 가정했을 때, 가장 일반적인 경우입니다:

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

Examples

각각 단 하나의 열만 있는 두 개의 테이블이 있고, 데이터가 다음과 같다고 가정합니다:

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

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

 

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

 

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

 

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

 

출처 : https://jetalog.net/28

728x90
반응형

'Study > SQL' 카테고리의 다른 글

[No SQL] NoSQL이란  (1) 2024.09.11
[MySQL]InnoDB VS MyISAM  (0) 2022.05.09
[MySQL] INSERT 시에 중복(Duplicate) 키 에러가 난다면…  (0) 2020.11.30
[MySQL] CASE 기본 사용법  (0) 2020.04.28
[MySql] 날짜 비교  (0) 2020.03.24

댓글