JOIN에 대하여

camille·2026년 1월 22일

✅ 예시 테이블

A 테이블 (회원)
id	name
1	철수
2	영희
3	민수
B 테이블 (주문)
id	item
1	사과
3	바나나
4	포도

1) INNER JOIN (교집합)

INNER JOIN은 두 테이블에 모두 존재하는 데이터만 결과로 보여준다.


SELECT A.id, A.name, B.item
FROM A
INNER JOIN B ON A.id = B.id;

✅ 결과 테이블

id	name	item
1	철수	사과
3	민수	바나나

📌 id가 A에도 있고 B에도 있는 값(1,3)만 출력된다.

2) LEFT JOIN (왼쪽 기준)

LEFT JOIN은 왼쪽 테이블(A)의 데이터는 전부 유지한다.
오른쪽(B)에 매칭되는 값이 없으면 B 컬럼은 NULL이 된다.

SELECT A.id, A.name, B.item
FROM A
LEFT JOIN B ON A.id = B.id;

✅ 결과 테이블

id	name	item
1	철수	사과
2	영희	NULL
3	민수	바나나

📌 A 테이블의 id=2는 주문이 없지만 A 기준으로 유지되므로 출력되고, 주문 컬럼(item)은 NULL이 된다.

3) RIGHT JOIN (오른쪽 기준)

RIGHT JOIN은 오른쪽 테이블(B)의 데이터는 전부 유지한다.
왼쪽(A)에 매칭되는 값이 없으면 A 컬럼이 NULL이 된다.

SELECT A.id, A.name, B.item
FROM A
RIGHT JOIN B ON A.id = B.id;

✅ 결과 테이블

id	name	item
1	철수	사과
3	민수	바나나
4	NULL	포도

📌 id=4는 주문은 있지만 회원이 없기 때문에 name이 NULL로 출력된다.

실무에서는 RIGHT JOIN은 잘 안 쓰고, 보통 테이블 위치만 바꿔서 LEFT JOIN으로 처리한다.
예: A RIGHT JOIN B == B LEFT JOIN A

4) FULL OUTER JOIN (합집합)

FULL OUTER JOIN은 A든 B든 한쪽이라도 존재하면 전부 출력한다.
매칭이 안 되는 쪽은 NULL 처리된다.

SELECT A.id, A.name, B.item
FROM A
FULL OUTER JOIN B ON A.id = B.id;

✅ 결과 테이블

id	name	item
1	철수	사과
2	영희	NULL
3	민수	바나나
4	NULL	포도

📌 A에만 있는 id=2, B에만 있는 id=4도 모두 출력된다.

⚠️ MySQL은 기본적으로 FULL OUTER JOIN을 지원하지 않아 UNION으로 구현해야 한다.

🔥 JOIN 한 줄 요약

JOIN 종류	의미
INNER JOIN	A와 B 둘 다 있는 데이터만
LEFT JOIN	A 전체 유지, B는 있으면 붙임
RIGHT JOIN	B 전체 유지, A는 있으면 붙임
FULL OUTER JOIN	A+B 전체 출력 (한쪽만 있어도 출력)

0개의 댓글