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          
           

댓글

이 블로그의 인기 게시물

JAVA_Collection

JAVA_Collection2