数据库视图学习

视图:

   一个视图就是封装了一条复杂的查询语句

   语法:

   create  view  视图名   as  子查询 

1建立一个员工是部门20编号的所有员工信息的视图

create view empv20
as 
select empno,ename,job,hiredate
from emp
where deptno='20'


以后查询部门20的员工直接使用该视图就可以了。

    

2 如果希望在empv20的视图多添加一个sal字段,一种方法就是删除该视图,然后重新建立该视图

   drop  view  视图名称

   drop  view  empv20


重新创建视图 

create view empv20
as 
select empno,ename,job,hiredate,sal
from emp
where deptno='20'


如果视图增加一个字段都像如上,则太麻烦,在创建视图的时候可以使用视图替换语句

create  or  replace  视图名称 as  子查询

create or replace view empv20
as 
select empno,ename,job,hiredate
from emp
where deptno='20'


要添加deptno字段则再次使用

create or replace view empv20
as 
select empno,ename,job,hiredate,DEPTNO
from emp
where deptno='20'

视图增加了一个deptno字段


3 视图的更新

  1 在视图中是不应该包含真实数据的,如果将empv20中7369的部门编号改为30,则视图和原始表记录中这条数据都会修改成功,这样做明显不合适,因为创建视图是有条件的,一旦修改,则此条件就破坏了。视图所以要在创建的时候,不能更新的创建条件。在创建视图的时候sql提供了两个重要参数

 with  check option 不能更新视图的创建条件

 

create or replace view empv20
as 
select empno,ename,job,hiredate,DEPTNO
from emp
where deptno='20'
with check option 



更新empv20 会发现不能更新.

创建条件不能更新,那么其他字段是否可以更新呢,把7369雇员的姓名更新为石米师

update  empv20
set ename='石米师'
where empno='7369'

会发现更改成功,但是视图本身是用来查询的,不是用来更新的,不允许修改,此时可以用第二个参数

 with read only  创建的视图只读


create or replace view empv20
as 
select empno,ename,job,hiredate,DEPTNO
from emp
where deptno='20'
with read only


创建完视图以后,再次把7369雇员的姓名更新为石米师,会发现不允许更新。


你可能感兴趣的:(数据库)