1011 데이터 베이스 정리
* 고급함수 中 Join
조인은 2개 이상 테이블을 조회할 때 사용한다.(같은 테이블끼리도 가능)
1. 이너 조인
: 두 테이블 간 공통된 데이터(교집합)가 있다면 이너 조인 가능.
Select * From emp As e -- e라는 이름으로 emp데이터 가져오기
Inner Join dept As d -- d라는 이름으로 같이 가져온다
On e.deptno = d.deptno -- e와 d에 있는 deptno가 같을 때
-- '*' 은 All을 의미
* 예제
- 부서번호가 10번인 사원들의 이름, 입사날짜, 부서이름 조회
Select e.ename, e.hiredate, d.dname
From emp as e Inner Join dept As d -- from부터 on을 from절이라고 한다.
On e.deptno=d.deptno
Where e.deptno =10
- job이 manager인 사원의 번호, 근무지 조회 하시오
Select e.empno, d.loc From emp As e
Inner Join dept As d
On e.deptno = d.deptno
Where e.job = "manager"
- 급여 2000이상인 사원의 번호, 이름 , 부서번호, 부서이름 조회하시오
Select e.empno, e.ename, e.deptno, d.dname
From emp As e
Inner Join dept As d
On e.deptno = d.deptno
Where e.sal>=2000
- 부서별 사원 수, 부서이름, 근무지 조회하시오
Select count(*), d.dname, d.loc
From emp As e
Inner Join dept As d
On e.deptno=d.deptno
Group By e.deptno
2. 셀프조인
: 같은 테이블에서 조인하는 것
예)
Select sawon.ename As "부사수 이름", -- ""라는 이름으로 컬럼을 가져와서
sawon.empno As "부사수 번호",
sawon.mgr As "사수번호(사수의 사원번호)",
boss.ename As "사수이름",
boss.empno As "사수이름"
From emp As sawon -- emp 테이블에서 사원이라는 이름으로
Inner Join emp As boss -- 같은 테이블에서 보스라는 이름으로
On sawon.mgr = boss.empno -- 사원의 사수번호를 사원번호에서 찾아서 join
* 예제
- 부서번호가 20번인 사원의 사원번호, 사원이름, 사수이름 조회
Select sawon.empno As "사원번호",sawon.ename As "사원이름", boss.ename As "사수이름"
From emp As sawon
Inner Join emp As boss
On sawon.mgr = boss.EMPNO
Where sawon.deptno=20
- 보너스가 null이 아닌 사원이름, 사수이름 조회
Select sawon.ename As "사원이름", boss.ename As "사수이름"
From emp As sawon
Inner Join emp As boss
On sawon.mgr = boss.empno
Where sawon.comm Is Not null
3. 조인 + 셀프조인 (emp 하고 dept 조인, emp 하고 emp조인)
- 예) 사원의 이름, 부서번호, 부서이름, 사원의 사수 이름을 조회하세요
Select
sawon.ename As "사원이름",
sawon.deptno As "사원 부서번호",
d.dname As "사원 부서이름",
boss.ename As "사수이름"
From emp As sawon -- emp테이블과 dept테이블 inner join
Inner join dept As d
On sawon.deptno = d.DEPTNO
Inner join emp As boss -- emp테이블끼리 셀프조인
On sawon.mgr = boss.empno
댓글
댓글 쓰기