먼저 예제로 사용할 테이블을 확인해보자.
SQL> SELECT * FROM DEPT01; DEPTNO DNAME ---------- -------------- 10 ACCOUNTING 20 RESEARCH SQL> SELECT * FROM DEPT02; DEPTNO DNAME ---------- -------------- 10 ACCOUNTING 30 SALES
CROSS JOIN
SQL> SELECT * FROM DEPT01, DEPT02; DEPTNO DNAME DEPTNO DNAME ---------- -------------- ---------- -------------- 10 ACCOUNTING 10 ACCOUNTING 10 ACCOUNTING 30 SALES 20 RESEARCH 10 ACCOUNTING 20 RESEARCH 30 SALES SQL> SELECT * FROM DEPT01 CROSS JOIN DEPT02; DEPTNO DNAME DEPTNO DNAME ---------- -------------- ---------- -------------- 10 ACCOUNTING 10 ACCOUNTING 10 ACCOUNTING 30 SALES 20 RESEARCH 10 ACCOUNTING 20 RESEARCH 30 SALES
EQUI JOIN
SQL> SELECT * FROM DEPT01, DEPT02 WHERE DEPT01.DEPTNO = DEPT02.DEPTNO; DEPTNO DNAME DEPTNO DNAME ---------- -------------- ---------- -------------- 10 ACCOUNTING 10 ACCOUNTING SQL> SELECT * FROM DEPT01 INNER JOIN DEPT02 ON DEPT01.DEPTNO = DEPT02.DEPTNO; DEPTNO DNAME DEPTNO DNAME ---------- -------------- ---------- -------------- 10 ACCOUNTING 10 ACCOUNTING
NATURAL JOIN
SQL> SELECT * FROM DEPT01 NATURAL JOIN DEPT02; DEPTNO DNAME ---------- -------------- 10 ACCOUNTING SQL> SELECT * FROM DEPT01 INNER JOIN DEPT02 USING ( DEPTNO, DNAME ); DEPTNO DNAME ---------- -------------- 10 ACCOUNTING
OUTER JOIN
SQL> SELECT * FROM DEPT01, DEPT02 WHERE DEPT01.DEPTNO=DEPT02.DEPTNO; DEPTNO DNAME DEPTNO DNAME ---------- -------------- ---------- -------------- 10 ACCOUNTING 10 ACCOUNTING SQL> SELECT * FROM DEPT01, DEPT02 WHERE DEPT01.DEPTNO(+)=DEPT02.DEPTNO; DEPTNO DNAME DEPTNO DNAME ---------- -------------- ---------- -------------- 10 ACCOUNTING 10 ACCOUNTING 30 SALES SQL> SELECT * FROM DEPT01, DEPT02 WHERE DEPT01.DEPTNO=DEPT02.DEPTNO(+); DEPTNO DNAME DEPTNO DNAME ---------- -------------- ---------- -------------- 10 ACCOUNTING 10 ACCOUNTING 20 RESEARCH
ANSI OUTER JOIN
SQL> SELECT * FROM DEPT01 LEFT OUTER JOIN DEPT02 ON DEPT01.DEPTNO=DEPT02.DEPTNO; DEPTNO DNAME DEPTNO DNAME ---------- -------------- ---------- -------------- 10 ACCOUNTING 10 ACCOUNTING 20 RESEARCH SQL> SELECT * FROM DEPT01 RIGHT OUTER JOIN DEPT02 ON DEPT01.DEPTNO=DEPT02.DEPTNO; DEPTNO DNAME DEPTNO DNAME ---------- -------------- ---------- -------------- 10 ACCOUNTING 10 ACCOUNTING 30 SALES SQL> SELECT * FROM DEPT01 FULL OUTER JOIN DEPT02 ON DEPT01.DEPTNO=DEPT02.DEPTNO; DEPTNO DNAME DEPTNO DNAME ---------- -------------- ---------- -------------- 10 ACCOUNTING 10 ACCOUNTING 30 SALES 20 RESEARCH SQL> SELECT * FROM DEPT01 FULL OUTER JOIN DEPT02 USING(DEPTNO); DEPTNO DNAME DNAME ---------- -------------- -------------- 10 ACCOUNTING ACCOUNTING 30 SALES 20 RESEARCH