视图:
一个视图就是封装了一条复杂的查询语句
语法:
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雇员的姓名更新为石米师,会发现不允许更新。