728x90
반응형
질문 : “INNER JOIN”과“OUTER JOIN”의 차이점은 무엇입니까?
또한 LEFT JOIN
, RIGHT JOIN
및 FULL JOIN
이 어떻게 맞습니까?
답변
중복이없는 열에 결합한다고 가정하면 매우 일반적인 경우입니다.
- A와 B의 내부 결합은 A가 B를 교차하는 결과, 즉 벤 다이어그램 교차의 내부 부분을 제공합니다.
- A와 B의 외부 결합은 A 결합 B의 결과, 즉 벤 다이어그램 결합의 외부 부분을 제공합니다.
예
각각 하나의 열이있는 두 개의 테이블과 다음과 같은 데이터가 있다고 가정합니다.
A B
- -
1 3
2 4
3 5
4 6
(1,2)는 A에 고유하고 (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
왼쪽 외부 조인은 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
오른쪽 외부 조인은 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
완전 외부 조인은 A와 B의 합집합을 제공합니다. 즉, A의 모든 행과 B의 모든 행을 제공합니다. A의 항목이 B에 해당하는 데이텀이없는 경우 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
출처 : https://stackoverflow.com/questions/38549/what-is-the-difference-between-inner-join-and-outer-join
728x90
반응형
'프로그래밍 언어 > Database' 카테고리의 다른 글
MySQL 데이터베이스 / 테이블 / 열이 어떤 문자 집합인지 확인하는 방법 (0) | 2021.06.04 |
---|---|
PostgreSQL의 "use database_name"명령 (0) | 2021.06.04 |
SQL-Server : 백업 세트는 기존 데이터베이스 이외의 데이터베이스 백업을 보유합니다. (0) | 2021.06.04 |
PostgreSQL“DESCRIBE TABLE” (0) | 2021.06.02 |
GUID / UUID를 만드는 방법 (0) | 2021.06.01 |