Oracle--视图

视图

  视图:(view): 虚表, 只是把一些查询SQL保存起来,  取一个名字, 不是保存这个查询的数据

每次使用视图的时候,只是重新执行SQL,方便使用
视图的基表:视图来源的表

 

创建视图语法:

 create [ or replace ] [ force ] view [schema.]view_name
 as 
 select ...
 [ with check option ]                      
 [ with read only ];
其中,or replace: 如果存在同名的视图, 则使用新视图"替代"已有的视图
force: "强制"创建视图,不考虑基表是否存在,也不考虑是否具有使用基表的权限
with check option: 指定对视图执行的dml操作必须满足“视图子查询”的条件即,对通过视图进行的增删改操作进行"检查",
要求增删改操作的数据, 必须是select查询所能查询到的数据,否则不允许操作并返回错误提示.
默认情况下, 在增删改之前"并不会检查"这些行是否能被select查询检索到
with read only:创建的视图只能用于查询数据, 而不能用于更改数据.

注意: 普通用户没有创建视图权限, scott
  需要系统管理员用户 授予权限: grant create view to scott;

创建视图:

create or replace view empCountView
as  select  deptno, count(1) num from emp group by deptno  
with read only;

执行:

--没有使用视图的sql
select d.* , t.num from dept d 
join(select  deptno, count(1) num from emp group by deptno) t
on d.deptno = t.deptno;

--使用视图:
select d.* , e.num from dept d join  empCountView  e
on d.deptno = e.deptno;

 

posted @ 2020-04-21 18:25  64Byte  阅读(105)  评论(0编辑  收藏  举报