[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.
'프로그래밍 > 오라클' 카테고리의 다른 글
[ORACLE] 숫자 함수 _ 오라클 sql (0) | 2017.03.27 |
---|---|
[ORACLE] UNION 과 UNION ALL 차이 _ 오라클 (5) | 2017.03.24 |
[ORACLE] 오라클 날짜 함수 (0) | 2017.03.21 |
[TOAD] 토트 탭설정 _ tab space 2 로 변경 (0) | 2017.03.20 |
[ORACLE]오라클 함수 _ ROLLUP, CUBE, GROUPING SETS (0) | 2017.03.20 |