INNER JOIN과 OUTER JOIN의 차이
중복이 없는 컬럼에 대한 조인을 수행하는 일반적인 경우를 가정한다면
A와 B의 inner join은 A와 B의 교집합이 됩니다.
A와 B의 outer join은 A와 B의 합집합이 됩니다.
예제
다음과 같이 각각 단일 컬럼을 가진 두개의 테이블이 있다고 가정하고 데이터가 다음과 같을 때
A B
- -
1 3
2 4
3 5
4 6
A에서 유일한 값은 (1,2)이고 (3,4)는 동일한 값으로 같고 (5,6)은 B에 대해서 유일한 것에 유의해서 생각해 봅시다.
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
Right outer join
Right outer join의 결과는 B의 모든 행과 A에서 같은 행을 다음과 같이 표시할 것입니다.
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
Full outer join
Full outer join은 A와 B의 합집합 즉 A와 B의 모든 행을 리턴할 것입니다. 만약 B 내의 데이터와 ㅅㅇ응하는 데이터가 A에 없을 때, B의 자리에는 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
'데이터베이스' 카테고리의 다른 글
관계대수와 관계해석 (0) | 2021.07.15 |
---|---|
데이터 무결성 (0) | 2021.07.14 |
데이터베이스의 설계 단계 (0) | 2021.07.14 |
스키마 정의 및 종류 (0) | 2021.07.14 |
병렬 데이터베이스의 분할 기법 (0) | 2021.07.13 |