视图的定义:视图是从一个或多个表导出的虚表。视图只能建立在当前正在使用的数据库中。
优点:1.可以使视图集中数据、简化和定制不同用户对数据库的不同数据要求。
2.使用视图可以屏蔽数据的复杂性,用户不必了解数据库的结构,就可以方便地使用和管理数据,简化数据权限管理和重新组织数据以便输出到其他应用程序中。
3.视图可以让不同的用户以不同的方式看到不同或者相同的数据集。
4.在某些情况下,由于表中数据量太大,因此在表的设计时常将表进行水平或者垂直分割,但表的结构的变化对应用程序产生不良的影响。
5.视图提供了一个简单而有效的安全机制。
用T-SQL语句创建视图
语法:
视图创建后,只在数据字典中存放视图的定义,而其中的select语句并不执行。
创建视图
【例】创建v_student视图,包含计算机专业学生的学号,姓名
--创建多表的视图
查询视图
语法:
【例】在视图v_student中查询计算机专业的学生学号和姓名
修改视图
语法:
【例】将v_student视图修改为包括计算机专业学生的学号,
其选修的课程号及成绩。
删除视图
语法:
【例】删除名为student_course_avg的视图
向视图中插入数据
语法: 练习:向v_student视图中插入一条纪录
更新视图的数据
语法: 【例】将v_student视图中学号为1001的学生的1号课程 成绩改90。
更新视图的数据
使用视图修改数据时,需要注意以下几点:
(1)修改视图中的数据时,不能同时修改两个或者多个基表,可以对基于两个或多个基表或者视图的视图进行修改,但是每次修改都只能影响一个基表。
(2)不能修改那些通过计算得到的字段,如包含计算值或者合计函数的字段。
(3)执行UPDATE、DELETE命令时,所删除与更新的数据必须包含在视图的结果集中。
(4)如果视图在创建时引用了多个数据表则无法用DELETE命令删除其中的数据,若使用UPDATE命令更新数据,则应与INSERT语句一样,被更新的列必须属于同一个数据表。
视图的加密
with encryption 表示SQL Server 加密包含 create view 语句文本在内的系统表列。只能加密,不可解密,所以加密前要备份.
查看视图定义
语法: 【例】查看视图v1:
执行后,出现提示:对象备注已加密!
★加密后无法查看视图,所以需要保存源代码!
sp_helptext显示规则、默认值、未加密的存储过程、用户定义函数、触发器或视图的文本
视图的重命名:
可以使用系统存储过程sp_rename修改视图的名称,该过程的语法形式如下:
例:把视图v2重命名为v_part:
优点:1.可以使视图集中数据、简化和定制不同用户对数据库的不同数据要求。
2.使用视图可以屏蔽数据的复杂性,用户不必了解数据库的结构,就可以方便地使用和管理数据,简化数据权限管理和重新组织数据以便输出到其他应用程序中。
3.视图可以让不同的用户以不同的方式看到不同或者相同的数据集。
4.在某些情况下,由于表中数据量太大,因此在表的设计时常将表进行水平或者垂直分割,但表的结构的变化对应用程序产生不良的影响。
5.视图提供了一个简单而有效的安全机制。
用T-SQL语句创建视图
语法:
视图创建后,只在数据字典中存放视图的定义,而其中的select语句并不执行。
创建视图
【例】创建v_student视图,包含计算机专业学生的学号,姓名
--创建多表的视图
查询视图
语法:
【例】在视图v_student中查询计算机专业的学生学号和姓名
修改视图
语法:
【例】将v_student视图修改为包括计算机专业学生的学号,
其选修的课程号及成绩。
删除视图
语法:
【例】删除名为student_course_avg的视图
向视图中插入数据
语法: 练习:向v_student视图中插入一条纪录
更新视图的数据
语法: 【例】将v_student视图中学号为1001的学生的1号课程 成绩改90。
更新视图的数据
使用视图修改数据时,需要注意以下几点:
(1)修改视图中的数据时,不能同时修改两个或者多个基表,可以对基于两个或多个基表或者视图的视图进行修改,但是每次修改都只能影响一个基表。
(2)不能修改那些通过计算得到的字段,如包含计算值或者合计函数的字段。
(3)执行UPDATE、DELETE命令时,所删除与更新的数据必须包含在视图的结果集中。
(4)如果视图在创建时引用了多个数据表则无法用DELETE命令删除其中的数据,若使用UPDATE命令更新数据,则应与INSERT语句一样,被更新的列必须属于同一个数据表。
视图的加密
with encryption 表示SQL Server 加密包含 create view 语句文本在内的系统表列。只能加密,不可解密,所以加密前要备份.
查看视图定义
语法: 【例】查看视图v1:
执行后,出现提示:对象备注已加密!
★加密后无法查看视图,所以需要保存源代码!
sp_helptext显示规则、默认值、未加密的存储过程、用户定义函数、触发器或视图的文本
视图的重命名:
可以使用系统存储过程sp_rename修改视图的名称,该过程的语法形式如下:
例:把视图v2重命名为v_part: