JOIN(조인)은 2개의 테이블에 대해 연관된 튜플들을 결합하여, 하나의 새로운 릴레이션을 반환한다.
크게 INNER JOIN과 OUTER JOIN으로 구분된다.
JOIN은 일반적으로 FROM 절에 기술하지만, 릴레이션이 사용되는 어디에나 사용할 수 있다.
UNION
UNION ALL
INTERSECT
EXCEPT
JOIN
INNER JOIN
EQUI JOIN
NON-EQUI JOIN
OUTER JOIN
LEFT OUTER JOIN
RIGHT OUTER JOIN
INNER JOIN은 일반적으로 EQUI JOIN, NON-EQUI JOIN으로 나뉜다.
JOIN 대상 테이블에서 공통 속성을 기준으로 = 비교에 의해 같은 값 가지는 행 연결하여 결과 생성
NATURAL JOIN : JOIN조건이 = 일 때 동일한 속성이 두 번 나타는데, 그것을 제거하여 한번만 표기
JOIN 속성 : 연결 고리가 되는 공통 속성
SELECT 테이블명1.속성명, 테이블명2.속성명,..
FROM 테이블명1, 테이블명2 ...
WHERE 테이블명1.속성명 = 테이블명2.속성명 ;
SELECT 테이블명1.속성명, 테이블명2.속성명,...
FROM 테이블명1 NATURAL JOIN 테이블명 2 ;
SELECT 테이블명1.속성명, 테이블명2.속성명,...
FROM 테이블명1 JOIN 테이블명2 USING(속성명) ;
SELECT 테이블명1.속성명, 테이블명2.속성명, ...
FROM 테이블명1, 테이블명2, ...
WHERE NON-EQUI JOIN 조건(비교연산) ;
OUTER JOIN은 릴레이션에서 JOIN 조건에 만족하지 않는 튜플도 결과로 출력하기 위한 방법
우측항 릴레이션의 어떠한 튜플과도 맞지 않는 좌측 항 릴레이션에 있는 튜플들에 우측항 속성 튜플 값을 NULL로 붙임
SELECT 테이블명1.속성명, 테이블2.속성명, ...
FROM 테이블명1 LEFT OUTER JOIN 테이블명2
ON 테이블명1. 속성명 = 테이블명2. 속성명 ;
SELECT 테이블명1.속성명, 테이블명2.속성명, ...
FROM 테이블명1, 테이블명2
WHERE 테이블명1. 속성명 = 테이블명2. 속성명(+) ;
INNER 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절 테이블 위치만 서로 바뀌면 같은 결과를 가져옴
LEFT OUTER JOIN과 RIGHT OUTER JOIN을 합쳐 놓은 것이다.
SELECT 테이블명1.속성명, 테이블명2.속성명, ...
FROM 테이블명1 FULL OUTER JOIN 테이블명2
ON 테이블명1.속성명 = 테이블명2.속성명 ;
같은 테이블에서 2개의 속성을 연결하여 EQUI JOIN 하는 것
SELECT 별칭1.속성명, 별칭1.속성명,...
FROM 테이블명1 AS 별칭1
JOIN 테이블명2 AS 별칭2
ON 별칭1.속성명 = 별칭2.속성명 ;
테이블 1의 속성 하나가 테이블1의 또 다른 속성 하나랑 연결될 때 테이블 하나에 별칭을 2개 달아서 같은 테이블을 두 개로 복사해서 본다고 생각하고 대응시키는거라고 보면된다.