본문 바로가기
BigData TIL/Database

[Oracle] JOIN 정리

by xxub 2022. 1. 5.
반응형

데이터를 다루면 당연히 다뤄야 하는 부분이다. 필자는 매번 헷갈릴 때마다 아래의 그림을 찾아 그려 놓고 보고 익히고 붙여도 놓고 그런 기억이 있다. 아래 그림은 항상 필수!

JOIN 이란?

  • 두 개 이상의 테이블을 연결하여 데이터를 검색하는 방법이다.
  • 테이블끼리 연결하려면 적어도 하나의 컬럼을 공유할 수 있어야 한다.
  • 공유하고 있는 칼럼은 PK, FK 값으로 사용한다.

JOIN 종류

  • INNER JOIN
  • LEFT / RIGHT JOIN
  • OUTER JOIN

 

예제

예시 테이블

Table A

ID ENAME
1 하울
2 토토로
3 키키

Table B

ID KNAME
1 소피
2 메이
4 포뇨
5 치히로

 

1. INNER JOIN : 교집합, 공통적인 부분만 추출

SELECT A.*, B.KNAME
FROM A INNER JOIN B
ON A.ID = B.ID ;
ID ENAME KNAME
1 하울 소피
2 토토로 메이

 

2. LEFT JOIN : 조인 시 왼쪽에 있는 테이블 데이터 전부 다 추출

SELECT A.*, B.KNAME
FROM A LEFT JOIN B
ON A.ID = B.ID ;
ID ENAME KNAME
1 하울 소피
2 토토로 메이
3 키키 NULL

위 구문에서 WHERE 조건으로 NULL인 값을 추출하게 되면 3번 ID만 추출된다. 즉, LEFT가 가지고 있는 데이터 중 공통적으로 들어가는 데이터를 삭제한 결과 값이 나온다. B 테이블에서 NULL 값을 가지고 있는 건 A 테이블만 가지고 있는 값이기 때문이다.

 

3. RIGHT JOIN : 조인 시 오른쪽에 있는 테이블 데이터 전부 다 추출

SELECT A.*, B.KNAME
FROM A RIGHT JOIN B
ON A.ID = B.ID ;
ID ENAME KNAME
1 하울 소피
2 토토로 메이
4 NULL 포뇨
5 NULL 치히로

위 구문에서 WHERE 조건으로 NULL인 값을 추출하게 되면 4,5번 ID만 추출 된다. 즉, RIGHT가 가지고 있는 데이터 중 공통적으로 들어가는 데이터를 삭제한 결과 값이 나온다. A 테이블에서 NULL 값을 가지고 있는 건 B 테이블만 가지고 있는 값이기 때문이다.

 

4. OUTER JOIN : 합집합, A테이블과 B테이블 데이터 전부 다 추출

SELECT A.*, B.KNAME
FROM A OUTER JOIN B
ON A.ID = B.ID ;
ID ENAME KNAME
1 하울 소피
2 토토로 메이
3 키키 NULL
4 NULL 포뇨
5 NULL 치히로

 

P.S. 예시 들면서 나온 친구들 짝꿍 찾아주고 싶네

반응형

'BigData TIL > Database' 카테고리의 다른 글

[Oracle] NVL, NVL2  (0) 2022.01.07
[Oracle] case when, decode  (0) 2022.01.06
[Oracle] UNION , UNION ALL - SELECT 합치기  (0) 2022.01.04
[Oracle] 서브쿼리  (0) 2022.01.03
[Oracle] SQL 쿼리 문 정리 1  (0) 2021.06.30