ORACLE数据库入门再在屋里坐会 (16)

特点: 连接视图是指基于多个表所创建的视图,即定义视图的查询是一个连接查询。使用连接视图的主要目的是为了简化连接查询 [只能更新键保留表]

  create or replace view view_emp as select e.*,d.dname from emp

  e,dept d where e.deptno=d.deptno;

使用 scott 身份登录,创建视图 emp 表的简单视图

  create view view_emp as select * from emp;

  select * from view_emp;

  update view_emp set sal=3200 where sal=3000

  delete view_emp where rownum=1

5. 创建复杂视图

特点: 复杂视图是指包含函数、表达式或分组数据的视图,主要目的是为了简化

查询

  create or replace view view_emp as select count(*) 人数,avg(sal+nvl(comm,0)) 平均工资,deptno 部门编号 from emp group by deptno;

6. 创建强制视图

特点:正常情况下,如果基表不存在,创建视图就会失败。但是可以使用 FORCE选项强制创建视图(前提是创建视图的语句没有语法错误),但此时该视图处于失效状态,调用会出错,直到这个基表已经存在

  create or replace force view view_test

  as select * from myemp;

  select * from myemp;       --错误

  create table myemp          --创建myemp表

  as

  select * from emp ;

  select * from myemp;       --正确

视图上的 DML 语句有如下限制:

   1)只能修改一个底层的基表

   2) 如果修改违反了基表的约束条件,则无法更新视图

   3)如果视图包含连接操作符、DISTINCT 关键字、集合操作符、聚合函数或

   4)GROUP BY 子句,则将无法更新视图

   5)如果视图包含伪列或表达式,则将无法更新视图

b) 内嵌视图

概述:

  内嵌视图就是嵌入到父查询中的查询,能够在任何可以使用表名称的地方使用内嵌视图又称为嵌套查询

  嵌视图可以出现在 select 语句的 from 子句中,以及 insert into、update甚至是 delete from 语句中。内嵌视图是临时的,它只存在于父查询的运行期间

例:

  select * from (select e.*,rownum rn from emp e) tab

  where rn>=5 and rn<=10;

其中: select e.*,rownum rn from emp e 就是一个内嵌视图,临时有效

c) 物化视图

内容版权声明:除非注明,否则皆为本站原创文章。

转载注明出处:https://www.heiqu.com/zyzwgw.html