본문 바로가기
프로그래밍

오라클 JOIN

by 이음코드 2025. 1. 14.
반응형

오라클 데이터베이스에서 Join은 서로 다른 테이블의 데이터를 결합하는데 사용됩니다. 데이터베이스 개발자와 관리자에게 필수적인 개념으로 기초적인 사용법부터 고급 활용까지 살펴보겠습니다.

1) JOIN의 기본 개념

 

JOIN은 관계형 데이터베이스에서 두 개 이상의 테이블을 연결하고 연관된 데이터를 검색하는 SQL문입니다. 테이블 간의 관계를 기반으로 데이터를 결합하며, 주요 유형은 다음과 같습니다.

1. JOIN의 주요 유형
  - INNER JOIN : 두 테이블에서 공통된 데이터만 반환
  - LEFT OUTER JOIN : 왼쪽 테이블의 모든 데이터와 매칭되는 오른쪽 테이블의 데이터 반환
  - RIGHT OUTER JOIN : 오른쪽 테이블의 모든 데이터와 매칭되는 왼쪽 테이블의 데이터 반환
  - FULL OUTER JOIN : 양쪽 테이블의 모든 데이터를 반환
  - CROSS JOIN : 두 테이블의 모든 조합 반환
  - SELF JOIN : 하나의 테이블을 자신과 결합

2) JOIN 문법과 사용법
   - 기본 문법

SELECT 컬럼명1, 컬럼명2, ...
FROM 테이블1
[JOIN 유형] 테이블2
ON 테이블1.컬럼 = 테이블2.컬럼;


3) JOIN의 기본 예제
데이터 준비
다음과 같은 두 개의 테이블로 예를 들겠습니다.
  - 테이블 : EMPLOYEES (직원 테이블)

EMP_ID NAME DEPT_ID
1 John 101
2 Jane 102
3 Alice NULL


  - 테이블 : DEPARTMENTS(부서 테이블)

DEPT_ID DEPT_NAME
101 HR
102 IT
103 Finance



1. INNER JOIN
INNER JOIN 은 두 테이블에서 일치하는 데이터만 반환합니다.

SELECT E.NAME, D.DEPT_NAME
FROM EMPLOYEES E
INNER JOIN DEPARTMENTS D
ON E.DEPT_ID = D.DEPT_ID;

 

  - 결과

NAME DEPT_NAME
John HR
Jane IT



2. LEFT OUTER JOIN
LEFT OUTER JOIN은 왼쪽 테이블의 모든 데이터와 오른쪽 테이블의 일치하는 데이터를 반환합니다.

SELECT E.NAME, D.DEPT_NAME
FROM EMPLOYEES E
LEFT OUTER JOIN DEPARTMENTS D
ON E.DEPT_ID = D.DEPT_ID;

 

  - 결과

NAME DEPT_NAME
John HR
Jane IT
Alice NULL



3. RIGHT OUTER JOIN
RIGHT OUTER JOIN은 오른쪽 테이블의 모든 데이터와 왼쪽 테이블의 일치하는 데이터를 반환합니다.

SELECT E.NAME, D.DEPT_NAME
FROM EMPLOYEES E
RIGHT OUTER JOIN DEPARTMENTS D
ON E.DEPT_ID = D.DEPT_ID;

 

  - 결과

NAME DEPT_NAME
John HR
Jane IT
NULL Finance


4. FULL OUTER JOIN
FULL OUTER JOIN은 양쪽 테이블의 모든 데이터를 반환하며, 일치하지 않는 부분은 NULL로 표시됩니다.

SELECT E.NAME, D.DEPT_NAME
FROM EMPLOYEES E
FULL OUTER JOIN DEPARTMENTS D
ON E.DEPT_ID = D.DEPT_ID;

 

  - 결과

NAME DEPT_NAME
John HR
Jane IT
Alice NULL
NULL Finance



5. CROSS JOIN

CROSS JOIN은 두 테이블의 모든 조합을 반환합니다.

SELECT E.NAME, D.DEPT_NAME
FROM EMPLOYEES E
CROSS JOIN DEPARTMENTS D;

 

  - 결과

NAME DEPT_NAME
John HR
John IT
John Finance
Jane HR
Jane IT
Jane Finance
Alice HR
Alice IT
Alice Finance

 

 6. SELF JOIN

SELF JOIN은 같은 테이블 내에서 데이터를 결합할 때 사용됩니다.

예제 : 직원의 매니저 정보를 조회

SELECT E1.NAME AS EMPLOYEE, E2.NAME AS MANAGER
FROM EMPLOYEES E1
LEFT JOIN EMPLOYEES E2
ON E1.MANAGER_ID = E2.EMP_ID;

 

4) 고급 JOIN 활용

 1. 다중 테이블 JOIN

세 개 이상의 테이블을 결합하려면 여러 JOIN을 사용할 수 있습니다.

SELECT E.NAME, D.DEPT_NAME, L.LOCATION
FROM EMPLOYEES E
INNER JOIN DEPARTMENTS D ON E.DEPT_ID = D.DEPT_ID
INNER JOIN LOCATIONS L ON D.LOCATION_ID = L.LOCATION_ID;

 

 2. 서브쿼리와 JOIN 결합

JOIN과 서브쿼리를 조합하여 복잡한 데이터 구조를 간단히 표현할 수 있습니다.

SELECT E.NAME, D.DEPT_NAME
FROM EMPLOYEES E
INNER JOIN (SELECT DEPT_ID, DEPT_NAME FROM DEPARTMENTS WHERE DEPT_NAME LIKE 'H%') D
ON E.DEPT_ID = D.DEPT_ID;

 

5) 성능 최적화

 1. 인덱스 사용

JOIN 성능은 인덱스에 크게 의존합니다. 자주 조인되는 컬럼에 인덱스를 생성하는 것이 좋습니다.

CREATE INDEX idx_dept_id ON EMPLOYEES(DEPT_ID);

 

2. 드라이빙 테이블 선택

JOIN 순서와 드라이빙 테이블은 쿼리 성능에 영향을 줍니다. 실행 계획 (EXPLAIN PLAN) 을 분석하여 최적화!

 

6) 정리 및 결론

오라클의 JOIN은 데이터를 효과적으로 결합하는 강력한 도구입니다. 기본 사용법에서 시작해 고급 기술 및 성능 최적화까지 숙지하면 효율적인 쿼리를 작성할 수 있습니다. 

 

* 저작권 정보 : 본 글은 공개적으로 사용 가능한 오라클 SQL문서와 필자의 지식에 기반하여 작성되었습니다.

반응형