第5章习题解答1.思考题(1)什么是聚集索引?什么是非聚集索引?它们的区别是什么?答:聚集索引(Clustered)将数据行的键值在数据表内排序并存储对应的数据记录,使得数据表的物理顺序与索引顺序一致。非聚集索引(Non-clustered)具有完全独立于数据行的结构。数据存储在一个地方,索引存储在另一个地方。聚集索引确定表中数据的物理顺序。非聚集索引中索引的逻辑顺序与磁盘上行的物理存储顺序不同。(2)一个表中的数据可以按照多种顺序来存储吗?一个表中能创建几个聚集索引?聚集索引一定是唯一索引吗?为什么?答:一个表中的数据只能按照一种顺序来存储,所以一个表中只能创建一个聚集索引。唯一索引是给所做的索引增加了唯一性的约束,添加,修改索引列中数据时,不允许出现重复值。聚集索引是唯一的,也可以不是唯一的,就看如何定义。(3)视图和数据表的区别是什么?视图可以创建索引、创建主健、约束吗?为什么?答:视图和数据表的区别:1)视图是已经编译好的sql语句。而表不是。2)视图没有实际的物理记录。而表有。3)表是内容,视图是窗口。4)表只用物理空间而视图不占用物理空间,视图只是逻辑概念的存在,表可以及时对它进行修改,但视图只能有创建的语句来修改。5)表是内模式,视图是外模式。6)视图是查看数据表的一种方法,可以查询数据表中某些字段构成的数据,只是一些SQL语句的集合。从安全的角度说,视图可以不给用户接触数据表,从而不知道表结构。7)表属于全局模式中的表,是实表;视图属于局部模式的表,是虚表。8)视图的建立和删除只影响视图本身,不影响对应的基本表。(4)能不能基于临时表建立视图?由什么语句可建立临时表?在CREATEVIEW语句中能不能使用INTO关键字?为什么?答:不能基于临时表建立视图。由SELECTINTO语句可建立临时表,在CREATEVIEW语句中不能使用INTO关键字。(5)视图存储记录吗?对更新视图的操作最终都转化为对什么的更新操作?答:视图的信息存放在系统表中,可以使用查询语句或系统存储过程进行查询。由于视图实际上并不存储记录,因此更新视图的操作最终都转化为对基表的更新操作。2.选择题(1)为数据表创建索引的目的是(A)。A.提高查询的检索性能B.节省存储空间C.便于管理D.归类(2)索引是对数据库表中(C)字段的值进行排序。A.一个B.多个C.一个或多个D.零个(3)下列(C)类数据不适合创建索引。A.经常被查询搜索的列B.主键的列C.包含太多NULL值的列D.表很大(4)有表student(学号,姓名,性别,身份证号,出生日期,所在系号),在此表上使用(A)语句能创建视图vst。A.CREATEVIEWvstASSELECT*FROMstudentB.CREATEVIEWvstONSELECT*FROMstudentC.CREATEVIEWASSELECT*FROMstudentD.CREATETABLEvstASSELECT*FROMstudent(5)在一个数据表上,最多可以定义(A)个聚集索引,可以有多个非聚集索引。A.1B.2C.3D.4(6)下面关于索引的描述不正确的是(B)。A.索引是一个指向表中数据的指针B.索引是在元组上建立的一种数据库对象C.索引的建立和删除对表中的数据毫无影响D.表被删除时将同时删除在其上建立的索引(7)SQL的视图是(C)中导出的。A.基本表B.视图C.基本表或视图D.数据库(8)在视图上不能完成的操作是(C)。A.更新视图数据B.查询C.在视图上定义新的基本表D.在视图上定义新视图(9)关于数据库视图,下列说法正确的是(A)。A.视图可以提高数据的操作性能B.定义视图的语句可以是任何数据操作语句C.视图可以提供一定程度的数据独立性D.视图的数据一般是物理存储的(10)在下列关于视图的叙述中,正确的是(A)。A.当某一视图被删除后,由该视图导出的其他视图也将被自动删除B.若导出某视图的基本表被删除了,该视图不受任何影响C.视图一旦建立,就不能被删除D.当修改某一视图时,导出该视图的基本表也随之被修改