조인 조건을 명시
SELECT E.ENAME, E.SAL, D.JOB, D.LOC
FROM EMP E JOIN DEPT D
ON (E.DEPTNO = D.DEPTNO) -- 조인 조건
WHERE e.job='SALESMAN'; -- 검색 조건
SELECT E.ENAME, E.SAL, D.JOB, D.LOC
FROM EMP E JOIN DEPT D
ON (E.DEPTNO = D.DEPTNO) -- 조인 조건
WHERE e.sal between 1000 and 3000; -- 검색 조건
조인문법
USING(조인 조건에 해당하는 컬럼)
SELECT E.ENAME, E.SAL, D.JOB, D.LOC
FROM EMP E JOIN DEPT D
USING (DEPTNO) -- 조인 조건 /테이블 별칭은 적지 않음
WHERE E.JOB = 'SALESMAN'; -- 검색 조건
on, using, where 절과 같은 조인조건 명시 없이, 알아서 조인 실행 - 훨씬 간결한 SQL문
SELECT E.ENAME, E.SAL, D.JOB, D.LOC
FROM EMP E NATURAL JOIN DEPT D
WHERE E.JOB = 'SALESMAN'; -- 검색 조건
SELECT E.ENAME, E.SAL, D.JOB, D.LOC
FROM EMP E NATURAL JOIN DEPT D
WHERE E.JOB = 'SALESMAN' AND DEPTNO = 30; -- 검색 조건
위에서 'E.DEPTNO = 30'와 같이 별칭을 같이 조건에 명시하면 '조인에 사용한 열은 식별자를 가질 수 없음'이라는 에러 발생. <-- 조인에 사용된 칼럼에 대해서는 별칭을 명시하지 않아야 함.
SELECT E.ENAME, D.LOC
FROM EMP E, DEPT D
WHERE E.DEPTNO (+) = D.DEPTNO;
SELECT E.ENAME, D.LOC
FROM EMP E RIGHT OUTER JOIN DEPT D
ON (E.DEPTNO = D.DEPTNO); -- 조인 조건
위 두개의 결과는 동일하다 (RIGHT OUTER JOIN)
SELECT E.ENAME, D.LOC
FROM EMP E, DEPT D
WHERE E.DEPTNO = D.DEPTNO (+);
SELECT E.ENAME, D.LOC
FROM EMP E LEFT OUTER JOIN DEPT D
ON (E.DEPTNO = D.DEPTNO); -- 조인 조건
위 두개의 결과는 동일하다 (LEFT OUTER JOIN)
ANSI JOIN 문법에만 존재함 (ORACLE JOIN에는 없음)
SELECT E.ENAME, D.LOC
FROM EMP E FULL OUTER JOIN DEPT D
ON (E.DEPTNO = D.DEPTNO); -- 조인 조건