1. JOIN
- JOIN : 두 개 이상의 테이블에서 행을 결합하여 원하는 컬럼값을 검색하기 위한 기능
- 두 개 이상의 테이블에서 컬럼값을 검색하기 위해서는 반드시 검색행을 결합하기 위한 조건을 제공하여 검색
=> 카테시안 곱 (CARTESIAN PRODUCT) : 두 개 이상의 테이블을 결합조건 없이 검색한 경우 발생되는 검색 결과
=> 결합조건 없이 검색한 경우 두 개 이상의 테이블에 저장된 모든 행을 교차 결합하여 검색 결과를 제공
2. 동등결합 (EQUI JOIN)
- 동등결합 (EQUI JOIN) : 두 개 이상의 테이블에서 결합조건에 '=' 연산자를 사용하여 참인 행만 결합하여 검색
- 결합 테이블에 같은 이름의 컬럼을 동시에 검색할 경우 컬럼 별칭을 사용하여 검색하는 것을 권장
- TABLE ALIAS : 테이블에 일시적으로 새로운 이름을 부여하여 용하는 기능
SELECT 검색대상, ... FROM 테이블명 별칭, 테이블명 별칭, ...
3. 비동등결합 (NON-EQUI JOIN)
- 비동등결합 (NON-EQUI JOIN) : 두 개 이상의 테이블의 결합조건에 '='연산자가 아닌 다른 연산자를 사용하여 참인 행을 결합하여 검색
4. 외부결합 (OUTER JOIN)
- 외부결합 (OUTER JOIN) : 결합조건이 참인 행만 경합하여 검색하는 것이 아니라 결합조건이 맞지 않는 행도 NULL과 결합하여 검색
- 결합 조건식의 테이블에 '(+)'를 사용하면 결합조건이 맞지 않는 행을 NULL과 결합하여 검색
5. 자기결합 (SELF JOIN)
- 자기결합 (SELF JOIN) : 하나의 테이블을 서로 다른 별칭을 부여하여 2개 이상의 테이블로 구분하여 행을 결합하여 검색
- 검색대상을 사용할 때 테이블을 명확하게 구분하기 위해 테이블 별칭을 사용하여 컬럼값 검색
결합조건과 행조건을 WHERE에서 같이 사용하므로 유지보수의 불편함 존재
=> 1999년 채택된 표준 SQL(SQL3)에서는 테이블의 결합조건과 행의 조건을 구분하여 사용될 수 있도록 다양한 테이블 결합 관련 기능 제공
6. CROSS JOIN
- CROSS JOIN : 결합 테이블의 모든 행을 교차 결합하여 검색
SELECT 검색대상, 검색대상, ... FROM 테이블명1 CROSS JOIN 테이블명2
7. NATURAL JOIN
- NATURAL JOIN : 결합 테이블에 같은 이름의 컬럼이 하나만 있는 경우 같은 이름의 컬럼에 저장된 컬럼값이 같은 행을 서로 결합하여 검색
- 결합 테이블에 같은 이름의 컬럼값을 이용하여 자동으로 행을 결합
SELECT 검색대상, 검색대상, ... FROM 테이블명1 NATURAL JOIN 테이블명2
8. JOIN USING
- JOIN USING : 결합 테이블에 같은 이름의 컬럼이 여러개 있는 경우 같은 이름의 컬럼에 저장된 컬럼값으로 행을 결합하여 검색
SELECT 검색대상, 검색대상, ... FROM 테이블명1 JOIN 테이블명2 USING(컬럼명)
9. INNER JOIN
- INNER JOIN : 결합조건이 참인 행을 결합하여 검색
- 'INNER'는 생략 가능
SELECT 검색대상, 검색대상, ... FROM 테이블명1 INNER JOIN 테이블명2 ON 결합조건
10. OUTER JOIN
- OUTER JOIN : 결합조건이 참인 행만 결합하여 검색하는 것이 아니라 결합조건이 맞지 않는 행도 NULL과 결합하여 검색
SELECT 검색대상, 검색대상, ... FROM 테이블명1 {LEFT|RIGTH|FULL}
OUTER JOIN 테이블명2 ON 결합조건
- LEFT OUTER JOIN : 왼쪽 테이블의 모든 행을 검색하고 결합조건이 맞지 않는 오른쪽 테이블의 행은 NULL과 결합
- RIGHT OUTER JOIN : 오른쪽 테이블의 모든 행을 검색하고 결합조건이 맞지 않는 왼쪽 테이블의 행은 NULL과 결합
- FULL OUTER JOIN : 양쪽 테이블의 모든 행을 검색하고 결합조건이 맞지 않는 양쪽 테이블의 행은 NULL과 결합