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;