JOIN은 두 개 이상의 테이블을 연결하여 데이터를 결합하는 SQL 연산입니다. 테이블 간의 연결은 공통 컬럼을 기준으로 이루어집니다. JOIN을 사용하면 여러 테이블에 분산된 데이터를 하나의 테이블처럼 조회할 수 있습니다.
JOIN에는 다양한 종류가 있으며, 각각 조금씩 다른 방식으로 테이블을 연결합니다.
2.1 INNER JOIN (내부 조인)
INNER JOIN은 두 테이블의 조인 조건을 만족하는 레코드만을 반환합니다. 즉, 두 테이블 모두에서 일치하는 레코드만 출력됩니다.
예시:
# 직원 테이블과 부서 테이블을 부서 ID를 기준으로 INNER JOIN
SELECT *
FROM 직원
INNER JOIN 부서 ON 직원.부서_ID = 부서.ID;
결과:
| 직원 이름 | 부서 이름 |
|---|---|
| 홍길동 | 개발부 |
| 김철수 | 영업부 |
2.2 LEFT JOIN (왼쪽 조인)
LEFT JOIN은 왼쪽 테이블의 모든 레코드를 반환하며, 오른쪽 테이블에서 조인 조건을 만족하는 레코드만 결합합니다. 즉, 왼쪽 테이블에만 존재하는 레코드도 출력됩니다.
예시:
# 직원 테이블과 부서 테이블을 부서 ID를 기준으로 LEFT JOIN
SELECT *
FROM 직원
LEFT JOIN 부서 ON 직원.부서_ID = 부서.ID;
결과:
| 직원 이름 | 부서 이름 |
|---|---|
| 홍길동 | 개발부 |
| 김철수 | 영업부 |
| 박지영 | (null) |
2.3 RIGHT JOIN (오른쪽 조인)
RIGHT JOIN은 오른쪽 테이블의 모든 레코드를 반환하며, 왼쪽 테이블에서 조인 조건을 만족하는 레코드만 결합합니다. 즉, 오른쪽 테이블에만 존재하는 레코드도 출력됩니다.
예시:
# 직원 테이블과 부서 테이블을 부서 ID를 기준으로 RIGHT JOIN
SELECT *
FROM 직원
RIGHT JOIN 부서 ON 직원.부서_ID = 부서.ID;
결과:
| 직원 이름 | 부서 이름 |
|---|---|
| 홍길동 | 개발부 |
| 김철수 | 영업부 |
| (null) | 인사부 |
2.4 FULL JOIN (외부 조인)
FULL JOIN은 왼쪽 테이블과 오른쪽 테이블의 모든 레코드를 반환합니다. 즉, 두 테이블 중 하나라도 조인 조건을 만족하는 레코드는 모두 출력됩니다.
예시:
# 직원 테이블과 부서 테이블을 부서 ID를 기준으로 FULL JOIN
SELECT *
FROM 직원
FULL JOIN 부서 ON 직원.부서_ID = 부서.ID;
결과:
| 직원 이름 | 부서 이름 |
|---|---|
| 홍길동 | 개발부 |
| 김철수 | 영업부 |
| 박지영 | (null) |
| (null) | 인사부 |
JOIN은 ON 절을 사용하여 조인 조건을 지정합니다. ON 절에는 두 테이블의 공통 컬럼을 비교하는 식을 작성합니다.
예시:
# 직원 테이블과 부서 테이블을 부서 ID와 부서 이름을 기준으로 JOIN
SELECT *
FROM 직원
JOIN 부서 ON 직원.부서_ID = 부서.ID AND 직원.부서_name = 부서.name;
**4. JOIN 활용
JOIN은 다양한 데이터 분석 작업에 활용될 수 있습니다.