두 개 이상의 테이블을 연결하여 데이터를 조회하는 방법이다.
연사자, From절의 JOIN 형태에 따라 4가지로 나뉘어진다.
WHERE
절에 =
(Equality Condition)연산자를 사용해 조건을 명시SELECT [테이블명1.]속성명, [테이블명2.]속성명 ....
FROM 테이블명1, 테이블명2
WHERE 테이블명1.속성명 = 테이블명2.속성명
SELECT [테이블명1.]속성명, [테이블명2.]속성명 ....
FROM 테이블명1
INNER JOIN 테이블명2
ON 테이블명1.속성명 = 테이블명2.속성명
=
조건이 성립할 때 동일한 속성이 두번 나타나게 되는데, 중복을 제거해 한번만 표기하게 하는 방식이다.SELECT [테이블명1.]속성명, [테이블명2.]속성명 ....
FROM 테이블명1 NATURAL JOIN 테이블명2
NATURAL JOIN만 실행하면 동일한 이름을 가진 칼럼은 모두 조인되는데,
USING절을 활용하면 칼럼을 선택해 조인할 수 있다.
USING절 안에 포함되는 칼럼에 별칭을 지정하면 오류가 발생한다.
SELECT [테이블명1.]속성명, [테이블명2.]속성명 ....
FROM 테이블명1
JOIN 테이블명2
USING(속성명)
SELECT [테이블명1.]속성명, [테이블명2.]속성명 ....
FROM 테이블명1, 테이블명2..
WHERE (NON EQUI JOIN 조건)
-- 방법1
SELECT [별칭1.]속성명, [별칭2.]속성명 ....
FROM 테이블명1 AS 별칭1, 테이블명2 AS 별칭2
WHERE 별칭1.속성명 = 별칭2.속성명
-- 방법2
SELECT [별칭1.]속성명, [별칭2.]속성명 ....
FROM 테이블명1 AS 별칭1
JOIN 테이블명2 AS 별칭2
ON 별칭1.속성명 = 별칭2.속성명
테이블 A에서 조회되는 하나의 행에 테이블 B에서 조회되는 모든 행을 연결하여 조인한다.
SELECT [테이블명1.]속성명, [테이블명2.]속성명 ....
FROM 테이블명1 CROSS JOIN 테이블명2
일반적인 INNER JOIN과 비슷하지만 한 쪽의 데이터에서 JOIN조건에 일치하지 않는 값까지 모두 가져와 조회한다.
JOIN 수행 시 왼쪽에 표기된 테이블은 JOIN조건에 일치하지 않는 값까지 모두 조회된다.
-- 방법1
SELECT [테이블명1.]속성명, [테이블명2.]속성명 ....
FROM 테이블명1 LEFT OUTER JOIN 테이블명2..
ON 테이블명1.속성명 = 테이블명2.속성명
-- 방법2
SELECT [테이블명1.]속성명, [테이블명2.]속성명 ....
FROM 테이블명1, 테이블명2
WHERE 테이블명1.속성명 = 테이블명2.속성명(+)
JOIN 수행 시 오른쪽에 표기된 데이블은 JOIN조건에 일치하지 않는 값까지 모두 조회된다.
-- 방법1
SELECT [테이블명1.]속성명, [테이블명2.]속성명 ....
FROM 테이블명1 RIGHT OUTER JOIN 테이블명2..
ON 테이블명1.속성명 = 테이블명2.속성명
-- 방법2
SELECT [테이블명1.]속성명, [테이블명2.]속성명 ....
FROM 테이블명1, 테이블명2
WHERE 테이블명1.속성명(+) = 테이블명2.속성명
조인 수행 시 왼쪽, 오른쪽 테이블의 모든 값을 읽어 JOIN을 수행한다. LEFT OUTER JOIN과 RIGHT OUTER JOIN의 결과를 합집합으로 처리한 결과와 동일하다.
SELECT [테이블명1.]속성명, [테이블명2.]속성명 ....
FROM 테이블명1 FULL OUTER JOIN 테이블명2..
ON 테이블명1.속성명 = 테이블명2.속성명