习 题 7
1.名词解释:
视图 索引 聚集索引 唯一索引 答:
视图:是从基本表或其他视图中导出的表,它本身不独立存储在数据库中,也就是数据库中只存放视图的定义而不存放视图的数据。
索引:是对数据库表中一列或多列的值进行排序的一种结构,使用索引可快速访问数据库表中的特定信息。
聚集索引:该索引中键值的逻辑顺序决定了表中相应行的物理顺序。这种索引对查询非常有效,在每一张基本表中只能有一个聚集索引。
唯一索引:不允许具有索引值相同的行,从而禁止重复的索引或键值。并在每次使用 INSERT 或 UPDATE 语句添加数据时进行检查
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;
解:
答:⑴ 允许查询。相应的操作如下:
SELECT SNO,COUNT(CNO) AS C_NUM,AVG(GRADE) AS AVG_GRADE FROM SC
GROUP BY SNO;
⑵ 允许查询。相应的操作如下:
SELECT SNO,COUNT(CNO)AS C_NUM FROM SC
GROUP BY SNO
HAVING AVG(GRADE)>80;
⑶ 允许查询。相应的操作如下:
SELECT SNO,AVG(GRADE) AS AVG_GRADE FROM SC
GROUP BY SNO
HAVING COUNT(CNO)>(SELECT COUNT(CNO) FROM SC
GROUP BY SNO
HAVING SNO=’200912121’);
⑷ 不允许。C_NUM是对SC中的学生选修课程的门数进行统计,在未更改SC表时,要在视图S_GRADE中更改门数,是不可能的。
⑸ 不允许。在视图S_GRADE中删除选修课程的门数在4门以上的学生元组,势必造成SC中这些学生学习元组的删除,这不一定是用户的原意,因此使用分组和聚合操作的视图,不允许用户执行更新操作。
6.简述创建索引的必要性和作用。
答:数据库的索引就类似于书籍的目录,如果想快速查找而不是逐页查找指定的内容,可以通过目录中章节的页号找到其对应的内容。类似地,索引通过记录表中的关键值指向表中的记录,这样数据库引擎就不用扫描整个表而定位到相关的记录。相反,如果没有索引,则会导致SQL Server搜索表中的所有记录,以获取匹配结果,这样就会大大降低查询的效率。