begin tran
/** BEGIN TRAN... ROLLBACK TRAN으로 EMP 테이블의 무결성을
유지할 것***/

--1. 30번 부서 사원들의 직위, 이름, 월급을 담는 VIEW를 만들어라.
create view view01
as
select job,ename,sal
from emp
where deptno = 30

select * from view01


--2. 30번 부서 사원들의  직위, 이름, 월급을 담는 VIEW를 만드는데,
-- 각각의 컬럼명을 직위, 사원이름, 월급으로 ALIAS를 주고 월급이
-- 300보다 많은 사원들만 추출하도록 하라.

alter view view02
as
select job  as [직위]
,  ename as [이름]
,  sal  as [월급]
from emp
where sal > 300

--3. 부서별 최대월급, 최소월급, 평균월급을 담는 VIEW를 만들어라.

create view view03 as
select max(sal) as[max]
,  min(sal) as[min]
,  avg(sal) as[avg]
from emp
group by deptno

select * from view02

--4. 부서별 평균월급을 담는 VIEW를 만들되, 평균월급이 2000 이상인
-- 부서만 출력하도록 하라.

alter view view02 as
select avg(sal) as [avgsal]
from emp
where sal > 2000
group by deptno

exec sp_help view03

--5. 직위별 총월급을 담는 VIEW를 만들되, 직위가 MANAGER인
-- 사원들은 제외하고 총월급이 3000이상인 직위만 출력하도록 하라.

alter view view02 as
select sum(sal) as[sal]
from emp
where job != 'manager'
group by deptno
 having sum(sal) > 3000


--6. 30번 부서 사원의 부서번호, 사원번호, 사원이름, 월급을 담는
-- VIEW를 작성하되 다른 부서에서 근무하는 사원들의 레코드는
-- 입력 및 수정하지 못하도록  WITH CHECK OPTION을 사용하라.

create view view06
as
select deptno, empno, ename, sal
from emp
where deptno = 30
with check option;

 

--7. 20번 부서에서 근무하는 사원의 이름, 월급, 커미션, 부서번호를
-- 담는 VIEW를 작성하되, 그 누구도 VIEW의 정의를 보지 못하도록 하라.

create view view07 with encryption
as
select ename, sal, comm, deptno
from emp
where deptno = 20

exec sp_helptext view07

--8. 7번 문제에서 만든 VIEW를 20번 부서에서 근무하는 사원의 이름과
-- 월급만 담는 VIEW가 되도록 수정하고 다시 암호화하여라.
alter view view07 with encryption
as
select ename, sal
from emp
where deptno = 20

-- 9. 위의 VIEW를 삭제하라.
drop view view01,view02,view03,view04,view05,view06,view07

+ Recent posts