数据库语句之视图

  • 视图

视图可以看成是一个保存在数据库中的SELECT语句,查询视图也就是执行相应的SELECT语句,SELECT语句执行的结果是一个表,所以视图也可以看成是一个表,但建立视图后,数据库仅存放视图的定义,即对应的SELECT语句并不存放查询结果,所以可以把视图看成一个虚表,即不占用物理空间的表。当视图对应的SELECT语句中的数据源发生变化,SELECT的结果也将发生变化,从视图中查询出的数据也发生变化。

视图具有表的特征,所以在SELECT语句中,视图可以和表一样作为查询的数据源,也可以向表一样进行增删改操作

1.建立试图和查询视图

CREATE VIEW <视图名> [(<列名> [,<列名2>]···)]

[WITH CHECK OPTION]

AS <SELECT子查询>

[WITH ENCRYPTION]

执行建立视图的语句后,DBMS只是把视图的定义存入数据库,并不执行其中的SELECT语句。只有在对视图查询时才按视图的定义执行对应的SELECT语句并返回结果

例:

表结构

表结构

表结构

3.选课表(Student_Elevtive)

表结构

(1)建立所有学生选修课成绩的视图 AllStudentElectiveGrade

CREATE VIEW AllStudentElectiveGrade

AS

SELECT a.StdId,a.StdName,b.EleName,c.Grade

FROM Student a.Elective b,Student_Elective c

WHERE a.StdId=c.StdId AND b.EleId=c.EleId

(2)建立所有学生选修课的平均成绩视图

create view allstudentavg(StdId,StdName,AvgGrade)
as
select a.StdId,a.StdName,AVG(b.Grade) 
from Student a,Student_Elevtive b
where a.StdId=b.StdId
group by a.StdId,a.StdName

查询视图

select * from allstudentavg

2.删除视图

语句

DROP VIEW <视图名>

3.视图的应用

(1)当一个比较复杂的查询在系统开发中需要在多处被使用,尤其需要被不同的功能模块使用时,可以把该查询定义为一个视图,可以使开发小组能共享并重用这个视图对应的SELECT语句

(2)当查询仅从所有实际存在的表中获取数据有难度时,可以使用一个视图表达一个中间结果,然后把中间结果的视图作为查询的数据源。

(3)对一个表的满足特定条件的进行数据安全控制,即要求对某些能直接访问数据库的用户,仅允许他们访问(包括增删改查)某一个表中满足特定条件的行,对这样的需求,必须使用视图机制来实现

  • 视图的缺陷:视图不可以带参数

 

 

 

 

 

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 2
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值