Notice
Recent Posts
Recent Comments
05-13 06:55
«   2024/05   »
1 2 3 4
5 6 7 8 9 10 11
12 13 14 15 16 17 18
19 20 21 22 23 24 25
26 27 28 29 30 31
Archives
Today
Total
관리 메뉴

-

[SQLD] #020 SQL 기본 - JOIN 본문

SQLD

[SQLD] #020 SQL 기본 - JOIN

choiht 2021. 5. 6. 14:22
반응형

목차

1. JOIN 개요

2. EQUI JOIN

3. Non EQUI JOIN

4. 3개 이상 TABLE JOIN

 

 


 

 

1. JOIN 개요

JOIN : 두 개 이상의 테이블들을 연결하여 데이터를 출력하는 것. 

일반적으로 사용되는 SQL 문장의 상당수가 JOIN 이다. 

 

보통은 PK나 FK 값의 연관에 의해 JOIN이 성립된다. FROM 절에 여러 테이블이 나열되더라도 SQL 에서 데이터를 처리할 때는 단 두개의 집합 간에만 JOIN이 일어난다. 

 

 

 

 

 

 

 

 

 

 

2. EQUI JOIN

EQUI JOIN : 두 개의 테이블 간에 칼럼 값들이 서로 정확하게 일치하는 경우에 사용되는 방법. 대부분 PK-FK의 관계를 기반으로 한다.

 

일반적으로 테이블 설계 시에 나타난 PK-FK의 관계를 이용하는것일 뿐, 반드시 PK-FK의 관계로만 EQUI JOIN이 성립하는 것은 아니다. 이 기능은 계층형이나 망형 데이터베이스와 비교해서 관계형 데이터베이스의 큰 장점이다. 

 

JOIN 조건은 '=' 연산자를 사용해서 WHERE 절에 기술한다.

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

-- WHERE 절에 JOIN 조건을 넣는다.

 

SELECT 구문에 단순히 칼럼명이 오지 않고 "테이블명.칼럼명" 으로 기술하는 이유

- JOIN에 사용되는 두 테이블에 같은 칼럼명이 존재할 경우 에러 방지

- 개발자의 SQL에 대한 가독성이나 유지보수성 향상 

 

조인 조건에 맞는 데이터만 출력하는 INNER JOIN에 참여하는 대상 테이블이 N 개라고 했을 때, N개의 테이블로부터 필요한 데이터를 조회하기 위해 필요한 JOIN 조건은 대상 테이블의 개수에서 하나를 뺀 N-1개 이상이 필요하다.

즉, FROM 절에 테이블이 4개가 표시되어있다면 JOIN 조건은 4-1=3개 이상이 필요하다. 

 

 

 

 

 

 

 

 

 

 

 

 

3. Non EQUI JOIN

Non EQUI JOIN (비등가 JOIN) : 두개의 테이블간에 칼럼 값들이 서로 정확하게 일치하지 않는 경우에 사용된다. 

 

Non EQUI JOIN의 경우에는 '=' 연산자가 아닌 다른 연산자들을 사용하여 JOIN을 수행한다. 

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

 

 

 

위의 그림은 사원의 급여가 어느 등급에 속하는지 판단하기 위한 것이다.

이 상황에 EQUI JOIN을 적용하기 위한 쿼리는 아래와 같다.

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

 

 

 

 

 

 

 

 

 

4. 3개 이상 TABLE JOIN 

서로 관계가 없는 두 테이블에 연관관계가 있는 테이블이 존재한다면 세 개의 테이블을 JOIN 할 수 있다. 

세개의 테이블에 대한 JOIN 이므로 WHERE 절에 2개 이상의 JOIN 조건이 필요하다. 

 

 

 

 

 

 

 

 


출처
이 글의 내용은 모두 한국데이터베이스진흥원이 출판한 SQL 전문가 가이드 2013 Edition을 기본으로 한다.

반응형
Comments