视图

一、什么是视图:
视图是从一个表或多个表中导出的虚表,它与常规表不同之处在于它并不存储数据—它只是在一个存储的查询中定义.视图同真实表一样,也包含一系列带有名称的列和数据

视图建立在已有表的基础上, 视图赖以建立的这些表称为基表
 	向视图提供数据内容的语句为 SELECT 语句, 可以将视图理解为存储起来的 SELECT 语句. 
 	视图向用户提供基表数据的另一种表现形式
二、视图的优点:
1、	限制数据访问
2、	简化复杂查询
3、	同样的数据,可以有不同的显示方式
4、	提供数据的相互独立
注:视图不能提高性能
三、	创建视图:
1、使用下面的语法格式创建视图
CREATE [OR REPLACE] [FORCE|NOFORCE] VIEW view  [(alias[, alias]...)] AS subquery
[WITH CHECK OPTION [CONSTRAINT constraint]]
[WITH READ ONLY [CONSTRAINT constraint]];
•	FORCE:           子查询不一定存在
•	NOFORCE:      子查询存在(默认)
•	WITH READ ONLY:只能做查询操作
2、	子查询可以是复杂的 SELECT 语句
3、	创建视图时在子查询中给列定义别名
4、在选择视图中的列时应使用别名
create view empSal as select * from emp where sal>=3000
别名也可以写在前面
SQL> create or replace view empSal(ename,esal) as select ename,sal from emp where sal>3000;
四、	修改视图:
1、	使用CREATE OR REPLACE VIEW 子句修改视图
2、	CREATE VIEW 子句中各列的别名应和子查询中各列相对应
create or replace view groupView as (
 select dname,e.* from (select deptno,avg(nvl(sal,0)) from emp group by deptno) e inner join dept d on d.deptno=e.deptno)
注:如果已经有了这个视图会把它替换成新的
五、视图中使用DML的规定
可以在简单视图中执行 DML 操作
当视图定义中包含以下元素之一时不能使用delete:
组函数
GROUP BY 子句
DISTINCT 关键字
ROWNUM 伪列
当视图定义中包含以下元素之一时不能使用update :
组函数
GROUP BY子句
DISTINCT 关键字
ROWNUM 伪列
列的定义为表达式
当视图定义中包含以下元素之一时不能使用insert :
组函数
GROUP BY 子句
DISTINCT 关键字
ROWNUM 伪列
列的定义为表达式
表中非空的列在视图定义中未包括
六、屏蔽 DML 操作
1、	可以使用 WITH READ ONLY 选项屏蔽对视图的DML 操作
2、	任何 DML 操作都会返回一个Oracle server 错误
create or replace view empSal(eename,eesal) as select ename,sal from emp where sal>=3000 with read only
七、删除视图
删除视图只是删除视图的定义,并不会删除基表的数据
SQL> drop  view empSal;

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值