❓ JOIN
여러 테이블에 흩어져 있는 정보 중 사용자가 필요한 정보만 가져와서 가상의 테이블을 만들어 결과를 보여주는 것이다.
즉, 둘 이상의 테이블을 연결해서 데이터를 검색하는 방법이다.
JOIN을 사용하기 위해서는 테이블들이 적어도 하나의 컬럼을 공유하고 있어야 한다. 공유하는 컬럼은 PK 혹은 FK로 사용한다.
📌 예시 테이블
JOIN 연산에 사용할 테이블은 다음과 같다.
A 테이블
B 테이블
📚 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;
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 테이블 모두 선택한 것에서 공통적인 부분 제외