반응형

조인은 관계형 데이터베이스에서 테이블 간 데이터를 연결하고 조회하는 데 핵심적인 역할을 합니다. 오라클 데이터베이스에서 조인은 다양한 방식으로 제공되며, 각 방식은 특정한 상황에서 효율적으로 사용됩니다. 이 글에서는 오라클에서 제공하는 조인의 종류, 사용 방법, 그리고 각각의 예제를 상세히 설명합니다.


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;
  • employeesdepartments 테이블에서 공통 열 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_nameNULL 값이 표시됩니다.

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_idNULL 값이 표시됩니다.

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 등 다양한 방식으로 데이터를 결합할 수 있으며, 각 상황에 적합한 조인을 선택하는 것이 중요합니다. 위의 설명과 예제를 통해 조인의 기본부터 고급 활용까지 이해하고, 실무에서 효과적으로 적용해 보세요.

반응형

+ Recent posts