본문 바로가기

데이터베이스/SQL & PL/SQL

[SQL] NATURAL JOIN, 자연스럽나요?


타이틀이 좀. 웃깁니다.
자~ 넘어갑시다.

이번에는 NATURAL JOIN에 대해서 알아봅시다.
이것도 별것 없습니다. 단지 조인하는 두테이블에 대해서
자동으로 조인조건을 같은 데이터형식과 컬럼명을 사용하고 있는~ 으로 한정시킵니다.
알아서 묶어주는 거죠.
그래서 조인조건을 명시해줄 필요가 없는데요.

NATURAL JOIN 도 어느정도 의미만 알것 같아서.
바로 예시만 보고 끝을 내도록 할게요.

employees 테이블과 departments 테이블을 내부조인을 해서 데이터를 조회한겁니다.
결과는 NATURAL JOIN과 동일한 조회결과를 내기위해서 다음과 같이 쓰였습니다.

SELECT emp.department_id, dep.department_name, emp.first_name
FROM hr.employees emp INNER JOIN hr.departments dep
ON emp.department_id = dep.department_id and emp.manager_id = dep.manager_id;

이것을 NATURAL JOIN 에서는 다음과 같이 쓸 수 있습니다.
SELECT department_id, dep.department_name, emp.first_name
FROM hr.employees emp INNER JOIN hr.departments dep

컬럼중에 department_id가 공통된 데이터 타입에 공통된 컬럼명이죠?
그리고 여기서 아셔야 할건. 그 조인조건으로 사용된 department_id에 대해서는 앞에 테이블 명을 적으면 안된다는 겁니다.
확인하시구요.

참고로, manager_id도 조인조건에 부합이 되는데, 확인을 안했습니다.

위의 쿼리의 의미는 각 부서마다 부서장을 상관으로 두고 있는 사원의 이름을 나타낸겁니다.
즉 부서장의 직속부하직원들을 조회한 것이겠네요.

이것으로 NATURAL JOIN에 대해서 글을 마무리 할게요 ^^