두 개이상의 테이블에서 원하는 컬럼값을 검색하기 위한 기능이다.
조인조건에 = 연산자를 사용하여 결과가 참인 행만 검색한다.
조인조건을 WHERE 구문의 조건식으로 표현하여 사용한다.
SELECT EMPNO,ENAME,SAL,DNAME,LOC FROM EMP,DEPT
WHERE EMP.DEPTNO=DEPT.DEPTNO;
조인조건에 = 연산자를 제외한 연산자를 사용하여 결과가 참인 행만 검색한다.
--조인조건 : 사원의 급여가 최소급여부터 최대급여 범위에 포함될 경우에 급여등록 검색
SELECT EMPNO,ENAME,SAL,GRADE FROM EMP,SALGRADE
WHERE SAL BETWEEN LOSAL AND HISAL;
교차조인된 검색결과에서 조건조건이 참인 행만 검색하는 것이 아니라 조인조건에 누락된 행도 검색한다.
조인조건의 테이블에 (+)를 사용하여 조인조건에 누락된 행의 컬럼값을 NULL로 검색되도록 설정한다.
--EMP 테이블과 DEPT 테이블에서
--모든 사원의 사원번호,사원이름,급여,부서이름,부서위치 검색하기
--조인조건: EMP 테이블의 부서번호와 DEPT 테이블의 부서번호가 같은 행을 결합되어 검색하고
--사원이 근무하지 않는 부서도 검색
--사원이 없는 부서를 검색해야 되는 경우 (+)를 사용하여 NULL이 검색되도록 설정함
SELECT EMPNO,ENAME,SAL,DNAME,LOC FROM EMP,DEPT
WHERE EMP.DEPTNO(+)=DEPT.DEPTNO;
하나의 테이블에 다른 여러 개의 별칭을 설정하여 조인하는 기능이다.
SELECT WORKER.EMPNO,WORKER.ENAME WORKER_ENAME,WORKER.MGR,
MANAGER.ENAME MANAGER_ENAME
FROM EMP WORKER,EMP MANAGER
WHERE WORKER.MGR=MANAGER.EMPNO(+);
조인 테이블의 모든 행을 교차조인하기 위한 조인이다.
조인조건을 명시하지 않고 조인한다.
형식)
SELECT 검색대상,... FROM 테이블명1 CROSS JOIN 테이블명2
SELECT EMPNO,ENAME,SAL,DNAME,LOC FROM EMP CROSS JOIN DEPT;
조인 테이블에 같은 이름의 컬럼이 하나만 있는 경우 같은 이름의 컬럼값을 비교하며 조인조건을 명시하지 않고 조인한다.
형식)
SELECT 검색대상,... FROM 테이블명1 NATURAL JOIN 테이블명2
SELECT EMPNO,ENAME,SAL,DEPTNO,DNAME,LOC FROM EMP NATURAL JOIN DEPT;
조인 테이블에 같은 이름의 컬럼이 여러 개 있는 경우 사용하며, 조인조건을 명시하지 않고 조인한다.
형식)
SELECT 검색대상,... FROM 테이블명1 JOIN 테이블명2 USING(컬럼명)
--USING 구문에서 명시된 컬럼명은 테이블명을 명시하지 않아도 사용 가능
SELECT EMPNO,ENAME,SAL,DEPTNO,DNAME,LOC FROM EMP
JOIN DEPT USING(DEPTNO);
조인조건을 명시하여 조인조건이 맞는 경우 결합하여 검색하는 조인
형식)
SELECT 검색대상,... FROM 테이블명1 [INNER] JOIN 테이블명2 ON 조인조건
--조인 테이블에 같은 이름의 칼럼이 존재할 경우 테이블명을 반드시 명시하여 검색
SELECT EMPNO,ENAME,SAL,DNAME,LOC FROM EMP
INNER JOIN DEPT ON EMP.DEPTNO=DEPT.DEPTNO;
--INNER 생략가능
SELECT EMPNO,ENAME,SAL,DNAME,LOC FROM EMP
JOIN DEPT ON EMP.DEPTNO=DEPT.DEPTNO;
조인조건을 명시하여 조인조건이 맞는 행과 조인조건이 맞지 않아 누락된 행도 결합하여 검색하는 조인
형식)
SELECT 검색대상,... FROM 테이블명1 {LEFT|RIGHT|FULL} [OUTER]
JOIN 테이블명2 ON 조인조건
왼쪽 방향에 선언된 테이블의 모든 행을 검색하되 오른쪽방향의 선언된 테이블은 조인조건이 참인 행과 결합하여 검색하고 조인조건에 참인 행이 없는 경우 NULL로 결합하여 검색한다.
SELECT EMPNO,ENAME,SAL,DNAME,LOC FROM EMP
LEFT JOIN DEPT ON EMP.DEPTNO=DEPT.DEPTNO;
오른쪽 방향에 선언된 테이블의 모든 행을 검색하되 왼쪽 방향의 선언된 테이블은 조인조건이 참인 행과 결합하여 검색하고 조인조건에 참인 행이 없는 경우 NULL로 결합하여 검색한다.
SELECT EMPNO,ENAME,SAL,DNAME,LOC FROM EMP
RIGHT JOIN DEPT ON EMP.DEPTNO=DEPT.DEPTNO;
양쪽 방향에 선언된 테이블의 모든 행을 검색하되 조인조건이 참인 행은 결합하여 검색하고 조인조건이 참인 행이 없는 경우 NULL로 결합하여 검색한다.
SELECT EMPNO,ENAME,SAL,DNAME,LOC FROM EMP
FULL JOIN DEPT ON EMP.DEPTNO=DEPT.DEPTNO;
테이블에 새로운 이름을 일시적으로 부여하는 기능이다.
테이블명을 간단하게 표현하기 위해 사용하거나 같은 테이블을 여러 개의 테이블로 표현하기 위해 사용한다.
테이블 별칭을 설정한 경우 별칭 대신 테이블명을 사용하면 에러가 발생한다.
형식)
SELECT 검색대상,... FROM 테이블명 별칭,...
--EMP 테이블을 E,
--DEPT 테이블을 D로 별칭을 붙여 사용
SELECT EMPNO,ENAME,SAL,E.DEPTNO EMP_DEPTNO,D.DEPTNO DEPT_DEPTNO,DNAME,LOC
FROM EMP E,DEPT D WHERE E.DEPTNO=D.DEPTNO;