본문 바로가기

프로그래밍/오라클

[ORACLE] Natural Join _ 네추럴 조인 _ 오라클

[ORACLE] Natural Join _ 네추럴 조인 _ 오라클




NATURAL JOIN
두 테이블의 동일한 이름(컬럼명)을 갖는 컬럼은 모두 조인이 된다.  


EMP1 과 EMP2 테이블


EMP1 테이블



EMP2 테이블


위와 같이 하나의 테이블을 복사해서 동일한 테이블을 만들었다.
먼저, INNER JOIN 한 결과를 살펴보자.



1. INNER JOIN

SELECT A.EMPNO, A.SAL
  FROM EMP A 
 INNER JOIN EMP2 B
    ON A.EMPNO = B.EMPNO 

INNER JOIN


INNER 조인은 ON절에 하나의 조건만을 걸었다. 그래서 EMPNO만 같다면 그에 해당하는 결과물 모두를 가져오는 것을 볼 수 있다. 반면에, NATURAL JOIN은




2. NATURAL JOIN

 SELECT EMPNO, SAL
   FROM EMP 
NATURAL JOIN EMP2

NATURAL JOIN


결과에서 확인 할 수 있듯이 두 테이블(EMP1 테이블, EMP2 테이블)에서 이름이 같은 모든 컬럼을 조건으로 조인이 걸려서 결과가 확연히 줄어든 것을 볼 수 있다. 그럼, INNER JOIN에 몇개의 조건을 더 걸어야 NATURAL JOIN과 같은 결과를 출력할 수 있는지 살펴보자.




3. INNER JOIN (=NATURAL JOIN) 

SELECT B.EMPNO, B.SAL
  FROM EMP A 
 INNER JOIN EMP2 B
    ON A.EMPNO = B.EMPNO
   AND B.SAL = A.SAL
   AND B.DEPTNO= A.DEPTNO
   AND B.COMM= A.COMM
   AND B.ENAME= A.ENAME

INNER JOIN (=NATURAL JOIN) 


위 결과를 보면, 무려 5개의 조건이 걸린 것을 확인 할 수 있다. NATURAL JOIN은 컬럼명만 같으면 전부 조건이 걸리기에 그보다는 적게 걸린 것이지만, 최소 5개의 조건이 걸려야 같은 결과가 나오는 것을 확인 할 수 있겠다.
이로써 NATURAL JOIN을 확실하게 이해 할 수 있게 되었다!




4. 결론 

NATURAL JOIN은 사용할 일이 없겠구나. 내가 만약 NATURAL JOIN을 사용하고 있다면 잘못 된 것이다. 정신차리자! 쿼리 성능테스트를 할 짬이 되면 그때 보겠구나. 안녕. NATURAL JOIN.