数据库原理及其应用(SQL server2012)习题详解-习题7

答案链接(点击查看
http://note.youdao.com/noteshare?id=5bd9212ed6ec1167823e0b1136f42de6

习题7

习题6
链接:https://blog.csdn.net/qq_40402685/article/details/84952261
习题8
链接:https://blog.csdn.net/qq_40402685/article/details/84404069
注:因导入图片需时间较多,特分享此链接。
7-1.名词解释:

视图:是从基本表或其他视图中导出的表,它本身不独立存储在数据库中,也就是数据库中只存放视图的定义而不存放视图的数据。
索引:是对数据库表中一列或多列的值进行排序的一种结构,使用索引可快速访问数据库表中的特定信息。
聚集索引:该索引中键值的逻辑顺序决定了表中相应行的物理顺序。这种索引对查询非常有效,在每一张基本表中只能有一个聚集索引。
唯一索引:不允许具有索引值相同的行,从而禁止重复的索引或键值。并在每次使用 INSERT 或 UPDATE 语句添加数据时进行检查

7-2.简述数据库视图和基本表的联系与区别。

相同:①都是由行列组成的。
②对表的操作适用于视图
区别:①视图是已经编译好的sql语句,而表不是。
②视图没有实际的物理记录。而表有。
③表是内容,视图是窗口。
④表只用物理空间而视图不占用物理空间,视图只是逻辑概念的存在,表可以及时四对它进行修改,但视图只能有创建的语句来修改。
⑤表是内模式,试图是外模式
⑥视图是查看数据表的一种方法,可以查询数据表中某些字段构成的数据,只是一些SQL语句的集合。从安全的角,视图可以不给用户接触数据表,从而不知道表结构。
⑦表属于全局模式中的表,是实表;视图属于局部模式的表,是虚表。
⑧视图的建立和删除只影响视图本身,不影响对应的基本表。

7-3.可更新视图必须满足哪些条件?

解:最重要的一个条件就是一个可更新视图只能包含一个表。其他的限制包括不允许使用GROUP BY子句和ORDER BY子句、不支持DISTINCT关键字、不能使用聚合函数或子查询以及不能包含计算列等。诸如此类的限制还有很多。

7-4.假设某“仓库管理”关系型数据库有下列五个关系模式:

零件PART(PNO,PNAME,COLOR,WEIGHT)
项目PROJECT(JNO,JNAME,JDATE)
供应商SUPPLIER(SNO,SNAME,SADDR)
供应P_P(JNO,PNO,TOTAL)
采购P_S(PNO,SNO,QUANTITY)
(1) 试将PROJECT、P_P、PART三个基本表的自然联接定义为一个视图VIEW1, PART、P_S、SUPPLIER三个基本表的自然联接定义为一个视图VIEW2。
(2) 试在上述两个视图的基础上进行数据查询:
① 检索上海的供应商所供应的零件的编号和名字。
② 检索项目J4所用零件的供应商编号和名字。

答案详情见文章顶部

7-5. 对于教务管理数据库中基本表SC,建立视图如下:

CREATE VIEW S_GRADE(SNO,C_NUM,AVG_GRADE)
AS SELECT SNO,COUNT(CNO),AVG(GRADE)
FROM SC
GROUP BY SNO
试判断下列查询和更新是否允许执行。若允许,写出转换到基本表SC上
相应操作:
(1) SELECT * FROM S_GRADE
(2) SELECT SNO,C_NUM
FROM S_GRADE
WHERE AVG_GRADE>80;
(3) SELECT SNO,AVG_GRADE
FROM S_GRADE
WHERE C_NUM>(SELECT C_NUM
FROM S_GRADE
SNO=’200912121’);
(4) UPDATE S_GRADE
SET C_NUM=C_NUM+1
WHERE SNO=’ 200915122’
(5) DELETE FROM S_GRADE
WHERE C_NUM>4;
⑷ 不允许。C_NUM是对SC中的学生选修课程的门数进行统计,在未更改SC表时,要在视图S_GRADE中更改门数,是不可能的。
⑸ 不允许。在视图S_GRADE中删除选修课程的门数在4门以上的学生元组,势必造成SC中这些学生学习元组的删除,这不一定是用户的原意,因此使用分组和聚合操作的视图,不允许用户执行更新操作。

答案详情见文章顶部

7-6.简述创建索引的必要性和作用。

答:数据库的索引就类似于书籍的目录,如果想快速查找而不是逐页查找指定的内容,可以通过目录中章节的页号找到其对应的内容。类似地,索引通过记录表中的关键值指向表中的记录,这样数据库引擎就不用扫描整个表而定位到相关的记录。相反,如果没有索引,则会导致SQL Server搜索表中的所有记录,以获取匹配结果,这样就会大大降低查询的效率。

7-7.聚集索引和非聚集索引有何种异同?

答:聚集索引和非聚集索引的根本区别是表记录的排列顺序和与索引的排列顺序是否一致。聚集索引即需要对已有表数据重新进行排序(若表中已有数据),即删除原始的表数据后再将排序结果按物理顺序插回,故聚集索引建立完毕后,建立聚集索引的列中的数据已经全部按序排列。一个表中只能包含一个聚集索引,但该索引可以包含多个列。非聚集索引类似书本索引,索引与数据存放在不同的物理区域,建立非聚集索引时数据本身不进行排序。一个表中可以含多个非聚集索引。
相同之处就是它们都是索引,都可以提高数据的查询速度。

7-8.用T-SQL语句,按数据库JXGL中选修课程表SC的成绩列降序创建一个普通索引(非唯一、非聚集)。

答案详情见文章顶部

你可能感兴趣的:(SQLserver)