SQL Server/개인 공부
< INNER, LEFT, RIGHT, FULL, CROSS > JOIN 의 간단한 사용 방법과 응용 사용 방법
코딩하는냥이
2025. 6. 5. 16:35
반응형
SQL Server에서 자주 사용되는 조인(Join) 문법인 INNER JOIN, LEFT JOIN, RIGHT JOIN, FULL JOIN, CROSS JOIN은 두 개 이상의 테이블에서 관련 데이터를 결합할 때 사용됩니다. 각각의 조인은 어떤 데이터를 포함시킬 것인지에 따라 동작 방식이 다릅니다.
📌 1. INNER JOIN
🔹 의미
- 두 테이블 간 조건을 만족하는 공통된 값이 있을 때만 결과에 포함.
- 가장 많이 사용되는 조인 방식.
🔹 기본 사용법
SELECT A.*, B.*
FROM TableA AS A
INNER JOIN TableB AS B ON A.id = B.id;
🔹 예시
두 테이블에 공통된 id가 있는 행만 출력.
📌 2. LEFT OUTER JOIN
🔹 의미
- 왼쪽 테이블의 모든 행을 포함하며, 오른쪽 테이블에 일치하는 값이 있으면 가져오고, 없으면 NULL로 표시.
🔹 기본 사용법
SELECT A.*, B.*
FROM TableA AS A
LEFT OUTER JOIN TableB AS B ON A.id = B.id;
🔹 예시
왼쪽 테이블은 모두 표시되고, 오른쪽 테이블에 일치하는 값이 없으면 NULL.
📌 3. RIGHT OUTER JOIN
🔹 의미
- 오른쪽 테이블의 모든 행을 포함하고, 왼쪽 테이블에 일치하는 값이 있으면 가져오고, 없으면 NULL.
🔹 기본 사용법
SELECT A.*, B.*
FROM TableA AS A
RIGHT OUTER JOIN TableB AS B ON A.id = B.id;
🔹 예시
LEFT JOIN의 반대. 오른쪽 기준으로 모두 보여줌.
📌 4. FULL OUTER JOIN
🔹 의미
- 양쪽 테이블의 모든 행을 포함하고, 일치하는 값이 없으면 NULL.
- 공통값이 있는 행은 합쳐지고, 없는 건 NULL.
🔹 기본 사용법
SELECT A.*, B.*
FROM TableA AS A
FULL OUTER JOIN TableB AS B ON A.id = B.id;
📌 5. CROSS JOIN
🔹 의미
- 모든 조합(Cartesian Product)을 반환.
- A 테이블의 행 수 × B 테이블의 행 수 만큼 결과가 나옴.
- 조인 조건을 쓰지 않음.
🔹 기본 사용법
SELECT A.*, B.*
FROM TableA AS A
CROSS JOIN TableB AS B;
💡 실전 예제 (응용 조합)
🔸 예제 테이블
- employees(emp_id, name, dept_id)
- departments(dept_id, dept_name)
🔸 INNER JOIN: 직원이 속한 부서 표시
SELECT e.name, d.dept_name
FROM employees AS e
INNER JOIN departments AS d ON e.dept_id = d.dept_id;
🔸 LEFT OUTER JOIN: 모든 직원과 소속 부서 (없는 경우 NULL)
SELECT e.name, d.dept_name
FROM employees AS e
LEFT OUTER JOIN departments AS d ON e.dept_id = d.dept_id;
🔸 RIGHT OUTER JOIN: 모든 부서와 그에 속한 직원 (없는 경우 NULL)
SELECT e.name, d.dept_name
FROM employees AS e
RIGHT OUTER JOIN departments AS d ON e.dept_id = d.dept_id;
🔸 FULL OUTER JOIN: 부서 또는 직원 중 어느 쪽이든 존재하면 표시
SELECT e.name, d.dept_name
FROM employees AS e
FULL OUTER JOIN departments AS d ON e.dept_id = d.dept_id;
🔸 CROSS JOIN: 직원 × 부서 조합 (모든 경우의 수)
SELECT e.name, d.dept_name
FROM employees AS e
CROSS JOIN departments AS d;
🔧 활용 팁 및 주의 사항
조인 종류 | 주로 사용되는 상황 | 주의사항 |
INNER JOIN | 일치하는 데이터만 필요한 경우 | 데이터 누락 가능성 있음 |
LEFT JOIN | 기준 테이블의 데이터는 무조건 필요할 때 | NULL 처리 필요 |
RIGHT JOIN | 상대 테이블의 모든 데이터를 보존해야 할 때 | 사용 빈도 낮음 |
FULL JOIN | 양쪽의 전체 데이터를 다 확인하고 싶을 때 | 결과가 많아질 수 있음 |
CROSS JOIN | 테스트용 조합, 드물게 사용 | 데이터량 폭발 위험 |
✅ 마무리 요약
- INNER JOIN: 공통된 값이 있는 경우만
- LEFT JOIN: 왼쪽 테이블 기준, 없는 건 NULL
- RIGHT JOIN: 오른쪽 테이블 기준, 없는 건 NULL
- FULL JOIN: 양쪽 모두 보존, 없는 건 NULL
- CROSS JOIN: 모든 조합 (A×B)