如果您无法下载资料,请参考说明:
1、部分资料下载需要金币,请确保您的账户上有足够的金币
2、已购买过的文档,再次下载不重复扣费
3、资料包下载后请先用软件解压,在使用对应软件打开
5.1创建视图5.2修改和重命名视图5.3查看视图信息、删除视图5.4查询视图5.5更新视图5.6视图的作用视图是从一个或者多个表或视图中导出的表,其结构和数据是建立在对表的查询基础上的。和真实的表一样,视图也包括几个被定义的数据列和多个数据行,但从本质上讲,这些数据列和数据行来源于其所引用的表。因此,视图不是真实存在的基础表而是一个虚拟表,视图所对应的数据并不实际地以视图结构存储在数据库中,而是存储在视图所引用的表中。视图可以被看成是虚拟表或存储查询。除非是索引视图,否则视图的数据不会作为非重复对象存储在数据库中。数据库中存储的是SELECT语句。SELECT语句的结果集构成视图所返回的虚拟表。用户可以采用引用表时所使用的方法,在Transact-SQL语句中引用视图名称来使用此虚拟表。了解视图了解视图视图使用场合视图与查询的区别:视图的类型标准视图5.1创建视图创建视图前应注意的准则利用SQL语句中的CREATEVIEW命令创建视图为防止再次执行时对象已存在,先判断若有则删除ifexists(selectnamefromsysobjectswherename='stu1_v'andtype='V')dropviewstu1_vgocreateviewstu1_vasselectxh,xm,xb,rxcj,bjbhfromstudentswherexb='女‘行列子集视图定义一个反映学生年龄的视图。createviewstu3_v(xh,xm,nl)asselectxh,xm,year(getdate())-year(csrq)fromstudents带表达式的视图将学生的学号、姓名及他的平均成绩定义为一个视图。createviewstu4_v(xh,xm,pjcj)asselecta.xh,xm,avg(cj)fromstudentsa,scoresbwherea.xh=b.xhgroupbya.xh,xm分组视图视图之上创建视图使用withencryption对视图进行加密使用withcheckoption的视图使用schemabinding的视图[使用绑定到构架]说明:1:不能使用“*”来创建此类型的视图2:创建此类型的视图时,一定要加上dbo.表名.3:如果在某个表中定义了此类视图,则用户将不能对表的结构进行修改,否则会删除这些绑定4:如果用户对表的结构进行列改名,则会删除绑定而且视图不可用.5:如果用户对表的结构进行列的类型或者大小修改,则会删除绑定但视图可用,此时用户可以删除视图所引用的表.5.2修改和重命名视图2.重命名视图5.3查看视图信息、删除视图2.删除视图5.4查询视图5.5更新视图使用视图修改数据时,需要注意以下几点:--可更新的视图视图上使用insert语句使用update更新视图中的数据使用视图可以更新数据记录,但应该注意的是,更新的只是数据库中的基表。例子5-19:创建了一个基于表employees的视图v_employees,然后通过该视图修改表employees中的记录。其程序清单如下:createviewv_employeesasselect*fromemployeesupdatev_employeessetname=’张然’wherename=’张三’使用视图删除记录,可以删除任何基表中的记录,直接利用DELETE语句删除记录即可。但应该注意,必须指定在视图中定义过的字段来删除记录。例子5-20:利用视图v_employees删除表employees中姓名为张然的记录。其程序清单为:deletefromv_employeeswherename=’张然’使用delete删除视图中数据.索引视图设计索引视图的指导原则对于标准视图而言,为每个引用视图的查询动态生成结果集的开销很大,特别是对于那些涉及对大量行进行复杂处理(如聚合大量数据或联接许多行)的视图。如果在查询中频繁地引用这类视图,可通过对视图创建唯一聚集索引来提高性能。对视图创建唯一聚集索引后,结果集将存储在数据库中,就像带有聚集索引的表一样。对视图创建索引的另一个好处是:优化器可以在未直接在FROM子句中指定某一视图的查询中使用该视图的索引。这样一来,可从索引视图检索数据而无需重新编码,由此带来的高效率也使现有查询获益。对基表中的数据进行更改时,数据更改将反映在索引视图中存储的数据中。视图的聚集索引必须唯一,这一要求提高了SQLServer在索引中查找受任何数据更改影响的行的效率。索引视图索引视图通常不会提高下列查询类型的性能:分区视图分区视图允许将大型表中的数据拆分成较小的成员表。根据其中一列中的数据值范围,在各个成员表之间对数据进行分区。每个成