[실무에서 바로 쓰는 SQL 기본과 SQL 튜닝][ORACLE] 11강 JOIN

MinHee·2023년 5월 20일
0
post-thumbnail

1999 ANSI JOIN

ON절

조인 조건을 명시

예제 62

  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;  -- 검색 조건

조인문법

  1. 오라클 조인
  • EQUI JOIN
  • NON-EQUL JOIN
  • OUTER JOIN
  • SELF JOIN
  1. 1999 ANSI JOIN (미국 국립 표준 협회)
  • ON 절을 사용한 조인

USING절

USING(조인 조건에 해당하는 컬럼)

예제 63

  SELECT E.ENAME, E.SAL, D.JOB, D.LOC
  FROM EMP E JOIN DEPT D
  USING (DEPTNO) -- 조인 조건 /테이블 별칭은 적지 않음
  WHERE E.JOB = 'SALESMAN'; -- 검색 조건

NATURAL JOIN

on, using, where 절과 같은 조인조건 명시 없이, 알아서 조인 실행 - 훨씬 간결한 SQL문

예제 64

  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'와 같이 별칭을 같이 조건에 명시하면 '조인에 사용한 열은 식별자를 가질 수 없음'이라는 에러 발생. <-- 조인에 사용된 칼럼에 대해서는 별칭을 명시하지 않아야 함.

LEFT/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 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)

FULL OUTER JOIN

ANSI JOIN 문법에만 존재함 (ORACLE JOIN에는 없음)

예제 66

  SELECT E.ENAME, D.LOC
  FROM EMP E FULL OUTER JOIN DEPT D
  ON (E.DEPTNO = D.DEPTNO); -- 조인 조건
profile
성장하는 개발자

0개의 댓글