본문 바로가기

JAVA HTML JAVASCRIPT/DB

inner / outer join (2)

728x90
반응형

Q: INNER JOIN OUTER JOIN의 차이가 무엇인가요? 그리고 LEFT JOIN, RIGHT JOIN, FULL JOIN은 또 무엇인가요?

(질문자: cdv)

 

A: 중복이 없는 서로 다른 두 컬럼을 JOIN한다고 가정할 때, 일반적으로는:

- inner join 을 A 와 B에 대해 수행하는 것은, A와 B의 교집합을 말합니다. 벤다이어그램으로 그렸을 때 교차되는 부분입니다.

- outer join을 A와 B에 대해 수행하는 것은, A와 B의 합집합을 말합니다. 벤다이어 그램으로 그렸을 때, 합집합 부분입니다.

 

예제:

두 개의 테이블이 있다고 가정합시다. 컬럼은 1개이고, 데이터는 아래와 같습니다.

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

(1, 2)는 A에만 있고, (3, 4)는 A와 B 모두에 있으며, (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

 

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의 합집합을 얻게 됩니다. 

B에는 있는데 A에 없는 (5, 6)은 A에서는 해당 부분이 null 이 되고,

A에는 있는데 B에 없는 (1, 2)는 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

 

(답변자: Mark Harrison)

 

A: 여러가지 join이 있고, 아래와 같은 스키마를 이용하실 수 있습니다.

Source: Visual-Representation-of-SQL-Joins explained in detail by C.L. Moffatt

(답변자: Teoman shipahi)

_



출처: https://stanleykou.tistory.com/entry/SQL-INNER-조인과-OUTER조인이-무엇인가요 [StanleyKou의 개인작업실]

728x90
반응형

'JAVA HTML JAVASCRIPT > DB' 카테고리의 다른 글

[오라클] 데이터 중복제거 방법 (distinct, group by, 성능)  (0) 2020.07.30
PostgreSQL 설치 DB생성  (0) 2020.02.05
PostgreSQL 설치 및 확인  (0) 2020.02.05
DBeaver 설치 및 연동  (0) 2020.02.05
inner / outer join  (0) 2020.01.27