고래씌

[Oracle] 4-3. DML(SELECT) - JOIN ③ (카테시안 곱/교차 조인, 비등가 조인, 자체조인, 다중 조인) 본문

Database/Oracle

[Oracle] 4-3. DML(SELECT) - JOIN ③ (카테시안 곱/교차 조인, 비등가 조인, 자체조인, 다중 조인)

고래씌 2023. 11. 27. 11:36

1. 카테시안 곱/ 교차조인

 모든 테이블의 각 행들이 서로서로 매핑된 데이터가 조회됨(곱집합)
두 테이블의 행들이 모두 곱해진 행들의 조합 출력

 

  => 각각 N개, M개의 행을 가진 테이블들의 카테시안 곱의 결과는 N*M의 행
  => 모든 경우의 수를 다 따져서 조회하겠다
  => 방대한 데이터를 출력할 위험이 있다.

 

EMPLOYEE 테이블
DEPARTMENT 테이블
JOB 테이블

 

▶ 사원명, 부서명

- 오라클 구문

 

- ANSI 구문

 

....

 

☞ 값이 방대하게 여러가지 경우의 수를 두고 출력되는 것을 확인

☞ 카테시안 곱의 경우 WHERE 절에 기술하는 조인 조건이 잘못되었거나 아예 없을 경우 발생

 

 


2. 비등가 조인(NON EQUAL JOIN)

▶ '='를 사용하지 않는 조인문 => 다른 비교연산자를 써서 조인하겠다( >, <, BETWEEN A AND B ..)
    => 지정한 칼럼 값들이 일치하는 경우가 아니라 "범위"에 포함되는 경우 매칭해서 조회하겠다.

 

 

사원명, 급여, 급여등급(SAL_LEVEL)

- 오라클 전용구문

 

- ANSI 구문

 


3. 자체조인(SELF JOIN)

같은 테이블끼리 조인하는 경우
    즉, 자기 자신의 테이블과 다시 조인을 맺겠다.
    => 자체조인의 경우 테이블에 다시 별칭을 부여해줘야한다.

 

EMPLOYEE 테이블

 

▶ 사원의 사번, 사원명, 사수의 사번, 사수명

- 오라클 전용 구문

 

 

- ANSI 구문

 


4. 다중 조인

: 3개 이상의 테이블을 조인해서 조회하겠다 => 조인 순서가 중요하다

 

▶ 사번, 사원명, 부서명, 직급명

- 오라클 전용 구문

 

- ANSI 구문