테이블 붙이기(JOIN)
SQL JOIN의 종류
1. INNER JOIN (내부 조인)
- 두 테이블 간에 공통된 값이 있는 행만 반환합니다.
- 조건에 맞지 않는 행은 제외됩니다.
✅ 예제
sql
SELECT employees.name, departments.dept_name
FROM employees
INNER JOIN departments ON employees.dept_id = departments.dept_id;
결과:
→ employees 테이블과 departments 테이블에서 dept_id가 같은 행만 조회
2. LEFT JOIN (왼쪽 외부 조인)
- 왼쪽 테이블의 모든 행을 반환하고, 오른쪽 테이블에서 일치하는 값이 있으면 포함합니다.
- 오른쪽 테이블에 일치하는 값이 없으면 NULL이 반환됩니다.
✅ 예제
sql
SELECT employees.name, departments.dept_name
FROM employees
LEFT JOIN departments ON employees.dept_id = departments.dept_id;
결과:
→ employees의 모든 행을 반환하며, 일치하는 departments가 없으면 NULL 포함
3. RIGHT JOIN (오른쪽 외부 조인)
- 오른쪽 테이블의 모든 행을 반환하고, 왼쪽 테이블에서 일치하는 값이 있으면 포함합니다.
- 왼쪽 테이블에 일치하는 값이 없으면 NULL이 반환됩니다.
✅ 예제
sql
SELECT employees.name, departments.dept_name
FROM employees
RIGHT JOIN departments ON employees.dept_id = departments.dept_id;
결과:
→ departments의 모든 행을 반환하며, 일치하는 employees가 없으면 NULL 포함
4. FULL JOIN (전체 외부 조인)
- 두 테이블의 모든 행을 반환하고, 일치하는 값이 있으면 결합합니다.
- 일치하는 값이 없으면 NULL이 반환됩니다.
✅ 예제
sql
SELECT employees.name, departments.dept_name
FROM employees
FULL JOIN departments ON employees.dept_id = departments.dept_id;
결과:
→ employees와 departments의 모든 데이터를 반환하며, 일치하는 값이 없으면 NULL 포함
5. CROSS JOIN (교차 조인)
- 두 테이블 간 **모든 가능한 조합(카테시안 곱)**을 반환합니다.
- ON 조건 없이 단순히 두 테이블을 곱한 결과를 가져옵니다.
✅ 예제
sql
SELECT employees.name, departments.dept_name
FROM employees
CROSS JOIN departments;
결과:
→ employees의 모든 행과 departments의 모든 행을 조합하여 반환 (예: 직원이 5명, 부서가 3개라면 5×3=15개의 결과)
6. SELF JOIN (자기 조인)
- 동일한 테이블을 자기 자신과 조인할 때 사용합니다.
- 테이블을 두 번 사용하며, 서로 다른 별칭을 부여해야 합니다.
✅ 예제
sql
SELECT e1.name AS employee, e2.name AS manager
FROM employees e1
JOIN employees e2 ON e1.manager_id = e2.id;
결과:
→ 한 테이블 내에서 직원과 매니저 정보를 매칭하여 조회
📝 JOIN 선택 가이드
JOIN 종류 반환 데이터
JOIN 종류 | 반환 데이터 |
INNER JOIN | 일치하는 데이터만 반환 |
LEFT JOIN | 왼쪽 테이블 전체 + 일치하는 오른쪽 테이블 데이터 |
RIGHT JOIN | 오른쪽 테이블 전체 + 일치하는 왼쪽 테이블 데이터 |
FULL JOIN | 모든 데이터 (NULL 포함) |
CROSS JOIN | 모든 가능한 조합 반환 |
SELF JOIN | 같은 테이블을 활용하여 자기 자신과 조인 |
🎯 정리
- INNER JOIN → 일치하는 데이터만 가져옴
- LEFT JOIN → 왼쪽 테이블을 기준으로 모든 데이터 반환
- RIGHT JOIN → 오른쪽 테이블을 기준으로 모든 데이터 반환
- FULL JOIN → 두 테이블의 모든 데이터 반환
- CROSS JOIN → 두 테이블의 모든 조합 반환
- SELF JOIN → 동일한 테이블을 조인하여 관계 조회
'SQL(데이터베이스)' 카테고리의 다른 글
12. DB 제2정규형(2NF) 제3정규형(3NF) (0) | 2025.03.11 |
---|---|
11. SQL GROUP BY & HAVING 개념 정리 (0) | 2025.03.11 |
9. 테이블 로우 삭제(DELETE) (0) | 2025.03.10 |
8. 테이블 로우 갱신(UPDATE) (0) | 2025.03.10 |
7. 테이블 로우 조회(WHERE)(특정로우 조회) (0) | 2025.03.10 |