视图
视图是从一个或几个基本表(或视图)导出的表。它与基本表不同,是一个虚表。视图一经定义,就可以和基本表一样被查询,被删除。也可以在视图之上再定义新的视图,但对视图的更新(增,删,改)操作则有一定的限制。
1.1.1 定义视图
1,建立视图
sql语言用create view 命令建立视图,其一般格式为
create view <视图名> [(<列名>[,<列名>]…)] as <子查询> [with check option]
注:with check option 表示对视图进行update,insert和delete操作时要保证更新,插入或删除的行满足视图定义中谓词条件(即子查询中的条件表达式)。
1.1.2 查询视图
关系数据库管理系统执行对视图的查询时,首先进行有效性检查,检查查询中涉及的表,视图等是否存在。如果存在,则从数据字典中取出视图的定义,把定义的子查询和用户的查询结合起来,转换成等价的基本表的查询,然后再执行修正了的查询。这一转换过程称为试图消解。
1.1.3 删除视图
该语句的格式为
drop view <视图名> [cascade]|[restrict];
视图删除后视图的定义将从数据词典中删除。如果该视图上还导出了其他视图,则使用cascade级联删除语句把该视图和由他导出的所有视图都一起删除;restrict会进行判断,如果该视图还导出了其它视图,则会拒绝删除,报错,否则可以成功执行。
1.1.4 更新视图
更新视图是指通过视图来插入(insert),删除(delete)和修改(update)数据。
由于视图是不实际存储数据的虚表,因此对视图的更行最终要转换为对基本表的更行。一般地,行列子集视图是可更新的。
行列子集视图是可以更新的,如在视图上对学生姓名进行更改;非行列子集视图是不可以更改的,在原来的基础表中使用了sum等函数定义的视图,此视图的此值是无法更新的。
小重点:
一个不允许更新的视图上定义的视图也是不允许更新。应该指出的是,不可更新的视图与不允许更新的视图是两个不同的概念。
1.1.5 视图的作用
1,视图能简化用户的操作
2,能使用户多角度看待同一问题
3,为数据库的重构提供一定的逻辑独立性支持
4,视图能够对机密数据提供安全保护
5,适当的利用视图可以更清晰地表达查询