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