CROSS JOIN - 2개 이상의 테이블이 조인이 될때 WHERE 절에 의해 공통으로 결합이 발생하지 않는 경우
EX) SELECT * FROM EMP,DEPT;
EQUI JOIN - 조인대상이 되는 두테이블에서 공통적으로 존재하는 컬럼의 값이 일치되는행을 연결하여 결과 생성
EX) SELECT * FROM EMP, DEPT WHERE EMP.DEPTNO = DEPT.DEPTNO;
EX) SELECT E.ENAME, D.DNAME, E.DEPTNO, D.DEPTNO FROM EMP E, DEPT D WHERE E.DEPTNO = D.DEPTNO AND E.ENAME='SCOTT';
NON-EQUI JOIN - 조인조건의 특정 범위 내에 있는지 조사하기위해
EX) SELECT E.ENAME, D.DNAME, S.GRADE FROM EMP E,DEPT D, SALGRADE S
WHERE E.DEPTNO = D.DEPTNO AND E.SAL BETWEEN S.LOSAL AND S.HISAL;
SELF JOIN - 하나의 테이블 내에서 조인을 해야만 결과를 얻을수 있을때.
EX) SELECT EMPLOYEE.ENAME || '의 매니저는' || MANAGER.ENAME || '입니다' FROM EMP EMPLOYEE, EMP MANAGER WHERE EMPLOYEE.MGR = MANAGER.EMPNO;
OUTER JOIN - 2개이상의 테이블이 조인딜때 한쪽테이블엔 데이터가 존재하는데 다른한쪽 테이블은 데이터가 존재하지 않을때
EX) SELECT EMPLOYEE.ENAME || '의 매니저는' || MANAGER.ENAME || '입니다' FROM EMP EMPLOYEE, EMP MANAGER WHERE EMPLOYEE.MGR = MANAGER.EMPNO(+);
EX) SELECT E.ENAME, D.DEPTNO, D.DNAME FROM EMP E, DEPT D WHERE E.DEPTNO = D.DEPTNO ORDER BY D.DEPTNO;
ANSI JOIN - ANSI 표준 SQL 조인구문은 몇 가지 새로운 키워드와 절을 제공하여 SELECT 문의 FROM 절에서 조인을 완벽하게 지정
ANSI CROSS JOIN - ANSI구문을 사용하면 다음에 , 없이 원하는 조인타입을 명확하게 지정
SELECT * FROM EMP CROSS JOIN DEPT;
ANSI INNER JOIN - 동일컬럼을 기준으로 조인하기 위한 EQUI JOIN을 ANSI조인에서는 ANSI조인에서는 FROM 다음에 INNER JOIN 이란 단어를 사요ㅣ
EX) X = SELECT ENAME, DNAME FROM EMP,DEPT WHERE EMP.DEPTNO = DEPT.DEPTNO;
EX) SELECT ENAME,DNAME FROM EMP INNER JOIN DEPT ON EMP.DEPTNO -DEPT.DEPTNO;
EX) X = SELECT ENAME, DNAME FROM EMP,DEPT WHERE EMP.DEPTNO = DEPT.DEPTNO AND ENAME='SCOTT';
EX) SELECT ENAME, DNAME FROM EMP INNER JOIN DEPT ON EMP.DEPTNO = DEPT.DEPTNO WHERE ENAME = 'SCOTT';
USING - 이용한 조인 조건 지정하기
EX) SELECT EMP.ENAME, DEPT.DNAME FROM EMP INNER JOIN DEPT USING (DEPTNO);
NATURAL JOIN - JOIN문의 종결자.. 내부적으로 알아서 공통적인걸 찾아서 조인시켜줌..
SELECT ENAME, DNAME FROM EMP NATURAL JOIN DEPT;
ANSI OUTER JOIN - 기존 조인에서 레코드가 반드시 출력되어야 할때는 (+)를 표시해 주었다.. 하지만 ,ANSI 조인에서는 LEFT ,RIGHT ,FULL3가지를 지원한다.
EX) SELECT * FROM DEPT01 LEFT OUTER JOIN DEPT2 ON DEPT01.DEPTNO = DEPT02.DEPTNO;
EX) SELECT * FROM DEPT01 RIGHT OUTER JOIN DEPT2
ES) SELECT * FROM OUTER JOIN DEPT02 USING(DEPTNO);