1、国家二级 VF机试(关系数据库标准语言 SQL)模拟试卷 10及答案与解析 一、选择题 1 设有 S(学号,姓名,性别 )和 SC(学号,课程号,成绩 )两个表,用下列 SQL语句检索选修的每门课程的成绩都高于或等于 85分的学生的学号、姓名和性别,正确的是 ( A) SELECT学号,姓名,性别 FROM s WHERE EXISTS; (SELECT*FROM sc WIlERE sc学号 =s学号 AND成绩 85) ( D) SELECT学号,姓名、性别 FROM s WHERE NOT EXISTS; (SELECT*FROM sc WHERE sc学号 =s学号 AND成绩 =AL
2、L(SELECT单价FROM产品 WHERE SUBSTR(产品号 1, 1)=“2“)”等价的 SQL命令是 ( A) SELECT DISTINCT产品号 FROM产品 WHERE单价 =; (SELECT MAX(单价 )FROM产品 WHERE SUBSTR(产品号, 1, 1)=“2“) ( B) SELECT DISTINCT产品号 FROM产品 WHERE单价 =; (SELECT MIN(单价 )FROM产品 WIlERE SUBSTR(产品号, 1, 1)=“2“) ( C) SELECT DISTINCT产品号 FROM产品 WHERE单价 =ANY; (SELECT单价
3、FROM产品 WHERE SUBSTR(产品号, 1, 1)=“2“) ( D) SELECT DISTINCT、产品号 FROM产品 WHERE单价 =SOME; (SELECT单价 FROM产品 WHERE SUBSTR(产品号, 1, 1)=“2“) 3 SQL语言的查询语句是 ( A) INSERT ( B) UPDATE ( C) DELETE ( D) SELECT 4 SQL的 SELECT语句中, “HAVING”用来筛选满足条件的 ( A)列 ( B)行 ( C)关系 ( D)分组 5 在 Visual FoxPro中,假设教师表 T(教师号,姓名,性别,职称,研究生导师 )
4、中,性别是 C型字段,研究生导师是 L型字段。若要查询 “是研究生导师的女老师 ”信息,那么 SQL语句 “SELECT*FROM T WHERE”中的 应是 ( A)研究生导师 AND 性别 =“女 “ ( B)研究生导师 OR 性别 =“女 “ ( C)性别 =“女 “ AND 研究生导师 = F ( D)研究生导师 = T OR 性别 =女 6 查询学生选修课程成绩小于 60分的学号,正确的 SQL语句是 ( A) SELECT DISTINCT学号 FROM SC WHERE“成绩 “=70 OR 成绩 =70 OR=70 AND20 ORDER BY单价 DESC ( B) SELE
5、CT商品名,单价,销售日期,销售数量 FROM商品 JOIN销售 WHERE(单价 BETWEEN IOAND 50)AND销售数量 20 ORDE RBY单 价 ( C) SELECT商品名,单价,销售日期,销售数量 FROM商品,销售 WHERE(单价 BETWEEN 10 AND 50)AND销售数量 20 ON商品商品号 =销售商品号 ORDER BY单价 ( D) SELECT商品名,单价,销售日期,销售数量 FROM商品,销售 WHERE(单价 BETWEEN 10 AND 50)AND销售数量 20 AND商品商品号 =销售商品号 ORDER BY单价 DESC 26 查询销售金
6、额合计超过 20000的商店,查 询结果包括商店名和销售金额合计。正确命令是 ( A) SELECT商店名, SUM(销售数量 *单价 )AS销售金额合计 FROM商店,商品,销售 WHERE销售金额合计 20000 ( B) SELECT商店名, SUM(销售数量 *单价 )AS销售金额合计 20000 FROM商店,商品,销售 WHERE商品商品号 =销售商品号 AND商店商店号 =销售商店号 ( C) SELECT商店名, SUM(销售数量木单价 )AS销售金额合计 FROM商店,商品,销售 WHERE商品商品号 =销售商品号 AND商店商店号 =销售商店号 AND SUM(销售数量 *
7、单价 )20000 GROUP BY商店名 ( D) SELECT商店名, SUM(销售数量木单价 )AS销售金额合计 FROM商店,商品,销售 WHERE商品商品号 =销售商品号 AND商店商店号:销售商店号 GROUP BY商店名 HAVING SUM(销售数量 *单价 )20000 27 设有学生表 student(学号,姓名,性别,出生日期,院系 )、课程表 course(课程号,课程名,学时 )和选课表 score(学号,课程号,成绩 ),查询同时选修课程号为C1和 C5课程的学生的学号,正确的命令是 ( A) SELECT学号 FROM score sc WHERE课程号 =C1A
8、ND学号 IN: (SELECT学号 FROM score SC WHERE课程号 =C5) ( B) SELECT学号 FROM scoresc WHERE课程号 =C1AND学号 =; (SELECT学号 FROM score sc WHERE课程号 =C5) ( C) SELECT学号 FROM score sc WHERE课程号 =C1AND课程号 =C5 ( D) SELECT学号 FROM SCOre sc WHERE课程号 =C1ORC5 国家二级 VF机试(关系数据库标准语言 SQL)模拟试卷 10答案与解析 一、选择题 1 【正确答案】 D 【试题解析】 题目中给出的四个选项
9、为利用 SQL谓词查询实现题干要求,正确的语句应该是: SELECT学号,姓名,性别 FROM S WHERE NOT EXISTS; (SELECT*FROM SC WHERE SC学号 =S学号 AND成绩 =85)。 【知识模块】 关系数据库标准语言 SQL 2 【正确答案】 A 【试题解析】 本题考查 select语句的使用。题目中的 SELECT语句的含义是:选出不重复的单价大于等于所有产品号第一个数字为 2的产品单价的产品号。所以与之含义相同的查询语句是选项 A。 【知识模块】 关系数据库标准语言 SQL 3 【正确答案】 D 【试题解析】 SQL的查询语句是 SELECT, IN
10、SERT是插入语句, UPDATE是更新语句, DELETE是删除语句。 【知识模块】 关系数据库标准语言 SQL 4 【正确答案】 D 【试题解析】 本题考查 “HAVING”短语的含义。在 SQL的 SELECT语句中,GROUP BY,分组字段 2HAVING 分组限定条件 ,可以按一列或多列分组,还可以使用 HAVING进一步限定分组的条件。 HAVING子 句总是跟在 GROUPBY子句之后,不可以单独使用。 【知识模块】 关系数据库标准语言 SQL 5 【正确答案】 A 【试题解析】 根据题意,查询应该同时满足两个条件,即 “研究生导师 ”和 “女老师 ”,两个条件应该用 AND连
11、接,故选项 B和选项 C错误;由于 “研究生导师 ”字段是逻辑型,对应表达式应写为 “研究生导师 = T ”或者 “研究生导师 ”。 【知识模块】 关系数据库标准语言 SQL 6 【正确答案】 C 【试题解析】 查询条件 “课程成绩小于 60分 ”对应的条件表达式应该书写为 “成绩。 【知识模块】 关系数据库标准语言 SQL 8 【正确答案】 A 【试题解析】 如果查询条件的值是在什么范围之内、可以使用BETWEEN AND 运算。 【知识模块】 关系数据库标准语言 SQL 9 【正确答案】 C 【试题解析】 查询空值时要使用 IS NULL,而 =NULL,是无效的,因为空值不是一个确定的值
12、, 所以不能用 “=”这样的运算符进行比较。 【知识模块】 关系数据库标准语言 SQL 10 【正确答案】 D 【试题解析】 选项 A中,使用 EXISTS谓词来检查子查询中是否有结果返回,它的查询过程是:首先在外查询中,从 S表中取出第一条记录,再在内查询中,针对该记录,在 SC表中逐条记录判断是否存在符合 where条件 (即 “选修 C2课程号的学生 ”)的记录,如果存在,则从外查询的 S表中查找出该记录对应的 “姓名 ”值;然后依次类推,从 S表中取出第二条记录,在内查询中与 SC表中的所有记录进行比较,直到将 S表中的 所有记录都处理完毕。选项 B是嵌套查询,先在内查询中从 SC表中
13、获得选修了 C2课程号的学生的 “学号 ”,再在外查询中从 S表中查找出这些 “学号 ”对应学生的 “姓名 ”,由于选修了 C2课程号的学生可能不止一个,因此在内查询中获得的 “学号 ”是一个集合,因此应该使用运算符 IN。选项 C是联接查询,将 S表和 SC表以 “学号 ”字段相等为条件进行联接,查找出选修了 C2课程号的学生。 【知识模块】 关系数据库标准语言 SQL 11 【正确答案】 A 【试题解析】 SQL SELECT语句中 INTO TABLE短语和 INTO DBF短语都可用来定义将查询结果存放到永久表中。另外, INT0 ARR AY将查询结果存放到数组, INTO(=URS
14、OR将查询结果存放到临时表, TO FILE将查询结果存放到文本文件中。 【知识模块】 关系数据库标准语言 SQL 12 【正确答案】 C 【试题解析】 通过在 SELECT语句中加入 ORDER BY可将查询结果排序,可以按升序和降序排序,命令格式如下: oRDER BYASCIDESC,排序字段 2ASClDESC 。 ASC表示按升序排序, DESC表示按降序排序,可以按一列或多列排序,升序是默认的排列方式。如果短语中指定多个字段,则依次按自左向右的顺序进行排序。 【知识模块】 关系数据库标准语言 SQL 13 【正确答案】 C 【试题解析】 本题考查查询结果的去向。若在 SELECT语
15、句中使用 INTO DBF TABLE短语,则可以将查询的结果存放到表中,该表是自由表。所以应选 C。 【知识模块】 关系数据库标准语言 SQL 14 【正确答案】 C 【试题解析】 使用短语 INTO DBFITABLE TableName可以将查询结果存放到永久表中 (dbf文件 )。生成的表文件是一个自由表。所以与 “SELECT*FROM教师表 INTO DBF A”等价的是 “SELECT*FROM教师表 INTO TABLE A”。 【知识模块】 关系数据库标准语言 SQL 15 【正确答案】 A 【试题解析】 由于题意中要求计算系名为 “计算机 ”的教师总数,所以 SQL语句的
16、WHERE子句应该为 WHERE系名 =“计算机 ”,所以正确的是选项 A。 【知识模块】 关系数据库标准语言 SQL 16 【正确答案】 D 【试题解析 】 由于 “教师表 ”与 “学院表 ”是通过 “系号 ”进行关系的连接,而选项 A没有 WHERE子句,所以选项 A是错误的。选项 B中,由于接下来的 SQL语句“SELECTMAX(人数 )FROM TEMP”的字段名称为 “人数 ”,而第一条 sQL语句没有对查询的结果进行重命名,会产生错误。选项 C中的 SQL语句使用短语 INTO FILE FileNameADDITIVEl可以将查询结果存放到文本文件中, FileName是文件名
17、,默认扩展名是 txt,接下来的 SQL语句 “SELECT。 MAX(人数 )FROM TEMP”会产生错误。 【知识模块】 关系数据库标准语言 SQL 17 【正确答案】 A 【试题解析】 在 SQL SELECT查询语句中,用 where说明查询条件。在表中尚未确定的值用 NULL值表示,而 SQL中查询空值时要用 IS NULL,不能用 “=”。 【知识模块】 关系数据库标准语言 SQL 18 【正确答案】 A 【试题解析】 VFP的 SQL SELECT中内联接查询的语法是: SELECTFROM 表 1INNERJOIN表 2 ON联接条件 where Count()和 avg()
18、都是 SQL中用于计算的检索函数,其中 Count用来计算记录个数,通常应该使用 Distinct除非对关系中的元组个数进行计算。这个题目中要求订购单的数量,显然应该对订单号计数,但订购单明细表中的订单号是有重复的(因为一份订单上可能有多种产品 ),因此应该在 countt()中使用 Distinct。 Avg函数是用来计算平均值的。产品金额 =数量 *单价。 【知识模块】 关系数据库标准语言 SQL 19 【正确答案】 B 【试题解析】 本题考查 SELECT。语句的正确应用。要查询第一作者为 “张三 ”的所有书名及出版社,那么书名及出版社是要查询的列,查询源是图书表,条件是第一作者为 “张
19、三 ”。所以应选 B。 【知识模块】 关系数据库标准语言 SQL 20 【正确答案】 C 【试题解析】 在 SQL语句中,空值查询用 IS NULL。 【知识模块】 关系数据库标准语言 SQL 21 【正确答案】 C 【试题解析】 在 SQL语句中,空值查询用 IS NULL。 【知识模块】 关系数据库标准语言 SQL 22 【正确答案】 A 【试题解析】 在 sQL语句中,将查询结果保 存在临时表中应使用短语 INTO CURSOR。 【知识模块】 关系数据库标准语言 SQL 23 【正确答案】 D 【试题解析】 在 SQL的 WHRER子句的条件表达式中,字符串匹配的运算符是 LIKE,通
20、配符 “ ”表示 0个或多个字符,另外还有一个通配符 “”表示一个字符。 【知识模块】 关系数据库标准语言 SQL 24 【正确答案】 C 【试题解析】 在 SQL语句中支持空值查询,用 IS NLILL表示。 【知识模块】 关系数据库标准语言 SQL 25 【正确答案】 D 【试题解析】 可以用 JOINON 语法进行超连结查询,也可以用 WHERE直接表示数据表连接条件。 ORDER BY短语表示排序, DESC短语表示降序。 【知识模块】 关系数据库标准语言 SQL 26 【正确答案】 D 【试题解析】 用 WHERE表示数据表连接条件;用 GROUP BY表示分组。HAVING总是跟在 GROUP BY之后,用来限定分组,即 HAVING是用来表示选择分组的条件。 【知识模块】 关系数据库标准语言 SQL 27 【正确答案】 A 【试题解析】 本题考查 SEI+ECT语句中 in短语的应用。 in(),括号中是子查询,返回结果集,换句话说子查询先产生结果集,然后主查询再去结果集里去找符合要求的字段列表符合要求的输出,反之则不输出。在选项 A中, IN后面的子查询查找到所有课程号 =C5的学生的学号,再在这个集合中,查询课程号 =Cl的学生的学号。 【知识模块】 关系数据库标准语言 SQL