SQL JOIN의 종류와 쿼리 예제 완벽 정리
데이터베이스를 다룰 때, 여러 테이블에서 정보를 통합해야 할 상황이 자주 발생합니다. 이때 활용되는 것이 SQL의 JOIN 기능입니다. JOIN 연산은 서로 다른 테이블의 데이터를 결합하여 하나의 결과셋으로 만드는 작업을 의미합니다. 이번 포스트에서는 다양한 JOIN의 종류와 그에 대한 예제를 소개하겠습니다.

JOIN의 기본 개념
JOIN은 기본적으로 두 개 이상의 테이블에서 행을 결합하는 작업입니다. 예를 들어, 직원 정보가 담긴 테이블과 해당 직원의 부서 정보를 가진 테이블이 있을 경우, 이 두 테이블을 연결하여 보다 풍부한 정보를 얻을 수 있습니다.
SQL JOIN의 종류
JOIN에는 여러 종류가 있으며, 각각의 특징에 따라 사용해야 할 상황이 다릅니다. 주요한 JOIN의 종류는 다음과 같습니다:
- INNER JOIN
- LEFT OUTER JOIN
- RIGHT OUTER JOIN
- FULL OUTER JOIN
- CROSS JOIN
- SELF JOIN
1. INNER JOIN
INNER JOIN은 두 테이블 간의 교집합을 반환합니다. 즉, 조인 조건에 맞는 행만을 선택하여 결과를 생성합니다. 예를 들어, 직원 테이블과 부서 테이블이 있을 때, 공통된 부서 ID에 따라 행을 결합합니다.
쿼리 예시:
SELECT e.name, d.department_name
FROM employees e
INNER JOIN departments d
ON e.department_id = d.id;

2. LEFT OUTER JOIN
LEFT OUTER JOIN은 왼쪽 테이블의 모든 행을 포함하고 오른쪽 테이블과 일치하는 행을 가져옵니다. 만약 오른쪽 테이블에 일치하는 데이터가 없다면 NULL로 표시됩니다.
쿼리 예시:
SELECT e.name, d.department_name
FROM employees e
LEFT OUTER JOIN departments d
ON e.department_id = d.id;
3. RIGHT OUTER JOIN
RIGHT OUTER JOIN은 오른쪽 테이블의 모든 행을 포함하고 왼쪽 테이블과 일치하는 데이터를 가져옵니다. 이때 일치하는 데이터가 없으면 NULL로 채워집니다.
쿼리 예시:
SELECT e.name, d.department_name
FROM employees e
RIGHT OUTER JOIN departments d
ON e.department_id = d.id;
4. FULL OUTER JOIN
FULL OUTER JOIN은 두 테이블의 모든 데이터를 포함하며, 조인 조건에 따라 일치하지 않는 행은 NULL로 표시됩니다. 즉, LEFT OUTER JOIN과 RIGHT OUTER JOIN의 결과를 합친 형태입니다.
쿼리 예시:
SELECT e.name, d.department_name
FROM employees e
FULL OUTER JOIN departments d
ON e.department_id = d.id;
5. CROSS JOIN
CROSS JOIN은 조인 조건 없이 모든 조합을 생성합니다. 즉, 두 테이블의 모든 행을 결합하여 Cartesian Product를 반환합니다. 보통 다소 비효율적이므로 일반적인 사용은 지양하는 것이 좋습니다.
쿼리 예시:
SELECT *
FROM table1
CROSS JOIN table2;
6. SELF JOIN
SELF JOIN은 동일한 테이블을 두 번 사용하여 조인하는 방법입니다. 주로 부모-자식 관계 등을 다룰 때 유용합니다. 예를 들어, 고객 테이블에서 배우자의 이름을 가져오고 싶다면 SELF JOIN을 사용할 수 있습니다.
쿼리 예시:
SELECT c1.name AS customer_name, c2.name AS spouse_name
FROM customers c1
INNER JOIN customers c2
ON c1.spouse_id = c2.id;

JOIN의 활용 방법과 주의 사항
JOIN을 사용할 때는 몇 가지 주의해야 할 점이 있습니다. 첫째, 조인 키가 양쪽 테이블 모두에 존재해야만 INNER JOIN이 가능합니다. 둘째, OUTER JOIN을 사용할 경우 좋은 성능을 위해 기준 테이블의 선택이 중요합니다. 마지막으로, CROSS JOIN은 데이터 양이 많을 경우 성능 저하가 우려되므로 신중하게 사용해야 합니다.
결론
이번 포스트에서는 SQL JOIN의 다양한 종류와 각각의 쿼리 예제를 살펴보았습니다. JOIN 연산은 데이터베이스에서 다양한 정보를 통합하고 분석하는 데 필수적인 기능입니다. 적절한 JOIN을 선택하여 필요에 맞는 데이터를 효과적으로 추출하시기 바랍니다.
자주 찾으시는 질문 FAQ
SQL JOIN의 기본 개념은 무엇인가요?
SQL JOIN은 서로 다른 테이블에서 데이터를 결합하여 하나의 결과셋을 생성하는 기능입니다. 예를 들어, 직원 정보와 부서 정보를 연결하여 더 풍부한 데이터를 얻을 수 있습니다.
INNER JOIN과 OUTER JOIN의 차이는 무엇인가요?
INNER JOIN은 두 테이블에서 공통된 행만 추출하는 반면, OUTER JOIN은 한쪽 테이블의 모든 행을 포함하고, 일치하지 않는 경우는 NULL로 표시됩니다.
CROSS JOIN을 사용하는 것이 언제 적합한가요?
CROSS JOIN은 조인 조건 없이 두 테이블의 모든 조합을 생성합니다. 일반적으로 특정한 목적이 있을 때 사용하나, 성능 저하의 위험이 있어 주의가 필요합니다.