JOIN

yeoro·2021년 7월 20일
0
post-thumbnail

❓ JOIN

여러 테이블에 흩어져 있는 정보 중 사용자가 필요한 정보만 가져와서 가상의 테이블을 만들어 결과를 보여주는 것이다.

즉, 둘 이상의 테이블을 연결해서 데이터를 검색하는 방법이다.

JOIN을 사용하기 위해서는 테이블들이 적어도 하나의 컬럼을 공유하고 있어야 한다. 공유하는 컬럼은 PK 혹은 FK로 사용한다.

📌 예시 테이블

JOIN 연산에 사용할 테이블은 다음과 같다.

A 테이블

IDNAME
1A
2B
3C

B 테이블

IDAGE
115
220
425
530

📚 JOIN 종류

1. (INNER) JOIN

SELECT A.ID, A.NAME, B.AGE
FROM A
INNER JOIN B
ON A.ID = B.ID;
ID NAME AGE
1 A 15
2 B 20

두 테이블의 공통적인 부분만 선택 (교집합)


2. LEFT (OUTER) JOIN

SELECT A.ID, A.NAME, B.AGE
FROM A
LEFT JOIN B
ON A.ID = B.ID;
ID NAME AGE
1 A 15
2 B 20
3 C NULL

두 테이블의 공통적인 부분 + JOIN 기준 왼쪽 테이블 전부 선택


3. LEFT (OUTER) JOIN + WHERE

SELECT A.ID, A.NAME, B.AGE
FROM A
LEFT JOIN B
ON A.ID = B.ID
WHERE B.ID is NULL;
ID NAME AGE
3 C NULL

JOIN 기준 왼쪽 테이블에 있는 것 만 선택 (A-B)


4. RIGHT (OUTER) JOIN

SELECT A.ID, A.NAME, B.AGE
FROM A
RIGHT JOIN B
ON A.ID = B.ID;
ID NAME AGE
1 A 15
2 B 20
4 NULL 25
5 NULL 30

두 테이블의 공통적인 부분 + JOIN 기준 오른쪽 테이블 전부 선택


5. RIGHT (OUTER) JOIN + WHERE

SELECT B.ID, A.NAME, B.AGE
FROM A
RIGHT JOIN B
ON A.ID = B.ID
WHERE A.ID is NULL;
ID NAME AGE
4 NULL 25
5 NULL 30

JOIN 기준 오른쪽 테이블에 있는 것만 선택 (B-A)


6. (FULL) OUTER JOIN

SELECT *
FROM A
LEFT JOIN B
ON A.ID = B.ID
UNION
SELECT *
FROM A
RIGHT JOIN B
ON A.ID = B.ID;
ID NAME ID AGE
1 A 1 15
2 B 2 20
3 C NULL NULL
NULL NULL 4 25
NULL NULL 5 30

A 테이블과 B 테이블 모두 선택


7. (FULL) OUTER JOIN + WHERE

SELECT *
FROM A
LEFT JOIN B
ON A.ID = B.ID
WHERE B.ID is NULL
UNION
SELECT *
FROM A
RIGHT JOIN B
ON A.ID = B.ID
WHERE A.ID IS NULL;
ID NAME ID AGE
3 C NULL NULL
NULL NULL 4 25
NULL NULL 5 30

A 테이블과 B 테이블 모두 선택한 것에서 공통적인 부분 제외


0개의 댓글