JOIN이란 무엇..? 'INNER JOIN'과 'LEFT JOIN'의 차이점은..?
✅ SQL 에서 JOIN이란..? JOIN에서 INNER JOIN과 LEFT JOIN이란..?
SQL을 공부하다 보면 JOIN이라는 기능이 자주 나온다. 처음에는 SELECT 문만 잘 쓰면 될 줄 알았는데,
실무에서는 여러 테이블을 연결해서 데이터를 가져오는 경우가 많다고 한다. 그럴 때 사용하는 게 바로 JOIN이다.
이번 글에서는 JOIN이 뭔지부터 시작해서, 가장 많이 사용되는 INNER JOIN과 LEFT JOIN의 개념과 차이를 예제와 함께 정리해보려고 한다.
JOIN이란?
JOIN은 두 개 이상의 테이블을 특정 조건으로 연결해서 하나의 결과로 보여주는 기능이다.
보통 테이블 간에 공통으로 가진 컬럼(예: ID)을 기준으로 묶어서 데이터를 가져온다.
예를 들어 회원 정보는 회원 테이블에, 주문 정보는 주문 테이블에 나눠져 있을 때,
"회원 이름과 그 사람이 주문한 상품"을 함께 보고 싶다면 JOIN을 사용해야 한다.
자주 쓰이는 JOIN 종류
JOIN은 종류가 여러 가지 있지만, 그중에서도 가장 기본이자 많이 쓰이는 게 다음 두 가지다.
- INNER JOIN: 양쪽 테이블에서 조건에 일치하는 데이터만 가져온다.
- LEFT JOIN: 왼쪽 테이블의 데이터를 모두 가져오고, 오른쪽은 조건이 맞는 것만 가져온다.
1. INNER JOIN
INNER JOIN은 두 테이블 사이에 조건에 맞는 데이터만 조회된다.
즉, 양쪽에 모두 값이 있어야 결과로 나온다.
SELECT 회원.이름, 주문.상품명
FROM 회원
INNER JOIN 주문
ON 회원.회원ID = 주문.회원ID;
- 회원ID가 같은 데이터만 조회된다.
- 주문한 적이 없는 회원은 결과에 나타나지 않는다.
예시 테이블
회원 테이블
회원ID 이름
1 | 철수 |
2 | 영희 |
3 | 민수 |
주문 테이블
주문ID 회원ID 상품명
101 | 1 | 키보드 |
102 | 2 | 마우스 |
결과 (INNER JOIN)
이름 상품명
철수 | 키보드 |
영희 | 마우스 |
→ 민수는 주문한 적이 없기 때문에 결과에 나오지 않는다.
2. LEFT JOIN
LEFT JOIN은 왼쪽 테이블의 데이터를 전부 보여준다.
오른쪽 테이블에 조건이 맞는 데이터가 있으면 같이 보여주고,
없으면 NULL로 나온다.
SELECT 회원.이름, 주문.상품명
FROM 회원
LEFT JOIN 주문
ON 회원.회원ID = 주문.회원ID;
- 회원 테이블은 전부 출력된다.
- 주문이 없는 회원은 상품명이 NULL로 출력된다.
결과 (LEFT JOIN)
이름 상품명
철수 | 키보드 |
영희 | 마우스 |
민수 | NULL |
→ 민수는 주문을 안 했지만, 회원이기 때문에 결과에 포함된다.
JOIN 정리 요약
JOIN 종류 기준 테이블 일치 조건 데이터 조건 불일치 데이터
INNER JOIN | 양쪽 테이블 | 결과에 포함됨 | 제외됨 |
LEFT JOIN | 왼쪽 테이블 | 결과에 포함됨 | 오른쪽은 NULL로 표시됨 |
언제 어떤 JOIN을 써야 할까?
- 특정 조건에 "완전히 일치하는 데이터만" 보고 싶다면 → INNER JOIN
- 기준 테이블(왼쪽)의 모든 데이터를 다 보고 싶다면 → LEFT JOIN
예를 들어, "주문 내역이 있는 회원만 보고 싶다"면 INNER JOIN을 쓰고,
"모든 회원을 다 보면서 주문했는지 여부도 보고 싶다"면 LEFT JOIN을 쓰면 된다.
결론
JOIN은 여러 테이블이 관계를 맺고 있을 때, 그 관계를 기반으로 데이터를 조합해서 보여주는 데 꼭 필요한 기능이다.
처음에는 어렵게 느껴질 수 있지만, 기준이 되는 테이블이 무엇인지, 어떤 조건으로 묶는지만 잘 생각하면 어렵지 않다.
INNER JOIN과 LEFT JOIN은 실무에서 자주 사용되므로, 기본 개념을 정확히 익혀두는 것이 좋을 것 같다.