JOIN
- 하나 이상의 테이블에서 데이터를 조회하기 위해 사용
- 수행 결과는 하나의 RESULT SET으로 나옴
내부 조인 (INNER JOIN)
- 연결되는 컬럼의 값이 일치하는 행들만 조인됨
- (= 일치하는 값이 없는 행은 조인에서 제외됨)
ANSI 표준 구문
FROM 테이블명1
JOIN 테이블명2 ON(컬럼명1 = 컬럼명2)
FROM 테이블명1
JOIN 테이블명2 USING(컬럼명)
오라클 전용 구문
FROM 테이블명1, 테이블명2
WHERE 컬럼명1 = 컬럼명2
- 2) 연결에 사용할 두 컬럼명이 같은 경우
별칭 사용이 필요하다
FROM 테이블명1 별칭1, 테이블명2 별칭2
WHERE 별칭1.컬럼명 = 별칭2.컬럼명
외부 조인 (OUTER JOIN)
- 두 테이블이 지정하는 컬럼값이 일치하지 않는 행도 조인에 포함을 시킨다
ANSI 표준 구문
- 1) LEFT [OUTER] JOIN
합치기에 사용한 두 테이블 중 왼편에 기술된 테이블의 컬럼 수를 기준으로 JOIN
FROM 테이블명1
LEFT JOIN 테이블명2 ON(컬럼명1 = 컬럼명2)
- 2) RIGHT [OUTER] JOIN
합치기에 사용한 두 테이블 중 오른편에 기술된 테이블의 컬럼 수를 기준으로 JOIN
FROM 테이블명1
RIGHT JOIN 테이블명2 ON(컬럼명1 = 컬럼명2)
- 3) FULL [OUTER] JOIN
합치기에 사용한 두 테이블이 가진 모든 행을 결과에 포함
FROM 테이블명1
FULL JOIN 테이블명2 ON(컬럼명1 = 컬럼명2)
*오라클은 FULL JOIN을 사용 못함
오라클 전용 구문
- 1) LEFT JOIN
컬럼명1의 값이 컬럼명2의 값과 일치하지 않아도 추가하라는 뜻
FROM 테이블명1, 테이블명2
WHERE 컬럼명1 = 컬럼명2(+)
FROM 테이블명1, 테이블명2
WHERE 컬럼명1(+) = 컬럼명2
교차 조인 (CROSS JOIN, CARTESIAN PRODUCT)
- 조인되는 테이블의 각 행들이 모두 매핑된 데이터가 검색되는 방법(곱집합)
- (자연 조인 실패 결과물로 확인 가능하다)
비등가 조인 (NON EQUAL JOIN)
- '='(등호)를 사용하지 않는 조인문
- 지정한 컬럼 값이 일치하는 경우가 아닌, 값의 범위에 포함되는 행들을 연결하는 방식
FROM 테이블명1
JOIN 테이블명2 ON(컬럼명 BETWEEN A AND B)
자체 조인 (SELF JOIN)
ANSI 표준 구문
FROM 테이블명 별칭1
JOIN 테이블명 별칭2 ON(별칭1.컬럼명1 = 별칭2.컬럼명2)
오라클 전용 구문
FROM 테이블명 별칭1, 테이블명 별칭2
WHERE 별칭1.컬럼명1 = 별칭2.컬럼명2(+)
자연 조인 (NATURAL JOIN)
- 동일한 타입과 이름을 가진 컬럼이 있는 테이블 간의 조인을 간단히 표현하는 방법
- 반드시 두 테이블 간의 동일한 컬럼명, 타입을 가진 컬럼이 필요하다
- 없을 경우 교차 조인이 된다
FROM 테이블명1
NATURAL JOIN 테이블명2
다중 조인
- N개의 테이블을 조회할 때 사용
- 순서가 중요하다
FROM 테이블명1
JOIN 테이블명2 ON(컬럼명1 = 컬럼명2)
JOIN 테이블명3 ON(컬럼명1 = 컬럼명3)
...