JOIN이란?
JOIN은 2개 이상의 테이블을 하나의 테이블처럼 임시로 연결하여 조회하는 기능이다.
이 임시 테이블은 조회가 끝나는 순간 함께 사라지며, 실제 데이터베이스의 테이블 구조가 변경되는 것은 아니다.
즉, JOIN은 데이터를 복사하거나 새로운 테이블을 만드는 것이 아니라 조회할 때만 일시적으로 연결해서 사용하는 기능이다.
예를 들어 주문 정보는 t_order, 회원 정보는 t_user, 상품 정보는 t_product에 따로 저장되어 있다. JOIN을 사용하면 이 테이블들을 연결하여 주문한 사람의 이름과 구매한 상품을 한 번에 조회할 수 있다.
INNER JOIN
INNER JOIN은 조인 조건이 일치하는 데이터만 연결하여 조회한다.
SELECT *
FROM t_order
INNER JOIN t_user
ON t_order.userNo = t_user.id;
위 예제에서는 주문 테이블의 userNo와 회원 테이블의 id가 같은 데이터만 연결된다.
ON으로 조인 조건 지정
JOIN을 사용할 때는 ON으로 어떤 컬럼을 기준으로 연결할지 반드시 지정해야 한다.
ON o.userNo = u.id
조인 조건을 지정하지 않으면 두 테이블의 모든 행(Row)이 서로 연결되는 무지성 조인(Cartesian Product)이 발생한다.
즉, 두 테이블의 모든 행의 조합이 생성되어 불필요한 데이터가 매우 많이 조회된다. 따라서 JOIN을 사용할 때는 항상 적절한 ON 조건을 작성해야 한다.
테이블 별칭
JOIN을 사용할 때는 테이블 이름이 길어지는 경우가 많다. 이때 AS를 사용하면 짧은 이름으로 사용할 수 있어 SQL이 훨씬 읽기 쉬워진다.
FROM t_order AS o
INNER JOIN t_user AS u
ON o.userNo = u.id
처럼 별칭을 사용하여 컬럼을 o.userNo, u.userName, p.pname처럼 간단하게 표현할 수 있다.
AS는 생략 가능하다.
FROM t_order o
INNER JOIN t_user u
LEFT JOIN
왼쪽 테이블의 데이터는 모두 유지하면서 오른쪽 테이블의 데이터를 붙인다.
조건에 맞는 데이터가 없으면 NULL이 출력된다.
SELECT *
FROM t_user u
LEFT JOIN t_order o
ON u.id = o.userNo;
RIGHT JOIN
오른쪽 테이블의 데이터를 모두 유지한다.
SELECT *
FROM t_user u
RIGHT JOIN t_order o
ON u.id = o.userNo;
'데이터베이스 > MySQL' 카테고리의 다른 글
| [MySQL] 외래키(FOREIGN KEY) (0) | 2026.07.30 |
|---|---|
| [MySQL] CHAR / VARCHAR, INDEX (0) | 2026.07.30 |
| [MySQL] 집계 함수, GROUP BY, 서브쿼리 (0) | 2026.07.29 |
| [MySQL] SELECT 심화 (0) | 2026.07.29 |
| [MySQL] 기초 명령어 (0) | 2026.07.28 |
댓글