반응형
조인은 관계형 데이터베이스에서 테이블 간 데이터를 연결하고 조회하는 데 핵심적인 역할을 합니다. 오라클 데이터베이스에서 조인은 다양한 방식으로 제공되며, 각 방식은 특정한 상황에서 효율적으로 사용됩니다. 이 글에서는 오라클에서 제공하는 조인의 종류, 사용 방법, 그리고 각각의 예제를 상세히 설명합니다.
1. 조인의 개념
조인(Join)은 SQL에서 두 개 이상의 테이블을 결합하여 데이터를 조회하는 기술입니다. 테이블 간 공통 열(컬럼)을 기반으로 데이터를 연결하며, 조인을 사용하면 단일 쿼리로 여러 테이블에서 데이터를 가져올 수 있습니다.
2. 오라클에서의 조인 종류
오라클에서는 여러 종류의 조인을 제공합니다. 주요 조인의 종류는 다음과 같습니다:
2.1 INNER JOIN (내부 조인)
- 두 테이블 간 공통된 값이 있는 행만 반환합니다.
- 공통 키를 기준으로 데이터를 결합하며, 일치하지 않는 행은 제외됩니다.
문법
SELECT A.열1, B.열2
FROM 테이블A A
INNER JOIN 테이블B B
ON A.공통열 = B.공통열;
예제
SELECT e.employee_id, e.name, d.department_name
FROM employees e
INNER JOIN departments d
ON e.department_id = d.department_id;
employees
와departments
테이블에서 공통 열department_id
를 기준으로 데이터를 결합합니다.
2.2 OUTER JOIN (외부 조인)
외부 조인은 INNER JOIN과 달리, 일치하지 않는 데이터도 포함하여 반환합니다. 외부 조인은 다시 세 가지로 나뉩니다:
2.2.1 LEFT OUTER JOIN
- 왼쪽 테이블의 모든 행을 반환하며, 오른쪽 테이블과 일치하지 않는 경우
NULL
값을 반환합니다.
문법
SELECT A.열1, B.열2
FROM 테이블A A
LEFT OUTER JOIN 테이블B B
ON A.공통열 = B.공통열;
예제
SELECT e.employee_id, e.name, d.department_name
FROM employees e
LEFT OUTER JOIN departments d
ON e.department_id = d.department_id;
- 모든 직원 정보를 반환하며, 부서가 없는 직원의 경우
department_name
에NULL
값이 표시됩니다.
2.2.2 RIGHT OUTER JOIN
- 오른쪽 테이블의 모든 행을 반환하며, 왼쪽 테이블과 일치하지 않는 경우
NULL
값을 반환합니다.
문법
SELECT A.열1, B.열2
FROM 테이블A A
RIGHT OUTER JOIN 테이블B B
ON A.공통열 = B.공통열;
예제
SELECT d.department_id, d.department_name, e.employee_id
FROM departments d
RIGHT OUTER JOIN employees e
ON d.department_id = e.department_id;
- 모든 부서 정보를 반환하며, 직원이 없는 부서는
employee_id
에NULL
값이 표시됩니다.
2.2.3 FULL OUTER JOIN
- 두 테이블의 모든 행을 반환하며, 일치하지 않는 데이터는
NULL
값을 포함합니다.
문법
SELECT A.열1, B.열2
FROM 테이블A A
FULL OUTER JOIN 테이블B B
ON A.공통열 = B.공통열;
예제
SELECT e.employee_id, e.name, d.department_name
FROM employees e
FULL OUTER JOIN departments d
ON e.department_id = d.department_id;
- 직원과 부서 정보를 모두 반환하며, 서로 매칭되지 않는 데이터는
NULL
로 표시됩니다.
2.3 CROSS JOIN (크로스 조인)
- 두 테이블의 Cartesian Product(데카르트 곱)를 반환합니다. 즉, 첫 번째 테이블의 모든 행과 두 번째 테이블의 모든 행의 조합을 생성합니다.
문법
SELECT A.열1, B.열2
FROM 테이블A A
CROSS JOIN 테이블B B;
예제
SELECT e.name, p.project_name
FROM employees e
CROSS JOIN projects p;
- 모든 직원과 모든 프로젝트의 조합을 반환합니다.
2.4 SELF JOIN (자기 조인)
- 동일한 테이블에서 데이터를 비교하여 조인합니다.
- 주로 계층적 데이터(예: 상사-부하 관계)를 처리할 때 사용됩니다.
문법
SELECT A.열1, B.열2
FROM 테이블A A
INNER JOIN 테이블A B
ON A.공통열 = B.공통열;
예제
SELECT e1.employee_id, e1.name AS employee_name, e2.name AS manager_name
FROM employees e1
INNER JOIN employees e2
ON e1.manager_id = e2.employee_id;
- 직원과 해당 상사의 이름을 같은 테이블에서 조회합니다.
2.5 NATURAL JOIN (네추럴 조인)
- 공통된 열 이름과 데이터 값을 기준으로 자동으로 조인합니다.
문법
SELECT *
FROM 테이블A
NATURAL JOIN 테이블B;
예제
SELECT *
FROM employees
NATURAL JOIN departments;
- 공통된 열 이름으로 조인을 수행합니다.
3. 조인을 활용한 고급 쿼리 예제
3.1 여러 테이블 조인
SELECT e.name, d.department_name, p.project_name
FROM employees e
INNER JOIN departments d
ON e.department_id = d.department_id
INNER JOIN projects p
ON e.project_id = p.project_id;
- 직원, 부서, 프로젝트 정보를 결합하여 조회합니다.
3.2 조건을 포함한 조인
SELECT e.name, d.department_name
FROM employees e
LEFT OUTER JOIN departments d
ON e.department_id = d.department_id
WHERE d.location = '서울';
- 서울에 위치한 부서의 직원만 조회합니다.
4. 결론
오라클에서 조인은 데이터베이스 관리와 분석의 필수 도구입니다. INNER JOIN, OUTER JOIN, CROSS JOIN 등 다양한 방식으로 데이터를 결합할 수 있으며, 각 상황에 적합한 조인을 선택하는 것이 중요합니다. 위의 설명과 예제를 통해 조인의 기본부터 고급 활용까지 이해하고, 실무에서 효과적으로 적용해 보세요.
반응형
'개발 > 오라클' 카테고리의 다른 글
오라클 테이블명을 입력하면 자동으로 SELECT, INSERT, UPDATE, DELETE 쿼리를 생성하는 SQL 스크립트 완벽 가이드 (0) | 2025.02.03 |
---|---|
오라클 SQL 실행 계획 최적화 - 성능 향상을 위한 실전 가이드 (0) | 2025.02.03 |
오라클 배치 처리 작성법과 다양한 유형의 예제 (0) | 2025.01.18 |
오라클 트리거의 작성법과 다양한 유형의 예제 (0) | 2025.01.17 |
오라클 VIEW 작성법과 다양한 유형의 예제 (0) | 2025.01.17 |