1-7 视图
原创
©著作权归作者所有:来自51CTO博客作者qianshao的原创作品,请联系作者获取转载授权,否则将追究法律责任
1-7 视图
u 了解视图基本定义和特点
u 学习如何建立和删除视图的SQL语句,掌握参数WITH CHECK OPTION的使用特点
1-7-1 视图概述
视图从本质上是虚表,即在物理磁盘中并不存储,仅仅当用户查询需要时候在内存中临时生成,随着内存数据的清除而自动消亡,因此视图也被称为是用户临时表。视图使用的好处主要体现在以下几点:
1. 简化用户的操作
2. 使用户能以多种角度看待同一数据
3. 对重构数据库提供了一定程度的逻辑独立性
4. 能够对机密数据提供安全保护
1-7-2 建立视图
建立视图的一般格式如下:
CREATE VIEW <视图名>[(<列名>[,<列名>]…)]
AS <子查询>
[WITH CHECK OPTION];
删除视图的一般格式为:
DROP VIEW <视图名>;
有下列三种情况下必须明确指定视图的所有列名:
1. 某个目标列不是单纯的属性名,而是集函数或列表达式;
2. 多表连接时选出了几个同名列作为视图的字段;
3. 需要在视图中为某个列启用新的更合适的名字。
WITH CHECK OPTION指明当对视图进行数据修改时,要检查是否满足视图定义中的条件。是否带有WITH CHECK OPTION子句的视图最本质的区别是,在插入和更新视图的时候,也希望受到where语句的限制的时候,就必须带上WITH CHECK OPTION
同时我们需要注意的是,建立视图中的子查询语句可以是任意复杂的SELECT语句,但通常不允许含有ORDER BY子句和DISTINCT短语。
实验:建立视图实验
--例1. 建立视图,查询同类商品的库存信息
Use cpxs --调用产品销售数据库
create view cpxi
as
(select 产品号,产品名称,sum(库存量) as 总库存量
from 产品入库表 group by 产品号,产品名称)
select * from cpxi --查询刚刚建立的视图
--例2. 查询2004-9-11日商场产品销售明细单
select 产品销售表.产品流水号,产品名称,数量 as 销售数量,客户名称
from 产品销售表,客户表,产品入库表
where 产品销售表.客户号=客户表.客户号 and 产品销售表.产品流水号=产品入库表.产品流水号
and 产品销售表.销售日期=‘2004-9-11’
--例3. 创建视图,课程及格的学生姓名,班级,课程名,成绩表
Use school --调用学校数据库
create view jg_stu2
as
select sname,class,cname,degree from sc,student,course
where sc.cno=course.cno and student.sno=sc.sno
group by sc.cno,sname,class,cname,degree having degree>60 with check option
--例4. 建立成绩都及格的视图
create view jg_stu1
as
select * from score where degree>=60 with check option
--下面将一条不及格信息插入该视图里面
insert into jg_stu1 values('105','9-888',30)
--当添加了with check option参数后,由于将插入一条不及格信息,因此会出现错误。
消息550,级别16,状态1,第1 行
试图进行的插入或更新已失败,原因是目标视图或者目标视图所跨越的某一视图指定了WITH CHECK OPTION,而该操作的一个或多个结果行又不符合CHECK OPTION 约束。语句已终止。
请注意,当通过视图插入数据的时候,以下的几条是不允许插入数据的:
1. select子句中不能使用unique或distinct关键字
2. 不能包括group by子句
3. 不能包括经算术表达式计算出来的列
4. 对于行列子集视图可以更新(视图是从单个基本表使用选择、投影操作导出的,并且包含了基本表的主码)
5. select子句中的目标列不能包含聚集函数
下一篇:1-8 关系数据库与SQL实训

提问和评论都可以,用心的回复会被更多人看到
评论
发布评论
相关文章
-
1-7、数据链路层1
网桥在数据链路层的工作过程及时如何分割广播域的
数据 链路层 网桥 -
1-7数据的封装和解封装
百度的数据(应用层) TCP/UDP(传输层) IP(网络层) E2(网络接口处) 封装由上到下 解封装
计算机网络 HCDA 封装 数据 百度 -
1-7 微服务缺点剖析
结束
spring cloud 干货