1. JOIN의 개념

- 2개의 테이블에 대해 연관 튜플들을 결합하여 하나의 새로운 릴레이션 반환

일반적으로 FROM 절에 기술릴레이션 사용되는 어느 곳에서나 사용 가능하며 보통 WHERE 절을 이용

 

2. INNER JOIN

1) EQUI 조인

- JOIN 대상 테이블에서 공통 속성을 기준으로 비교에 의해 같은 값 가지는 행 연결하여 결과 생성

- NATURAL JOIN : JOIN조건이 일 때 동일한 속성이 두 번 나타는데그것을 제거하여 한번만 표기

- JOIN 속성 연결 고리가 되는 공통 속성

 

(1) WHERE 절 이용

SELECT [테이블명1.]속성명, [테이블명2.]속성명,..

FROM 테이블명1, 테이블명2 ...

WHERE 테이블명1.속성명 테이블명2.속성명 ;


(2) NATURAL JOIN

SELECT [테이블명1.]속성명, [테이블명2.]속성명,...

FROM 테이블명1 NATURAL JOIN 테이블명 2 ;


NATURAL JOIN은 조인할 속성을 지정하지 않으므로

두 테이블에 이름과 도메인이 같은 속성이 반드시 존재해야 함

(3) JOIN ~ USING 절 이용

SELECT [테이블명1.]속성명, [테이블명2.]속성명,...

FROM 테이블명1 JOIN 테이블명2 USING(속성명) ;

 

2) NON – EQUI JOIN

- JOIN 조건에 조건이 아닌 비교연산자 사용하는 JOIN

SELECT [테이블명1.]속성명, [테이블명2.]속성명, ...

FROM 테이블명1, 테이블명2, ...

WHERE NON-EQUI JOIN 조건(비교연산) ;

 

3. OUTER JOIN

- JOIN 조건에 만족하지 않는 튜플도 결과로 출력하기 위한 방법

- INNER JOIN 결과를 구한 후 뒤에 OUTER JOIN 한 결과를 추가함


1) LEFT OUTER JOIN

우측항 릴레이션의 어떠한 튜플과도 맞지 않는 좌측 항 릴레이션에 있는 튜플들에 우측항 속성 튜플 값을 NULL로 붙임

좌측 릴레이션이 기준이 되어 좌측 릴레이션에 있는 튜플은 모두 표시하고 우측 릴레이션에서는 관련 있는 튜플만 표시

 

SELECT [테이블명1.]속성명, [테이블2.]속성명, ...

FROM 테이블명1 LEFT OUTER JOIN 테이블명2

ON 테이블명1. 속성명 테이블명2. 속성명 ;

SELECT [테이블명1.]속성명, [테이블명2.]속성명, ...

FROM 테이블명1테이블명2

WHERE 테이블명1. 속성명 테이블명2. 속성명(+) ;

 

2) RIGHT OUTER JOIN

좌측항 릴레이션의 어떠한 튜플과도 맞지 않은 우측 항의 릴레이션에 있는 튜플들에 좌측항 속성 튜플 값을 NULL로 붙임

우측 릴레이션이 기준이 되어 우측 릴레이션에 있는 튜플은 모두 표시하고 좌측 릴레이션에서는 연관된 튜플만 표시


SELECT [테이블명1.]속성명, [테이블명2.]속성명, ...

FROM 테이블명1 RIGHT OUTER JOIN 테이블명2

ON 테이블명1, 속성명 테이블명2. 속성명 ;

SELECT [테이블명1.]속성명, [테이블명2.]속성명, ...

FROM 테이블명1, 테이블명2

WHERE 테이블명1. 속성명(+) = 테이블명2. 속성명


* LEFT OUTER JOIN 과 RIGHT OUTER JOIN 은 FROM절 테이블 위치만 서로 바뀌면 같은 결과를 가져옴

 

3) FULL OUTER JOIN

- LEFT OUTER JOIN + RIGHT OUTER JOIN

SELECT [테이블명1.]속성명, [테이블명2.]속성명, ...

FROM 테이블명1 FULL OUTER JOIN 테이블명2

ON 테이블명1. 속성명 테이블명2. 속성명 ;

 

4. SELF JOIN

같은 테이블에서 2개의 속성을 연결하여 EQUI JOIN 하는 것


SELECT [별칭1.]속성명, [별칭1.]속성명,...

FROM 테이블명1 [AS] 별칭1 JOIN 테이블명2 [AS] 별칭2

ON 별칭1.속성명 별칭2.속성명 ;

SELECT [별칭1.]속성명, [별칭1.]속성명, ...

FROM 테이블명1 [AS] 별칭1, 테이블명[AS] 별칭2

WHERE 별칭1,속성명 별칭2.속성명 ;



테이블 1의 속성 하나가 테이블1의 또 다른 속성 하나랑 연결될 때 테이블 하나에 별칭을 2개 달아서 같은 테이블을 두 개로 복사해서 본다고 생각하고 대응시키면 됨

 


+ Recent posts