13.3 全真模拟题解析
【试题1分析】答案:D。数据模型的三要素是数据结构、数据操作和数据的约束条件。
【试题2分析】答案:A。SQL语言的GRANT命令是用来授予权限的,REVOKE是用来收回权限的,它们是用来防止未授权用户操作数据库。
【试题3分析】答案:D。授权语句的语法格式如下。
GRANT < 权限> [,< 权限>]... [ON < 对象类型> < 对象名>] TO < 用户> [,< 用户>]... [WITH GRANT OPTION];
根据以上语法格式判断,D选项语句正确。
【试题4分析】答案:C。插入记录语句的格式如下。
INSERTINTO基本表名(字段名表)VALUES(常量表)
答案D错误原因是SQL中的字符常量不是用双引号括起,而是用单引号括起。
【试题5分析】答案:C。视图采用SELECT语句来构造的。在定义了一个视图时,只是把其定义存放在系统的数据字典中,直到用户使用视图时才去求对应的数据。
【试题6分析】答案:(1)C;(2)B。SUM函数是求和的,COUNT函数是统计个数的,因此,(6)空选择COUNT(S#)。
HAVING与GROUPBY配套使用,是对分组之后的内容进行条件筛选。题目要求每门课程选修人数超过10人才统计,则分组之后,每组的记录个数超过10个的才能SELECT,因此(7)选择B:HAVINGCOUNT(*)>10。
【试题7分析】答案:D。关系模型的完整性规则包括试题完整性规则、参照完整性规则和用户定义的完整性规则。
【试题8分析】答案:B。题目要求查询选修了3门以上课程的学生的学生号,只需按学号进行分组,若组内有3条以上的记录,则表明此学生选修了3门以上的课程。HAVINGA是用来组内进行筛选。
【试题9分析】答案:1)数据定义功能。DBMS提供数据定义语言(DDL),用户通过它可以方便地对数据库中的数据对象进行定义。2)数据操纵功能。DBMS提供数据操纵语言DML,用户可以使用DML操纵数据实现对数据库的基本操作,如查询、插入、删除和修改等。3)数据库运行管理。4)数据库的建立和维护功能。
分析:数据库管理系统是位于用户与操作系统之间的数据管理软件。它的主要功能包括以下几方面。
·数据定义功能。DBMS提供数据定义语言(Data Definition Language,DDL),用户通过它可以方便地对数据库中的数据对象进行定义。
·数据操纵功能。DBMS还提供数据操纵语言(Data Manipulation Language,DML),用户可以使用DML操纵数据实现对数据库的基本操作,如查询、插入、刪除和修改等。
·数据库的运行管理。数据库在建立、运用和维护时由数据库管理系统统一管理、统一控制,以保证数据的安全性、完整性、多用户对数据的并发使用以及发生故障后的系统恢复。
·数据库的建立和维护功能。它包括数据库初始数据的输入、转换功能,数据库的转储、恢复功能,数据库的重组织功能和性能监视、分析功能等。这些功能通常是由一些实用程序完成的。
【试题10分析】答案:
目前,数据库领域中最常用的数据模型有3种,分别是层次模型(Hierarchical Model)、网状模型(Network Model)和关系模型(Relational Model)。
(1)层次模型
层次模型类似于倒置树形的父子结构,它构成层次结构。一个父表可以有多个子表,而一个子表只能有一个父表。
层次模型的优点是数据结构类似金字塔,不同层次之间的关联性直接且简单;缺点是由于数据纵向发展,横向关系难以建立,数据可能会重复出现,造成管理维护的不便。
(2)网状模型
网状模型克服了层次模型的一些缺点。该模型也使用倒置树形结构。与层次结构不同的是,网状模型的结点间可以任意发生联系,能够表示各种复杂的联系。
网状模型的优点是可以避免数据的重复性,缺点是关联性比较复杂,尤其是当数据库变得越来越大时,关联性的维护会非常复杂。
(3)关系模型
关系模型突破了层次模型和网状模型的许多局限。关系是指由行与列构成的二维表。在关系模型中,实体和实体间的联系都是用关系表示的。也就是说,二维表格中既存放着实体本身的数据,又存放着实体间的联系。关系不但可以表示实体间一对多的联系,通过建立关系间的关联,也可以表示多对多的联系。
【试题11分析】答案:数据系统的三级模式结构是指数据库系统由模式、外模式和内模式构成。
1)模式:也称逻辑模式,是数据库中全体数据的逻辑结构和特征的描述,是所有用户的公共数据视图。
2)外模式:也称子模式或用户模式,是数据库用户的数据视图,是与某一应用有关的数据的逻辑表示。
3)内模式:内模式也称存储模式,它是数据物理结构和存储方式的描述,是数据在数据库内部的表示方式。
二级映像如下。
1)外模式/模式映像。模式描述的是数据的全局逻辑结构,外模式描述的是数据的局部逻辑结构。对应于同一个模式可以有任意多个外模式。对于每一个外模式,数据库系统都有一个外模式/模式映像,它定义了该外模式与模式之间的对应关系。这些映像定义通常包含在各自的外模式描述中。
2)模式/内模式映像。数据库中只有一个模式,也只有一个内模式,所以模式/内模式映像是唯一的,它定义了数据库全局逻辑结构与存储结构之间的对应关系。
分析:
1.三极模式
数据系统的三级模式结构是指数据库系统由模式、外模式和内模式构成。
(1)模式
模式也称逻辑模式,是数据库中全体数据的逻辑结构和特征的描述,是所有用户的公共数据视图。模式实际上是数据库系统在逻辑级上的视图。一个数据库只有一个模式。
(2)外模式
外模式也称子模式或用户模式,它是数据库用户(包括应用程序员和最终用户)能够看见和使用的局部数据的逻辑结构和特征描述,是数据库用户的数据视图,是与某一应用有关的数据的逻辑表示。
(3)内模式
内模式也称存储模式,一个数据库只有一个内模式。它是数据物理结构和存储方式的描述,是数据在数据库内部的表示方式。
2.二级映像
(1)外模式/模式映像
模式描述的是数据的全局逻辑结构,外模式描述的是数据的局部逻辑结构。对应于同一个模式可以有任意多个外模式。对于每一个外模式,数据库系统都有一个外模式/模式映像,它定义了该外模式与模式之间的对应关系。这些映像定义通常包含在各自的外模式描述中。
当模式改变时,由数据库管理员对外模式/模式的映像作相应改变,可以使外模式保持不变。应用程序是依据数据的外模式编写,从而应用程序不必修改。保证了数据与程序的逻辑独立性,简称为数据的逻辑独立性。
(2)模式/内模式映像
数据库中只有一个模式,也只有一个内模式,所以模式/内模式映像是唯一的,它定义了数据库全局逻辑结构与存储结构之间的对应关系。该映像定义通常包含在模式描述中。当数据库的存储结构改变了,由数据库管理员对模式/内模式映像作相应改变,可以使模式保持不变,从而应用程序也不必改变,保证了数据与程序的物理独立性,简称数据的物理独立性。
【试题12分析】答案:视图是从一个或几个基本表(或视图)导出的表,它与基本表不同,是一个虚表。数据库中只存放视图的定义,而不存放视图对应的数据,这些数据仍存放在原来的基本表中。因此,基本表中的数据发生变化,从视图中查询出的数据也随之改变了。从这个意义上讲,视图就像一个窗口,透过它可以看到数据库中自己感兴趣的数据及其变化。
【试题13分析】【问题1】
(1)答案:年龄>=15AND年龄<=60或年龄BETWEEN 15 AND 60。”
分析:这是一个修改表结构的命令,要求客户关系中的年龄取值在15岁到60岁之间,采用check进行约束,在使用check约束时需要设计一个表达式,某条记录的某些字段的值,如果使这个表达式为假,则这条记录被禁止,反之,则被允许。根据题意,这个表达式为“年龄>=15AND年龄<=60”或“年龄BETWEEN15AND60”。
(2)答案:①(商品号,商品名称,型号,品牌,销售量)②SUM(数量)③商品.商品号=商品销售量.商品号
分析:这是一个创建视图的命令。首先要求商品视图包含商品号、商品名称、型号、品牌和销售量,所以在CREATEVIEW后应列出这些字段,因此①应填“商品号,商品名称,型号,品牌,销售量”,由于“商品号、商品名称、型号、品牌”字段包含在商品关系中,而“销售量”需要通过销售关系中的对同一商品号的销售“数量”进行求和才能计算出来,所以②应填“SUM(数量)”,这样就必须对两个数据库进行连接,所以在WHERE后的③空应填“商品.商品号=商品销售量.商品号”。
(3)答案:SELECT
分析:这是一个授权命令。在该题中将视图畅销商品的查询权限赋予销售经理李华,在GRANT后应接表示系统权限的谓词,所以应填SELECT。
【问题2】答案:①客户,销售②客户.客户号=销售.客户号③IN
分析:这是一个查询语句。要求查询购买“新飞”品牌的任一型号“冰箱”的客户姓名及购买日期,由于客户姓名包含在客户关系中,而购买日期包含在销售关系中,所以在FROM后的①空应填“客户,销售”,在WHERE后应建立这两个数据库的连接,②空应填“客户.客户号=销售.客户号”,要查询的是购买“新飞”品牌的任一型号“冰箱”的客户,该题中“SELECT商品号FROM商品WHERE品牌=‘新飞’AND名称=‘冰箱’”查询出了“新飞”品牌的任一型号“冰箱”的商品号,所以在商品号后的③中应填IN。
【试题14分析】【问题1】答案:
(1)ALTER TABLE用户ADD个性签名VARCHAR(60);
(2)①FOREIGN KEY(父栏目编号)REFERENCES栏目(栏目编号)
②FOREIGN KEY(版主)REFERENCES用户(用户编号)
分析:①要求增加一个属性,试题已经给出了属性的名称和类型,所以这里只需要使用“ALTER TABLE用户ADD个性签名VARCHAR(60);”就可以了。
②是考查创建表,因为在所有属性之后,所以是对整个表的约束,而在定义“栏目编号”时就已经指定了该属性是主键,因此,这里应该是对外键进行定义。在表“栏目”中,显然,“父栏目编号”(对应“栏目”表中的“栏目编号”)和“版主”(对应“用户”表的“用户编号”)是外键。
【问题2】答案:(1)①WHERE标题LIKE‘%SQL%’OR内容LIKE‘%SQL%’②ORDER BY发布时间DESC
(2)①IN②UNION③父栏目编号IN
分析:第1个查询语句的功能是“查询标题或内容包含‘SQL’的主题标题,按发布时间降序排序”,这是对表“主题”的查询。因此,①空应该填写条件子句“标题或内容包含‘SQL’”,即“WHERE标题LIKE‘%SQL%’OR内容LIKE‘%SQL%’”。②空应该填写“按发布时间降序排序”,即“ORDER BY发布时间DESC”。
第2个查询语句的功能是“查找名称为‘数据库技术’的栏目及其子栏目中的精华主题的标题和点击率”。在“主题”表中查找符合要求的“栏目编号”,再根据这个“栏目编号”在“栏目”表中进行名称比较。因为涉及栏目和子栏目,这里需要用到并操作。
【问题3】答案:(1)不能完成此功能。删除了主题编号为“T005”的主题后,可能会存在该主题的回复主题,违反参照完整性约束。
(2)在创建回复主题关系时指定级联删除,定义主题编号属性的外键约束后加上DELETE CASCADE。或者是在主题关系上定义触发器,当删除主题时,删除其对应的回复主题。
分析:因为“回复主题”的“主题编号”是外键,参照“主题”的“主题编号”,所以,第1个语句“DELETE主题WHERE主题编号=‘T005’;”不能完成删除功能。因为删除了主题编号为“T005”的主题后,可能会存在该主题的回复主题,违反了参照完整性约束。
如果要用“DELETE主题WHERE主题编号=‘T005’;”这个语句达到“删除编号为‘T005’的主题及其相关的回复主题”的功能,则需要在创建“回复主题”关系时指定级联删除,在定义“主题编号”属性的外键约束后加上ONDELETECASCADE。或者在“主题”关系上定义触发器,当删除“主题”时,删除其对应的“回复主题”。
【问题4】答案:①SELECT主题编号,COUNT(*)回复数或SELECT主题编号,COUNT(*)AS回复数
②GROUPBY主题编号
③主题.主题编号=A.主题编号
分析:问题4考查视图的创建。要求创建视图主题_view,属性包括主题编号、标题、用户账号、栏目名称、回复数、点击率和发布时间,这里就涉及多个关系和集函数的处理。
“回复数”是需要统计同一个“主题”在“回复主题”表中的元组个数,所以需要使用COUNT(*)。而且,这里的统计是需要根据“主题编号”来分类的,即统计每个“主题编号”的“回复数”。所以,第①空应填写“SELECT主题编号,COUNT(*)AS回复数”。第②空应该填写“GROUPBY主题编号”。
因为前面有一个“ASA”,也就是说,把子查询结果作为一个关系A看待,所以,第③空应该填写“主题.主题编号=A.主题编号”。