视图
明天就要考试了,来不及深入学习了,简单总结一下视图的基本用法,留到以后在深入学习
视图为虚表,是从一个或几个基本表导出的表,只存放视图的定义,不会出现数据冗余,基表中的数据发生变化,从视图中查询出的数据也随之改变
视图的定义
create view 视图名 列名
as <子查询>
with check option;
子查询中不允许含有order by子句和distinct短语
透过视图进行增删改操作时,不得破坏视图定义中的谓词条件
--建立信息系学习的视图
create view IS_Student
as
select Sno,Sname,Sage
from student
where Sdept ='IS'
with check option
--建立信息系选修了1号课程的学生的视图
create view IS_S1(Sno,Sname,Grage)
as
select Student.Sno,Sname,Grade
from Student,SC
where Student.Sno=SC.Sno and
Sdept='IS' and
SC.Cno='1';
视图的删除
drop view 视图名 cascade;
该语句从数据字典中删除指定的视图定义
由该视图导出的其他视图定义仍在数据字典中,但已不能使用,必须显式删除
删除基表时,由该基表导出的所有视图定义都必须显式删除
如果cascade选项,则删除该视图时会把由它导出的视图一块删除
视图查询与更新
视图查询方法和更新方法与表查询,表更新基本相同
但具体实现方式不同
视图实现方式有两种
实体化视图
先检查所查询的视图是否存在 ,执行视图定义,将视图临时实体化,生成临时表,查询视图转换为查询临时表,查询完毕删除被实体化的视图
视图消解法
进行有效性检查,检查查询的表、视图等是否存在。如果存在,则从数据字典中取出视图的定义,把视图定义中的子查询与用户的查询结合起来,转换成等价的对基本表的查询,再执行修正后的查询
相当于转化成原来的表查询
PS: 指定WITH CHECK OPTION子句后,DBMS在更新视图时会检查,防止用户通过视图对不属于视图范围内的基本数据进行更新
视图的作用
视图能够简化用户的操作
视图使用户能以多种角度看待同一数据
视图对重构数据库提供了一定程度的逻辑独立性
视图能够对机密数据提供安全保护
图能够简化用户的操作
视图使用户能以多种角度看待同一数据
视图对重构数据库提供了一定程度的逻辑独立性
视图能够对机密数据提供安全保护
适当的利用视图可以更清晰的表达查询