조인의 개념 (Equi Join, Non-Equi Join)

반응형
728x90
반응형

조인의 개요

 1. 정의

 - 두 개 이상의 테이블 들을 연결 또는 결합하여 데이터를 출력하는것

 - JOIN은 관계형 데이터베이스의 가장 큰 장점이면서 대표적인 핵심 기능이라고 할 수 있다.

 - 일반적인 경우 행들은 PRIMARY KEY(PK)나 FOREIGN KEY(FK) 값의 연관에 의해 JOIN이 성립된다.

 - 하지만 어떤 경우에는 이러한 PK, FK의 관계가 없어도 논리적인 값들의 연관만으로 JOIN이 성립 가능하다.

 

 2. 주의할점

 - FROM 절에 여러 테이블이 나열되더라도 SQL에서 데이터를 처리할 때는 단 두 개의 집합 간에만 조인이 일어난다는 것이다. 

 

+예시)

 

 

Equi Join

 

 1. 정의

 - 두 개의 테이블 간에 칼럼 값들이 서로 정확하게 일치하는 경우에 사용되는 방법이다.

 - 대부분 PK ↔ FK의 관계를 기반으로 한다.

 - 그러나 일반적으로 테이블 설계 시에 나타난 PK ↔ FK의 관계를 이용하는 것이지 반드시 PK ↔ FK의 관계로만 EQUI JOIN이 성립하는 것은 아니다.

 - 이 기능은 계층형(Hierarchical)이나 망형(Network) 데이터베이스와 비교해서 관계형 데이터베이스의 큰 장점이다.

 - JOIN의 조건은 WHERE 절에 기술하게 되는데 “=” 연산자를 사용해서 표현한다.

 

SELECT 테이블1.칼럼명, 테이블2.칼럼명, ... 
 FROM   테이블1, 테이블2 
 WHERE  테이블1.칼럼명1 = 테이블2.칼럼명2; 
 → WHERE 절에 JOIN 조건을 넣는다.

 

+ex)

 

 

 

 

Non-Equi Join

 

 1. 정의

 - 두 개의 테이블 간에 칼럼 값들이 서로 정확하게 일치하지 않는 경우에 사용된다.

 - Non EQUI JOIN의 경우에는 “=” 연산자가 아닌 다른(Between, >, >=, <, <= 등) 연산자들을 사용하여 JOIN을 수행하는 것이다.

 - 두 개의 테이블이 PK-FK로 연관관계를 가지거나 논리적으로 같은 값이 존재하는 경우에는 “=” 연산자를 이용하여 EQUI JOIN을 사용한다.

 - 그러나 두 개의 테이블 간에 칼럼 값들이 서로 정확하게 일치하지 않는 경우에는 EQUI JOIN을 사용할 수 없다.

 - 이런 경우 Non EQUI JOIN을 시도할 수 있으나 데이터 모델에 따라서 Non EQUI JOIN이 불가능한 경우도 있다.

 

 SELECT 테이블1.칼럼명, 테이블2.칼럼명, ... 
 FROM   테이블1, 테이블2 
 WHERE  테이블1.칼럼명1 BETWEEN 테이블2.칼럼명1 AND 테이블2.칼럼명2;

 

 = Non EQUI JOIN에 대한 샘플은 K-리그 관련 테이블로 구현되지 않으므로, 사원(EMP) 테이블과 가상의 급여등급(SAL_GRADE) 테이블로 설명을 하도록 한다. 어떤 사원이 받고 있는 급여가 어느 등급에 속하는 등급인지 알고 싶다는 요구사항에 대한 Non EQUI JOIN의 사례는 다음과 같다.

 

SELECT E.ENAME, E.JOB, E.SAL, S.GRADE 
 FROM   EMP E, SALGRADE S 
 WHERE  E.SAL BETWEEN S.LOSAL AND S.HISAL;

 

+ex)

 

+ex)

 - 사원 14명 모두에 대해 아래 SQL로 급여와 급여등급을 알아본다.

 

 SELECT E.ENAME 사원명, E.SAL 급여, S.GRADE 급여등급
 FROM   EMP E, SALGRADE S 
 WHERE  E.SAL BETWEEN S.LOSAL AND S.HISAL;

 

 

N개 이상의 테이블 조인

 - N 개 이상 Table Join 시 최소 N-1 개의 Join 조건 필요

 

 

 

참고 교재 : SQL 전문가 가이드

반응형

Designed by JB FACTORY