뷰(View)
(1) 뷰 - 뷰는 테이블에 대한 가상테이블로서 테이블이 존재하지 않으면 뷰도 존재할 수 없다.
뷰는 테이블처럼 데이터를 직접 소유하지 않고 검색시에만 정의된 뷰를 틀에 맞게 보여준다.
(2) 사용 이유
- 기본 테이블에 대한 보안기능을 설정해야 하는 경우
- 복잡하며 자주 사용되는 질의 sql문을 보다 쉽고 간단하게 사용해야 하는 경우
(3) 형식
CREATE OR REPLACE VIEW 뷰이름
AS
[SUB-QUERY]
[WITH CHECK OPTION]
[WITH READ ONLY]
/
-- 사원번호, 이름, 급여, 부서명을 조회하는 뷰를 생성해라.
create or replace view MyEmp
as
select empno, ename, sal, deptno
from emp;
select * from MyEmp;
<< 참고 - 뷰 생성 권한주기 >>
sqlplus "/as sysdba"
grant create view to scott;
-- 뷰이름 알아보기
select view_name from user_views;
-- 뷰 삭제하기
drop view MyEmp;
-- 뷰를 통해 데이터 삽입하기(가능)
insert into MyEmp values(1000,'han',5000,1);
-- WITH READ ONLY 옵션 사용
create or replace view MyEmp
as
select empno, ename, sal, deptno
from emp
WITH READ ONLY -- 뷰를 통한 수정 삭제 추가등이 안됨
/
-- WITH CHECK OPTION 사용
create or replace view MyEmp
as
select empno, ename, sal, deptno
from emp
where deptno = 10
WITH CHECK OPTION;
/
insert into MyEmp values(1003,'KIM',2000,30);
--> 뷰의 조건에 맞지 않으므로 WITH CHECK OPTION으로 인해 오류 발생
(4) 뷰의 종류
1) 단일뷰 - 하나의 테이블로 생성되는 뷰
2) 복합류 - 두개 이상의 테이블로 생성되는 뷰 (insert, delete, update는 실행 불가)
-- 사원번호, 사원이름, 부서번호, 부서명을 조회하는 뷰를 만들기.
create or replace view emp_dept
as
select e.empno 사원번호, e.ename 이름, e.deptno 부서번호,
d.dname 부서명
from emp e, dept d
where e.deptno = d.deptno;
(1) 뷰 - 뷰는 테이블에 대한 가상테이블로서 테이블이 존재하지 않으면 뷰도 존재할 수 없다.
뷰는 테이블처럼 데이터를 직접 소유하지 않고 검색시에만 정의된 뷰를 틀에 맞게 보여준다.
(2) 사용 이유
- 기본 테이블에 대한 보안기능을 설정해야 하는 경우
- 복잡하며 자주 사용되는 질의 sql문을 보다 쉽고 간단하게 사용해야 하는 경우
(3) 형식
CREATE OR REPLACE VIEW 뷰이름
AS
[SUB-QUERY]
[WITH CHECK OPTION]
[WITH READ ONLY]
/
-- 사원번호, 이름, 급여, 부서명을 조회하는 뷰를 생성해라.
create or replace view MyEmp
as
select empno, ename, sal, deptno
from emp;
select * from MyEmp;
<< 참고 - 뷰 생성 권한주기 >>
sqlplus "/as sysdba"
grant create view to scott;
-- 뷰이름 알아보기
select view_name from user_views;
-- 뷰 삭제하기
drop view MyEmp;
-- 뷰를 통해 데이터 삽입하기(가능)
insert into MyEmp values(1000,'han',5000,1);
-- WITH READ ONLY 옵션 사용
create or replace view MyEmp
as
select empno, ename, sal, deptno
from emp
WITH READ ONLY -- 뷰를 통한 수정 삭제 추가등이 안됨
/
-- WITH CHECK OPTION 사용
create or replace view MyEmp
as
select empno, ename, sal, deptno
from emp
where deptno = 10
WITH CHECK OPTION;
/
insert into MyEmp values(1003,'KIM',2000,30);
--> 뷰의 조건에 맞지 않으므로 WITH CHECK OPTION으로 인해 오류 발생
(4) 뷰의 종류
1) 단일뷰 - 하나의 테이블로 생성되는 뷰
2) 복합류 - 두개 이상의 테이블로 생성되는 뷰 (insert, delete, update는 실행 불가)
-- 사원번호, 사원이름, 부서번호, 부서명을 조회하는 뷰를 만들기.
create or replace view emp_dept
as
select e.empno 사원번호, e.ename 이름, e.deptno 부서번호,
d.dname 부서명
from emp e, dept d
where e.deptno = d.deptno;




덧글