oracle 学习笔记

来源:互联网 发布:wear软件安装不了 编辑:程序博客网 时间:2024/06/10 13:52

什么是视图?

  ####怎么理解视图是一张虚表?
  
  1、首先视图是一张表,那么针对表的一系列操作都可以用来操作视图。(注意:不建议通过视图对表做修改操作);
  2、其次视图是一张虚表,视图中是没有数据的,视图中数据来源于创建视图时的表。
  
  ####视图的作用?
  
  视图一般用来简化复杂查询,不建议通过视图对表做修改操作。

创建视图

管理员授权

# 普通用户没有创建视图的权限,需要管理员授权grand create view to scott;
# 创建视图SQL> create or replace view empinfoview  2  as  3  select e.empno,e.ename,e.sal,e.sal*12 annsal,d.dname  4  from emp e, dept d  5  where e.deptno=d.deptno;

创建视图的语法:

create [or replace] [force|noforce] view viewName    [(alias[,alias]...)] as subquery[with check option [constraint constraint]][with read only [constraint constraint]];#force: 子查询不一定存在#notforce:  子查询存在(默认)#with read only:只能做查询操作

修改视图

视图只能创建、删除、替换。修改视图只能用replace替换

replace view viewName...    ...    ...

删除视图

drop view viewName

视图的一些规定

使用DML的规定

简单视图中可以执行DML操作

视图定义中包含以下元素之一,不能使用delete

  1. 组函数
  2. group by 字句
  3. distinct 关键字
  4. rowunm 伪列

视图定义中包含以下元素之一,不能使用update

  1. 组函数
  2. group by 字句
  3. distinct 关键字
  4. rowunm 伪列
  5. 列的定义为表达式

视图定义中包含以下元素之一,不能使用insert

  1. 组函数
  2. group by 字句
  3. distinct 关键字
  4. rowunm 伪列
  5. 列的定义为表达式
  6. 表中非空的列在视图定义中为包括

屏蔽DML操作

  可以使用 with read only 选项来屏蔽对视图的DML操作。