第8章-视图与索引.pptVIP

  1. 1、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。。
  2. 2、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  3. 3、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
  4. 4、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
  5. 5、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们
  6. 6、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
  7. 7、VIP文档为合作方或网友上传,每下载1次, 网站将根据用户上传文档的质量评分、类型等,对文档贡献者给予高额补贴、流量扶持。如果你也想贡献VIP文档。上传文档
查看更多
若想为现有系统中的视图添加索引,必须计划绑定任何想要放入索引的视图。可以除去视图并通过指定 WITH SCHEMABINDING 重新创建它;也可以创建另一个视图,使其具有与现有视图相同的文本,但是名称不同。优化器将考虑新视图上的索引,即使在查询的 FROM 子句中没有直接引用它。 8.2.4 查看索引信息 在实际使用索引的过程中,有时需要对表的索引信息进行查询,了解在表中曾经建立的索引。可以使用SQL Server Management Studio进行查询;也可以在查询窗口中使用T-SQL语言句进行查询。 1. 在SQL Server Management Studio中查看索引信息 在SQL Server Management Studio中,选择要查看的表,然后使用鼠标右键单击相应的表,从菜单中选择“设计”,进入“表设计器”窗口,右键单击任意位置,选择“索引/键”即可查看此表上所有的索引信息。例如,查看“学生表”上的索引信息 2. 使用T_SQL语句查看索引信息 可以使用系统存储过程sp_help index或sp_help来查看索引信息,比如查看student上的索引信息。 (1) 使用系统存储过程sp_helpindex查看索引信息 USE teaching GO EXEC sp_helpindex student 结果显示了“学生表”中所建立的两个索引。①索引名称为“index_姓名”,索引描述为非聚集索引,索引关键字为“姓名”。②索引名称为“PK__学生表”,索引描述为聚集索引、唯一索引,索引关键字为“学号”。 (2) 使用系统存储过程sp_help查看索引信息 USE teaching GO EXEC sp_help student 由结果可以看出,执行sp_help系统存储过程查询的结果要比执行sp_helpindex显示的结果更加详细,除了索引信息,还包括当前表的基本信息、与此表相关的各种约束等。 8.2.5 删除索引 当一个索引不再需要时,可以将其从数据库中删除,以释放当前占用的存储空间,这些释放的空间可以由数据库中的任何对象使用。 删除聚集索引可能要花费一些时间,因为必须重建同一个表上的所有非聚集索引。必须先删除约束后,才能删除PRIMARY KEY或UNIQUE约束使用的索引。如果要在不删除和重新创建PRIMARY KEY或UNIQUE约束的情况下,删除并重新创建该约束使用的索引,应该通过一个步骤重建该索引。删除某个表时,会自动删除在此表上创建的索引。 1.在SQL Server Management Studio中删除索引 与在SQL Server Management Studio中创建索引的步骤一样,选中要进行删除索引的表,选中“索引”选顶,展开“索引”选顶前面的“+”号,右键单击要删除的索引,选择“删除”按钮,弹出“删除对象”对话框,单击“确定”按钮即可。 2.使用T-SQL语句删除索引 删除索引的T-SQL语句的语法格式为: DROP INDEX table_name.index_name 【例8-14】删除student表中的“Index_sname”索引。 DROP INDEX student. Index_sname GO 可更新条件*: (1)对数据的任何更新(包括UPDATE、INSERT和DELETE语句)都只能引用一个基本表的列。 ①如果视图数据为一个表的行、列子集,则可更新(包括UPDATE、INSERT和DELETE语句);但如果视图中包含的列为表定义时不允许取空值又没有给默认值的列,则此视图不可以插入数据。 ②如果视图所依赖的基本表有多个时,不能向该视图添加(INSERT)数据。 ③若视图依赖于多个基本表,那么一次修改只能修改(UPDATE)一个基本表中的数据。 ④若视图依赖于多个基本表,那么不能通过视图删除(DELETE)数据。 (2)视图中被修改的列必须直接引用表列中的基础数据。 不能是通过任何其他方式对这些列进行派生而来的数据,比如通过聚合函数、计算(如表达式计算)、集合运算等。 (3)被修改的列不应是在创建视图时受GROUP BY、HAVING、DISTINCT或TOP子句影响的。 注意:有可能插入并不满足视图查询的WHERE子句条件中的一行。为了进行限制此操作,可以在创建视图时使用WITH CHECK OPTION选项。 【例8-7】通过male_view视图向student表中插入一个“男”生。 INSERT INTO male_view VALUES (‘1501005’, ‘张三’, ‘男’, 19,’2015-09-01’,‘电子’,’15级’) 如果通过male_view视图向student表中插入一个“女”生,也可以完

文档评论(0)

kbook + 关注
实名认证
文档贡献者

该用户很懒,什么也没介绍

1亿VIP精品文档

相关文档