[데이터베이스] EQUI JOIN vs Non-EQUI JOIN (등가 vs 비등가 조인)CS/데이터베이스2022. 7. 22. 10:49
Table of Contents
728x90
EQUI JOIN vs Non-EQUI JOIN
EQUI JOIN
조인 대상이 되는 두개의 테이블 간에 칼럼 값들이 서로 정확하게 일치하는 행을 연결하는 생성하는 조인 기법이다.
대부분 PK ↔ FK의 관계를 기반으로 한다. (반드시 PK ↔ FK의 관계로만 EQUI JOIN이 성립되는 것은 아니다.)
JOIN의 조건은 WHERE절에 기술하게 되는데 = 연산자를 사용해서 표현한다.
사용 방법
SELECT 테이블1.칼럼명, 테이블2.칼럼명, ...
FROM 테이블1, 테이블2
WHERE 테이블1.칼럼명1 = 테이블2.칼럼명2;
SELECT *
FROM 테이블1, 테이블2
WHERE 테이블1.칼럼 = 테이블2.칼럼;
SELECT *
FROM 테이블1, 테이블2
WHERE 테이블1.칼럼 = 테이블2.칼럼 AND 추가 조건;
WHERE절에 JOIN 조건을 넣는다.
Non-EQUI JOIN
두개의 테이블 간에 칼럼 값들이 서로 정확하게 일치하지 않는 경우 사용된다.
Non EQUI JOIN의 경우에는 = 연산자가 아닌 다른(Between, >, >=, <, <= 등) 연산자들을 사용해 JOIN을 수행하는 것이다.
데이터 모델에 따라서 Non-EQUI JOIN이 불가능한 경우도 있다.
사용 방법
SELECT 테이블1.칼럼명, 테이블2.칼럼명, ...
FROM 테이블1, 테이블2
WHERE 테이블1.칼럼명1 BETWEEN 테이블2.칼럼명1 AND 테이블2.칼럼명2;
예시
어떤 사원이 받고 있는 급여가 어느 등급에 속하는 등급인지 알고싶을 때 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;
SELECT E.ENAME 사원명, E.SAL 급여, S.GRADE 급여등급
FROM EMP E, SALGRADE S
WHERE E.SAL BETWEEN S.LOSAL AND S.HISAL;
우선 EMP 테이블의 사원 수는 9명이고 SAL GRADE 테이블의 급여 등급 개수는 5개이다.
사원 수 별 급여 등급을 찾기 위해 SAL GRADE 테이블의 튜플 수를 EMP 테이블의 사원 수에 맞춘다.
이후 연산을 수행하면 9명의 사원 모두에 대한 급여 등급을 찾아낼 수 있다.
참고
728x90
'CS > 데이터베이스' 카테고리의 다른 글
[데이터베이스] Index (인덱스) (0) | 2022.07.22 |
---|---|
[데이터베이스] Anomaly (이상 현상) (0) | 2022.07.22 |
[데이터베이스] Full Outer Join vs UNION, Inner Join vs INTERSECT (0) | 2022.07.22 |
[데이터베이스] SQL vs NoSQL 개념, 장단점, 비교 (0) | 2022.07.21 |
[데이터베이스] Join 이란 ? (0) | 2022.07.21 |
@TTOII :: 뭉게뭉게 클라우드
영차영차 성장 블로그
포스팅이 좋았다면 "좋아요❤️" 또는 "구독👍🏻" 해주세요!