1、数据库程序设计模拟试卷 8及答案与解析 一、单项选择题 1 在 Visual FoxPro中,如下描述正确的是 ( A)对表的所有操作,都不需要使用 USE命令先打开表 ( B)所有 SQL命令对表的所有操作都不需使用 USE命令先打开表 ( C)部分 SQL命令对表的所有操作都不需使用 USE命令先打开表 ( D)传统的 FoxPro命令对表的所有操作都不需使用 USE命令先打开表 2 在 SQL SELECT语句中,为了将查询结果存储到临时表,应该使用短语 ( A) TO CURSOR ( B) INTO CURSOR ( C) INTO DBF ( D) TO DBF 3 设有订单表 o
2、rder(其中包含字段:订单号,客户号,职员号,签订日期,金额 ),查询 2007年所签订单的信息,并按金额降序排序,正确的 SQL命令是 ( A) SELECT*FROM order WHERE YEAR(签订日期 )=2007 ORDER BY金额DESC ( B) SELECT*FROM order WHILE YEAR(签订日期 )=2007 ORDER BY金额 ASC ( C) SELECT*FROM order WHERE YEAR(签订日 期 )=2007 ORDER BY金额 ASC ( D) SELECT*FROM order WHILE YEAR(签订日期 )=2007
3、ORDER BY金额DESC 4 检索 “投中 3分球 ”小于等于 5个的运动员中 “得分 ”最高的运动员的 “得分 ”,正确的 SQL语句是 ( A) SELECT MAX(得分 )FROM运动员 WHERE投中 3分球 =19820320AND性别 =“男 ” ( B) SELECT*FROM学生 WHERE出生日期 =19820320OR性别 =“男 ” ( D) SELECT*FROM学生 WHERE出生日期 =ALL(SELECT成绩 FROM选课 ) ( B) SELECT学生学号,姓名 FROM学生,选课 WHERE学生学号 =选课学号; AND成绩 =ALL(SELECT成绩
4、FROM选课 WHERE课程号 =“101”) ( C) SELECT学生学号,姓名 FROM学生,选课 WHERE学生学号 =选课学号; AND成绩 =ALL(SELECT成绩 FROM选课 WHERE课程 号 =“101”) ( D) SELECT学生学号,姓名 FROM学生,选课 WHERE学生学号 =选课学号 AND; 课程号 =“101”AND成绩 =ALL(SELECT成绩 FROM选课WHERE课程号 =“101”) 15 SQll的 SELECT语句中, “HAVING”用来筛选满足条件的 ( A)列 ( B)行 ( C)关系 ( D)分组 16 下列关于 SELECT短语的描
5、述中错误的是 ( A) SELECT短语中可以使用别名 ( B) SELECT短语中只能包含表中的列及其构成的表达式 ( C) SELECT短语规定了结果集中的列顺序 ( D)如果 FROM短语引用的两个表有同名的列,则 SELECT短语引用它们时必须使用表名前缀加以限定 17 与 “SELECT*FROM学生 INTO DBF A”等价的语句是 ( A) SELECT*FROM学生 INTO A ( B) SELECT*FROM学生 INTO TABLE A ( C) SELECT*FROM学生 TO TABLE A ( D) SELECT*FROM学生 TO DBF A 18 查询在 “北
6、京 ”和 “上海 ”出生的学生信息的 SQL语句是 ( A) SELECT*FROM学生 WHERE出生地 =北京 AND上海 ( B) SELECT*FROM学生 WHERE出生地 =北京 OR上海 ( C) SELECT*FROM学生 WHERE出生地 =北京 AND出生地 =上海 ( D) SELECT*FROM学生 WHERE出生地 =北京 OR出生地 =上海 19 在 SQL语句中,与表达式 “年龄 BETWEEN 12 AND 46”功能相同的表达式是 ( A)年龄 =12 OR=12 AND=12 OR年龄 =12 AND年龄 9 00 OR最后得分 =8 00 AND最后得分
7、9 00 OR最后得分 =9 00 24 假设 temp dbf数据表中有两个字段 “歌手号 ”和 “最后得分 ”,下面程序段的功能是:将 temp dbf中歌手的 “最后得分 ”填入 “歌手 ”表对应歌手的 “最后得分 ”字段中 (假设已增加了该字段 ),在下划线处应该填写的 SQL语句是 USE歌手 DO WHILE NOT EOF() REPLACE 歌手最后得分 WITH a2 SKIP ENDDO ( A) SELECT*FROM temp WHERE temp歌手号 =歌手歌手号 TO ARRAY a ( B) SELECT*FROM temp WHERE temp歌手号 =歌手歌
8、手号 INTO ARRAY a ( C) SELECT*FROM temp WHERE temp歌手号 =歌手歌手号 TO FILE a ( D) SELECT*FROM temp WHERE temp歌手号 =歌手歌手号 INTO FILE a 25 与 “SELECT DISTINCT歌手号 FROM歌手 WHERE最后得分 =ALL; (SELECT最后得分 FROM歌手 WHERE SUBSTR(歌手号, 1, 1)=“2“)” 等价的SQL语句是 ( A) SELECT DISTINCT歌手号 FROM歌手 WHERE最后得分 =; (SELECT MAX(最后得分 )FROM歌手
9、WHERE SUBSTR(歌手号, 1, 1)=“2”) ( B) SELECT DISTINCT歌手号 FROM歌手 WHERE最后得分 =; (SELECT MIN(最后得分 )FROM歌手 WHERE SUBSTR(歌手号, 1, 1): “2”) ( C) SELECT DISTINCT歌手号 FROM歌手 WHERE最后得分 =ANY: (SELECT最后得分 FROM歌手 WHERE SUBSTR(歌手号, 1, 1)=“2”) ( D) SELECT DISTINCT歌手号 FROM歌手 WHERE最后得分 =SOME; (SELECT最后得分 FROM歌手 WHERE SUBS
10、TR(歌手号, 1, 1)=“2”) 26 假设 “订单 ”表中有订单号、职员号、客户号和金额字段,正确的 SQL语句只能是 ( A) SELECT职员号 FROM订单: GROUP BY职员号 HAVING COUNT(*)3 AND AVG金额 200 ( B) SELECT职员号 FROM订单; GROUP BY职员号 HAVING COUNT(*)3 AND AVG(金额 )200 ( C) SELECT职员号 FROM订单; GROUP BY职员号 HAVING COUNT(*)3 WHERE AVG(金额 )200 ( D) SELECT职员号 FROM订单: GROUP BY职员
11、号 WHERE COUNT(*)3 AND AVG金额 200 27 假设同一名称的产品 有不同的型号和产地,则计算每种产品平均单价的 SQL语句是 ( A) SELECT产品名称, AVG(单价 )FROM产品 GROUP BY单价 ( B) SELECT产品名称, AVG(单价 )FROM产品 ORDER BY单价 ( C) SELECT产品名称, AVG(单价 )FROM产品 ORDER BY产品名称 ( D) SELECT产品名称, AVG(单价 )FROM产品 GROUP BY产品名称 28 设有 S(学号,姓名,性别 )和 SC(学号,课程号,成绩 )两个表,用下列 SQL语句检索
12、选修的每门课程的成绩都高于或等于 85分的学 生的学号、姓名和性别,正确的是 ( A) SELECT学号,姓名,性别 FROM s WHERE EXISTS; (SELECT*FROM sc WHERE sc。学号 =s学号 AND成绩 85) ( D) SELECT学号,姓名,性别 FROM s WHERE NOT EXISTS; (SELECT*FROM sc WHERE sc学号 =s学号 AND成绩 =ALL(SELECT单价FROM产品 WHERE SUBSTR(产品号, 1, 1)=“2”)”等价的 SQL命令是 ( A) SELECT DISTINCT产品号 FROM产品 WHE
13、RE单价 =; (SELECT MAX(单 价 )FROM产品 WHERE SUBSTR(产品号, 1, 1)=“2”) ( B) SELECT DISTINCT产品号 FROM产品 WHERE单价 =; (SELECT MIN(单价 )FROM产品 WHERE SUBSTR(产品号, 1, 1)=“2”) ( C) SELECT DISTINCT产品号 FROM产品 WHERE单价 =ANY; (SELECT单价 FROM产品 WHERE SUBSTR(产品号, 1, 1)=“2”) ( D) SELECT DISTINCT产品号 FROM产品 WHERE单价 =SOME; (SELECT单
14、价 FROM产品 WHERE SUBSTR(产品号, 1, 1)=“2”) 30 SQL语言的查询语句是 ( A) INSFRT ( B) UPDATE ( C) DELETE ( D) SELECT 31 SQL的 SELECT语句中, “HAVING”用来筛选满足条件的 ( A)列 ( B)行 ( C)关系 ( D)分组 32 在 Visual FoxPro中,假设教师表 T(教师号,姓名,性别,职称,研究生导师 )中,性别是 C型字段,研究生导师是 L型字段。若要查询 “是研究生导师的女老师 ”信息,那么 SQL语句 “SELECT*FROM T WHERE”中的 应是 ( A)研究生导
15、师 AND 性别 =“女 ” ( B)研究生导师 OR 性别 =“女 ” ( C)性别 =“女 ”AND 研究生导师 = F ( D)研究生导师: T OR 性别 =女 33 查询学生选修课程成绩小于 60分的学号,正确的 SQL语句是 ( A) SELECT DISTINCT 学号 FROM SC WHERE “成绩 ”=70 OR成绩 =70 OR=70 AND=1982 03 20AND性别 =“男 ”,而 OR表示的是或运算,即满足连接条件中的任意一个即可,与题目要求不符。 【知识模块】 关系数据库标准语言 SQL 12 【正确答案】 D 【试题解析】 本题考查 select语句的用法
16、。要求计算刘明同学选修的所有课程的平均成 绩,利用 AVG()函数求得成绩字段的平均值,查询的数据源为学生和课程两个表,所以 FROM后面要跟这两个表名。以同时满足 “学生学号 =选课学号 ”和 “姓名 =“刘明 ”为筛选记录的条件。 【知识模块】 关系数据库标准语言 SQL 13 【正确答案】 B 【试题解析】 题干要求对各专业计算平均分,所以先要把不同专业的学生进行分组,然后再计算平均分。其中, SQL SELECT 中的 GROUP BY短句用于对查询结果进行分组,利用 AVG()函数求得指定字段的平均值,其中 “GROUP BY1, ”表示按输出 结果的第一个字段进行分组。 【知识模块
17、】 关系数据库标准语言 SQL 14 【正确答案】 D 【试题解析】 题目中给出的选项都是采用嵌套查询实现题目要求。题干中要求对课程号为 “101”的学生进行查询,所以内外查询中都会用到条件 “课程号 =“101”,其中 ALL表示所有的结果。 【知识模块】 关系数据库标准语言 SQL 15 【正确答案】 D 【试题解析】 元组是二维表中的一行,表示一个实体的所有属性的集合。在Visaul FoxPro中,元组被称为记录。 SQL SELECT中的 HAVING短语必须跟随GR0uP BY使用,它用来限定分组必须满足的条件,进一步筛选满足条件的元组。 【知识模块】 关系数据库标准语言 SQL
18、16 【正确答案】 B 【试题解析】 SELECT查询命令的使用非常灵活,用它可以构造各种各样的查询。 SQL查询语句可以从表中指定不同字段输出,指定字段的输出次序,即列的次序可以重新排列,不需要与原数据表一致。 SQL的查询子句可以包含表中的表达式以及表的别名。如果 FROM短语中引用的两个表有同名的列,则 SELECT短语引用它们时必须使用表名前缀加以限定 。 【知识模块】 关系数据库标准语言 SQL 17 【正确答案】 B 【试题解析】 本题考查查询结果的去向。若在 SELECT语句中使用 INTO DBF TABLE短语,则可以将查询的结果存放到表中,该表是自由表。 【知识模块】 关系
19、数据库标准语言 SQL 18 【正确答案】 D 【试题解析】 一个学生的出生地,要么存 “北京 ”,要么在 “上海 ”,所以两者的关系是 “或 ”,用关键字 or。 【知识模块】 关系数据库标准语言 SQL 19 【正确答案】 D 【试题解析 】 本题考查 BETWEEN AND的含义, BETWEENAND的意思是 “在 和 之间 ”,表示取 和 之间的数,且包括两个数值表达式值在内。 【知识模块】 关系数据库标准语言 SQL 20 【正确答案】 A 【试题解析】 SQL查询语句中,使用 GROUP BY短语对查询结果进行分组。而HAVING短语必须跟随 GROUP BY使用,它用来限定分组
20、必须满足的条件,并且与 WHERE不矛盾,在查询中先用 WHERE子句限定元组。有 WHERE子句时 , GROUPBY子句一般放在其后。 【知识模块】 关系数据库标准语言 SQL 21 【正确答案】 C 【试题解析】 本题考查 SQL查询的几个特殊选项。在 SOL-SELECT语句中,DISTINCT关键词用于消除查询结果中的重复记录。 【知识模块】 关系数据库标准语言 SQL 22 【正确答案】 D 【试题解析】 SQL具备计算方式的检索,通过计数函数 COUNT()可以得到评委的人数,歌手平均分的计算应该是 “评委总数 -2”,即 COUNT(*)-2,而 SUM()函数用于求和,所以排
21、除 选项 A)和 B)。因为是计算歌手的平均分,应该按歌手号进行分组,使用 GROUP BY短语可以对记录进行分组。 【知识模块】 关系数据库标准语言 SQL 23 【正确答案】 B 【试题解析】 SELECT查询命令的使用非常灵活,用它可以构造各种各样的查询。本题中给出的查询语句的功能是检索出最后得分不大于 9 00或者不小于8 00,即小于或等于 9 00和大于或等于 8 00的歌手记录。 【知识模块】 关系数据库标准语言 SQL 24 【正确答案】 B 【试题解析】 由题目中给出的 “REPLACE歌手最后得分 WITHa2”语句可知,数据通过数组 a进行传递,因此 SOL查询的输出去向
22、应为数组,所以选项C)、 D)不符合。查询输出中表示输出到数组的短语为 “INTO ARRAY”。 【知识模块】 关系数据库标准语言 SQL 25 【正确答案】 A 【试题解析】 题干中的结果是结果是检索出最后得分大于歌手号第一个数字为“2”的所有歌手的歌手号,冈为要人于所有第一个数字为 “2”的歌手的最后得分,只要满足大于第一个数字为 “2”的歌手最后得分即可, MAX函数可用来求最高分。 【知识模 块】 关系数据库标准语言 SQL 26 【正确答案】 B 【试题解析】 SQL查询语句中使用 GROUP BY短语用于对查询结果进行分组。而 HAVING短语必须跟随 GROUP BY使用,它用
23、来限定分组必须满足的条件,并且与 WHERE子句不矛盾,在查询中先用 WHERE子句限定元组。其中有WHERE子句时, GROUP BY子句一般放在其后。计算平均值的函数表达式为AVG()。 【知识模块】 关系数据库标准语言 SQL 27 【正确答案】 D 【试题解析】 SQL查询语句中使用 GROUP BY短语对查询结果进行分组。其中,有 wHERE子句时, GROUP BY子句一般放在其后。计算平均值的函数表达式为 AVG()。 【知识模块】 关系数据库标准语言 SQL 28 【正确答案】 D 【试题解析】 题目中给出的四个选项为利用 SQL谓词查询实现题干要求,正确的语句应该是: SEL
24、ECT学号,姓名,性别 FROM S WHERE NOT EXISTS: (SELECT*FROM SC WHERE SC学号 =S学号 AND成绩 =85)。 【知识模块】 关系数据库标准语言 SQL 29 【正确答案】 A 【试题解析】 本题考查 select语句的使用。题目中的 SELECT语句的含义是;选出不重复的单价大于等于所有产品号第一个数字为 2的产品单价的产品号。所以与之含义相同的查询语句是选项 A)。 【知识模块】 关系数据库标准语言 SQL 30 【正确答案】 D 【试题解析】 SQL的查询 语句是 SELECT, INSERT是插入语句, UPDATE是更新语句, DEL
25、ETE是删除语句。 【知识模块】 关系数据库标准语言 SQL 31 【正确答案】 D 【试题解析】 本题考查 “HAVING”短语的含义。在 SOL的 SELECT语句中,GROUP BY,分组字段 2HAVING 分组限定条件 ,可以按一列或多列分组,还可以使用 HAVING进一步限定分组的条件。 HAvING子句总是跟在 GROUPBY子句之后,不可以单独使用。 【知识模块】 关系数据库标准语言 SQL 32 【正确答案】 A 【试题解析】 根据题意,查询应该同时满足两个条件,即 “研究生导师 ”和 “女老师 ”,两个条件应该用 AND连接,故选项 B)和选项 C)错误;由于 “研究生导师
26、 ”字段是逻辑型,对应表达式应写为 “研究生导师 = T ”或者 “研究生导师 ”。 【知识模块】 关系数据库标准语言 SQL 33 【正确答案】 C 【试题解析】 查询条件 “课程成绩小于 60分 ”对应的条件表达式应该书写为 “成绩。 【知识模块】 关系数据库标准语言 SQL 35 【正确答案】 A 【试题解析】 如果查询条件的值是在什么范围之内,可以使用BETWEENAND 运算 【知识模块】 关系数据库标准语言 SQL 36 【正确答案】 C 【试题解析】 查询空值时要使用 IS NuLL,而 =NULL是无效的,因为空值不是一个确定的值,所以不能用 “=”这样的运算符进行比较。 【知
27、识模块】 关系数据库标准语言 SQL 37 【 正确答案】 D 【试题解析】 选项 A)中,使用 EXISTS谓词来检查子查询中是否有结果返回,它的查询过程是:首先在外查询中,从 S表中取出第一条记录,再在内查询中,针对该记录,在 SC表中逐条记录判断是否存在符合 where条件 (即 “选修 C2课程号的学生 ”)的记录,如果存在,则从外查询的 S表中查找出该记录对应的 “姓名 ”值;然后依次类推,从 s表中取出第二条记录,在内查询中与 SC表中的所有记录进行比较,直到将 s表中的所有记录都处理完毕。选项 B)是嵌套查询,先在内查询中从 SC表中获得选修了 C2课程号的学生的 “学号 ”,再
28、在外查询中从 S表中查找出这些 “学号 ”对应学生的 “姓名 ”,由于选修了 C2课程号的学生可能不止一个,因此在内查询中获得的 “学号 ”是一个集合,因此应该使用运算符 IN。 选项 c)是联接查询,将 S表和 SC表以 “学号 ”字段相等为条件进行联接,查找出选修了 C2课程号的学生。 【知识模块】 关系数据库标准语言 SQL 38 【正确答案】 A 【试题解析】 SQL SELECT语句中 INTO TABLE短语和 INTO DBF短语都可用来定义将查询结果存放到永久表中。另外, INTO ARRAY将查询结 果存放到数组, INTO CURSOR将查询结果存放到临时表, TO FIL
29、E将查询结果存放到文本文件中。 【知识模块】 关系数据库标准语言 SQL 39 【正确答案】 C 【试题解析】 通过在 SELECT语句中加入 ORDER BY可将查询结果排序,可以按升序和降序排序,命令格式如下: ORDER BYASCIDESC,排序字段 2ASC DESC 。 ASC表示按升序排序, DESC表示按降序排序,可以按一列或多列排序,升序是默认的排列方式。如果短语中指定多个字段,则依次按自左向右的顺序进行排序。 【知识模块】 关系数据库标准语言 SQL 40 【正确答案】 C 【试题解析】 本题考查查询结果的去向。若在 SELECT语句中使用 INTO DBF TABLE短语,则可以将查询的结果存放到表中,该表是自由表。所以应选 C。 【知识模块】 关系数据库标准语言 SQL