1、国家二级 VF机试(关系数据库标准语言 SQL)模拟试卷 16及答案与解析 一、选择题 1 SQL的 SELECT语句中, “HAVING”用来筛选满足条件的 ( A)列 ( B)行 ( C)关系 ( D)分组 2 在 Visual FoxPro中,假设教师表 T(教师号,姓名,性别,职称,研究生导师 )中,性别是 C型字段,研究生导师是 L型字段。若要查询 “是研究生导师的女老师 ”信息,那么 SQL语句 “SELECT*FROM T WHERE逻辑表达式 ”中的逻辑表达式应是 ( A)研究生导师 AND 性别 =“女 “ ( B)研究生导师 OR 性别 =“女 “ ( C)性别 =“女 “
2、 AND 研究生导师 = F ( D)研究生导师 = T OR 性别 =女 3 查询学生选修课程成绩小于 60分的学号,正确的 SQL语句是 ( A) SELECT DISTINCT 学号 FROM SC WHERE“成绩 “ 60 ( B) SELECT DISTINCT 学号 FROM SC WHERE 成绩 “60“ ( C) SELECT DISTINCT 学号 FROM SC WHERE 成绩 60 ( D) SELECT DISTINCT“学 号 “FROM SC WHERE“成绩 “ 60 4 查询学生表 S的全部记录并存储于临时表文件 one中的 SQL命令是 ( A) SEL
3、ECT*FROM 学生表 INTO CURSOR one ( B) SELECT*FROM 学生表 TO CURSOR one ( C) SELECT*FROM 学生表 INTO CURSOR DBF one ( D) SELECT(FROM 学生表 TO CURSOR DBF one 5 查询成绩在 70分至 85分之间学生的学号、课程号和成绩,正确的 SQL语句是 ( A) SELECT 学号,课程号,成绩 FROM SC WHERE成绩 BETWEEN 70 AND 85 ( B) SELECT 学号,课程号,成绩 FROM SC WHERE成绩 =70 OR成绩 =85 ( C) SE
4、LECT 学号,课程号,成绩 FROM SC WHERE成绩 =70 OR =85 ( D) SELECT 学号,课程号,成绩 FROM SC WHERE成绩 =70 AND =85 6 查询有选课记录,但没有考试成绩的学生的学号和课程号,正确的 SQL语句是 ( A) SELECT 学号,课程号 FROM SC WHERE 成绩 =“ ( B) SELECT 学号,课程号 FROM SC WHERE 成绩 =NULL ( C) SELECT 学号,课程号 FROM SC WHERE 成绩 IS NULL ( D) SELECT 学号,课程号 FROM SC WHERE 成绩 7 查询选修 C
5、2课程号的学生姓名,下列 SQL语句中错误是 ( A) SELECT 姓名 FROM S WHERE EXISTS (SELECT*FROM SC WHERE学号 =S学号 AND课程号 =C2) ( B) SELECT 姓名 FROM S WHERE 学号 IN (SELECT 学号 FROM SC WHERE 课程号 =C2) ( C) SELECT 姓名 FROM S JOIN SC ON S学号 =SC学号 WHERE课程号 =C2 ( D) SELECT 姓名 FROM S WHERE 学号 = (SELECT 学号 FROM SC WHERE 课程号 =C2) 8 在 SQL SE
6、LECT语句中与 INTO TABLE等价的短语是 ( A) INTO DBF ( B) TO TABLE ( C) INTO FORM ( D) INTO FILE 9 若 SQL语句中的 ORDER BY短语中指定了多个字段,则 ( A)依次按自右至左的字段顺序排序 ( B)只按第一个字段排序 ( C)依次按自左至右的字段顺序排序 ( D)无法排序 10 与 “SELECT*FROM 教师表 INTO DBF A”等价的语句是 ( A) SELECT*FROM 教师表 TO DBF A ( B) SELECT*FROM 教师表 TO TABLE A ( C) SELECT*FROM 教师表
7、 INTO TABLE A ( D) SELECT*FROM 教师表 INTO A 11 与 “SELECT*FROM 教师表 INTO DBF A”等价的语句是 ( A) SELECT*FROM 教师表 TO DBF A ( B) SELECT*FROM 教师表 TO TABLE A ( C) SELECT*FROM 教师表 INTO TABLE A ( D) SELECT*FROM 教师表 INTO A 12 “教师表 ”中有 “职工号 ”、 “姓名 ”、 “工龄 ”和 “系号 ”等字段, “学院表 ”中有 “系名 ”和 “系号 ”等字段,计算 “计算机 ”系教师总数的命令是 ( A) S
8、ELECT COUNT(*)FROM 教师表 INNER JOIN 学院表; ON 教师表系号 =学院表系号 WHERE 系名 =“计算机 “ ( B) SELECT COUNT(*)FROM 教师表 INNER JOIN 学院表; ON 教师表系号 =学院表系号 ORDER BY 教师表系号; HAVING 学院表系名 =“计算机 “ ( C) SELECT SUM(*)FROM 教师表 INNER JOIN 学院表; ON 教师表系号 =学院表系号 GROUP BY 教师表系号; HAVING 学院表系名 =“计算机 “ ( D) SELECT SUM(*)FROM 教师表 INNER J
9、OIN 学院表; ON 教师表系号 =学院表系号 ORDER BY 教师表系号; HAVING 学院表系名 =“计算机 “ 13 “教师表 ”中有 “职工号 ”、 “姓名 ”、 “工龄 ”和 “系号 ”等字段, “学院表 ”中有 “系名 ”和 “系号 ”等字段,求教师总数最多的系的教师人数,正确的命令序列是 ( A) SELECT 教师表系号, COUNT(*)AS 人数 FROM 教师表,学院表; GROUP BY 教师表系号 INTO DBF TEMP SELECT MAX(人数 )FROM TEMP ( B) SELECT 教师表系号, COUNT(*)FROM 教师表,学院表; WHE
10、RE 教师表系号 =学院表系号 GROUP BY 教师表系号 INTO DBF TEMP SELECT MAX(人数 )FROM TEMP ( C) SELECT 教师表系号, COUNT(*)AS 人数 FROM教师表,学院表; WHERE 教师表系号 =学院表系号 GROUP BY 教师表系号 TO FILE TEMP SELECT MAX(人数 )FROM TEMP ( D) SELECT 教师表系号, COUNT(*)AS 人数 FROM 教师表,学院表; WHERE 教师表系号 =学院表系号 GROUP BY 教师表系号 INTO DBF TEMP SELECT MAX(人数 ) F
11、ROM TEMP 14 查询尚未最后确定订购单的有关信息的正确命令是 ( A) SELECT名称,联系人,电话号码,订单号 FROM客户,订购单 WHERE客户客户号 =订购单客户号 AND订购日期 IS NULL ( B) SELECT名称,联系人,电话号码,订单号 FROM客户,订购单 WHERE客户 客户号 =订购单客户号 AND订购日期 =NULL ( C) SELECT名称,联系人,电话号码,订单号 FROM客户,订购单 FOR客户客户号 =订购单客户号 AND订购日期 IS NULL ( D) SELECT名称,联系人,电话号码,订单号 FROM客户,订购单 FOR客户客户号 =订
12、购单客户号 AND订购日期 =NULL 15 查询订购单的数量和所有订购单平均金额的正确命令是 ( A) SELECT COUNT(DISTINCT订单号 ), AVG(数量 *单价 ) FROM产品 JOIN订购单名细 ON产品产品号 =订购单 名细产品号 ( B) SELECT COUNT(订单号 ), AVG(数量木单价 ) FROM产品 JOIN订购单名细 ON产品产品号 =订购单名细产品号 ( C) SELECT COUNT(DISTINCT订单号 ), AVG(数量 (单价 ) FROM产品,订购单名细 ON产品产品号 =订购单名细产品号 ( D) SELECT COUNT(订单号
13、 ), AVG(数量 *单价 ) FROM产品,订购单名细 ON产品产品号 =订购单名细产品号 16 查询第一作者为 “张三 ”的所有书名及出版社,正确的 SQL语句是 ( A) SELECT 书名,出版社 FROM 图书 WHERE第一作者 =张三 ( B) SELECT 书名,出版社 FROM 图书 WHERE第一作者 =“张三 “ ( C) SELECT 书名,出版社 FROM 图书 WHERE“第一作者 “=张三 ( D) SELECT 书名,出版社 FROM 图书 WHERE“第一作者 “=“张三 “ 17 查询尚未归还的图书编号和借书日期,正确的 SQL语句是 ( A) SELEC
14、T 图书编号,借书日期 FROM 借阅 WHERE 还书目期 =“ ( B) SELECT 图书编号,借书日期 FROM 借 阅 WHERE 还书日期 =NULL ( C) SELECT 图书编号,借书日期 FROM 借阅 WHERE 还书日期 IS NULL ( D) SELECT 图书编号,借书日期 FROM 借阅 WHERE 还书日期 18 查询 “读者 ”表的所有记录并存储于临时表文件 one中的 SQL语句是 ( A) SELECT*FROM读者 INTO CURSOR one ( B) SELECT*FROM读者 TO CURSOR one ( C) SELECT*FROM读者 I
15、NTO CURSOR DBF one ( D) SELECT*FROM读者 TO CURSOR DBF one 19 查询单位名称中含 “北京 ”字样的所有读者的借书证号和姓名,正确的 SQL语句是 ( A) SELECT 借书证号,姓名 FROM 读者 WHERE 单位 =“北京 “ ( B) SELECT 借书证号,姓名 FROM 读者 WHERE 单位 =“北京 *“ ( C) SELECT 借书证号,姓名 FROM 读者 WHERE 单位 LIKE“北京 *“ ( D) SELECT 借书证号,姓名 FROM 读者 WHERE 单位 LIKE“北京 “ 20 SQL语句中,能够 判断
16、“订购日期 ”字段是否为空值的表达式是 ( A)订购日期 =NULL ( B)订购日期 =EMPTY ( C)订购日期 IS NULL ( D)订购日期 IS EMPTY 21 查询在 “北京 ”和 “上海 ”区域的商店信息的正确命令是 ( A) SELECT*FROM 商店 WHERE 区域名 =北京 AND 区域名 =上海 ( B) SELECT*FROM 商店 WHERE 区域名 =北京 OR 区域名 =上海 ( C) SELECT*FROM 商店 WHERE 区域名 =北京 AND上海 ( D) SELECT*FROM 商店 WHERE 区域名 =北京 OR上海 22 查询商品单价在
17、10到 50之间、并且日销售数量高于 20的商品名、单价、销售日期和销售数量,查询结果按单价降序。正确命令是 ( A) SELECT 商品名,单价,销售日期,销售数量 FROM 商品 JOIN 销售 WHERE(单价 BETWEEN 10 AND 50)AND 销售数量 20 ORDER BY 单价 DESC ( B) SELECT 商品名,单价,销售日期,销售数量 FROM 商品 JOIN销售 WHERE(单价 BETWEEN 10AND 50)AND销售数量 20 ORDE RBY 单价 ( C) SELECT 商品名,单价,销售日期,销售数量 FROM 商品,销售 WHERE(单价 BE
18、TWEEN 10 AND 50)AND销售数量 20 ON商品商品号 =销售商品号 ORDER BY单价 ( D) SELECT 商品名,单价,销售日期,销售数量 FROM 商品,销售 WHERE(单价 BETWEEN 10 AND 50)AND销售数量 20 AND 商品商品号 =销售商品号 ORDER BY 单价 DESC 23 查询销售金 额合计超过 20000的商店,查询结果包括商店名和销售金额合计。正确命令是 ( A) SELECT 商店名, SUM(销售数量 *单价 )AS 销售金额合计 FROM 商店,商品,销售 WHERE 销售金额合计 20000 ( B) SELECT 商店
19、名, SUM(销售数量 *单价 )AS销售金额合计 20000 FROM商店,商品,销售 WHERE商品商品号 =销售商品号 AND商店商店号 =销售商店号 ( C) SELECT商店名, SUM(销售数量 *单价 )AS销售金额合计 FROM商店,商品,销售 WHERE商品商品号 =销售商品号 AND商店商店号 =销售商店号 AND SUM(销售数量木单价 ) 20000 GROUP BY商店名 ( D) SELECT 商店名, SUM(销售数量枣单价 )AS 销售金额合计 FROM 商店,商品,销售 WHERE 商品商品号 =销售商品号 AND 商店商店号 =销售商店号 GROUP BY
20、商店名 HAVING SUM(销售数量 *单价 ) 20000 24 设有学生表 student(学号,姓名,性别,出生日期,院系 )、课程表 course(课程号,课程名,学时 )和选课表 score(学号, 课程号,成绩 ),查询同时选修课程号为C1和 C5课程的学生的学号,正确的命令是 ( A) SELECT学号 FROM score sc WHERE课程号 =C1AND 学号 IN; (SELECT 学号 FROM score sc WHERE 课程号 =C5) ( B) SELECT 学号 FROM score sc WHERE 课程号 =C1AND学号 =; (SELECT 学号
21、FROM score sc WHERE 课程号 =C5) ( C) SELECT 学号 FROM score sc WHERE 课程号 =C1AND 课程号 =C5 ( D) SELECT 学号 FROM score sc WHERE 课程号 =C1ORC5 25 SQL查询命令的结构是 SELECT.FROM.WHERE.GROUP BY.HAVING.ORDER BY.,其中指定查询条件的短语是 ( A) SELECT ( B) FROM ( C) WHERE ( D) ORDERBY 26 SQL查询命令的结构是 SELECT.FROM.WHERE.GROUP BY.HAVING.ORD
22、ER BY.,其中 HAVING必须配合使用的短语是 ( A) FROM ( B) GROUP BY ( C) WHERE ( D) ORDER BY 27 如果在 SQL查询的 SELECT短语中使用 TOP,则应该配合使用 ( A) HAVING短语 ( B) GROU BY短语 ( C) WHERE短语 ( D) ORDER BY短语 28 设有学生表 student(学号,姓名,性别,出生日期,院系 )、课程表 course(课程号,课程名,学时 )和选课表 score(学号,课程号,成绩 ),查询 “计算机系 ”学生的学号、姓名、学生所选课程的课程名和成绩,正确的命令是 ( A) S
23、ELECT s学号,姓名,课程名,成绩 FROM student S, score sc, course c; WHERE s学号 =sc学号, sc课程号 =c课程号,院系 =计算机系 ( B) SELECT 学号,姓名,课程名,成绩 FROM student s, score sc, course c; WHERE s学号 =sc学号 AND sc课程号 =c课程号 AND院系 =计算机系 ( C) SELECT s学号,姓名,课程名,成绩 FROM (student s JOIN score sc; ON s学号 =sc学号 )JOIN course c ON SC课程号 =c课程号;
24、WHERE 院系 =计算机系 ( D) SELECT 学号,姓名,课程名,成绩 FROM(student s JOIN score sc; ON s学号 =sc学号 ) JOIN course c ON sc课程号 =c课程号; WHERE院系 =计算机系 29 设有学生表 student(学号,姓名,性别,出生日期,院系 )、课程表 course(课程号,课程名,学时 )和选课表 score(学号 ,课程号,成绩 ),查询所修课程成绩都大于等于 85分的学生的学号和姓名,正确的命令是 ( A) SELECT 学号,姓名 FROM students WHERE NOT EXISTS (SELE
25、CT*FROM score sc; WHERE sc学号 =s学号 AND成绩 85) ( B) SELECT 学号,姓名 FROM student s WHERE NOT EXISTS (SELECT*FROM score sc; WHERE sc学号 =s学号 AND成绩 =85) ( C) SELECT 学号,姓名 FROM student s, score sc WHERE s学号 =sc学号 AND 成绩 =85 ( D) SELECT 学号,姓名 FROM student s, score sc WHERE s学号 =sc学号 AND ALL 成绩 =85 30 设有学生表 stu
26、dent(学号,姓名,性别 ,出生日期,院系 )、课程表 course(课程号,课程名,学时 )和选课表 score(学号,课程号,成绩 ),查询选修课程在 5门以上 (含 5门 )的学生的学号、姓名和平均成绩,并按平均成绩降序排序,正确的命令是 ( A) SELECT s学号,姓名,平均成绩 FROM student s, score sc WHERE s学号 =sc学号; GROUP BY s学号 HAVING COUNT(*) =5 ORDER BY平均成绩 DESC ( B) SELECT学号,姓名, AVG(成绩 )FROM student s, score sc; WHERE s学
27、号 =sc学号 AND COUNT(*) =5 GROUP BY 学号 ORDER BY 3 DESC ( C) SELECT s学号,姓名, AVG(成绩 ) 平均成绩 FROM student s, score sc; WHERE s学号 =sc学号 AND COUNT(*) =5; GROUP BY s学号 ORDER BY平均成绩 DESC ( D) SELECT s学号,姓名, AVG(成绩 ) 平均成绩 FROM student s, score sc; WHERE s学号 =sc学号; GROUP BY s学号 HAVING COUNT(*) =5 ORDER BY 3 DESC
28、 国家二级 VF机试(关系数据库标准语言 SQL)模拟试卷 16答案与解析 一、选择题 1 【正确答案】 D 【试题解析】 本题考查的是 “HAVING”短语的含义。在 SQL的 SELECT语句中, GROUP BY分组字段 1 ,分组字段 2HAVING 分组限定条件 ,可以按一列或多列分组,还可以使用 HAVING进一步限定分组的条件。 HAVING子句总是跟在 GROUP BY子句之后,不可 以单独使用。 【知识模块】 关系数据库标准语言 SQL 2 【正确答案】 A 【试题解析】 根据题意,查询应该同时满足两个条件,即 “研究生导师 ”和 “女老师 ”,两个条件应该用 AND连接,故
29、选项 B)和选项 C)错误;由于 “研究生导师 ”字段是逻辑型,对应表达式应写为 “研究生导师 = T ”或者 “研究生导师 ”。 【知识模块】 关系数据库标准语言 SQL 3 【正确答案】 C 【试题解析】 查询条件 “课程成绩小于 60分 ”对应的条件表达式应该书写为 “成绩 60”。 【知识模块】 关系数据库 标准语言 SQL 4 【正确答案】 A 【试题解析】 将查询结果保存在临时表中应使用短语 INTO CURSOR 表名。 【知识模块】 关系数据库标准语言 SQL 5 【正确答案】 A 【试题解析】 如果查询条件的值是在什么范围之内,可以使用BETWEENAND 运算。 【知识模块
30、】 关系数据库标准语言 SQL 6 【正确答案】 C 【试题解析】 查询空值时要使用 IS NULL,而 =NULL是无效的,因为空值不是一个确定的值,所以不能用 “=”这样的运算符进行比较。 【知识模块】 关系数据库标准语言 SQL 7 【正确答案】 D 【试题解析】 选项 A)中,使用 EXISTS谓词来检查子查询中是否有结果返回,它的查询过程是:首先在外查询中,从 S表中取出第一条记录,再在内查询中,针对该记录,在 SC表中逐条记录判断是否存在符合 where条件 (即 “选修 C2课程号的学生 ”)的记录,如果存在,则从外查询的 S表中查找出该记录对应的 “姓名 ”值;然后依次类推,从
31、 S表中取出第二条记录,在内查询中与 SC表中的所有记录进行比较,直到将 S表中的所有记录都处理完毕。选项 B)是嵌套查询, 先在内查询中从 SC表中获得选修了 C2课程号的学生的 “学号 ”,再在外查询中从 S表中查找出这些 “学号 ”对应学生的 “姓名 ”,由于选修了 C2课程号的学生可能不止一个,因此在内查询中获得的 “学号 ”是一个集合,因此应该使用运算符 IN。 选项 C)是联接查询,将 S表和 SC表以 “学号 ”字段相等为条件进行联接,查找出选修了 C2课程号的学生。 【知识模块】 关系数据库标准语言 SQL 8 【正确答案】 A 【试题解析】 SQL SELECT语句中 INT
32、O TABLE短语和 INTO DBF短语都可用来定义将查询结果存 放到永久表中。另外, INTO ARRAY将查询结果存放到数组, INTO CURSOR将查询结果存放到临时表, TO FILE将查询结果存放到文本文件中。 【知识模块】 关系数据库标准语言 SQL 9 【正确答案】 C 【试题解析】 通过在 SELECT语句中加入 ORDER BY可将查询结果排序,可以按升序和降序排序,命令格式如下: ORDER BY排序字段 1 ASCIDESC,排序字段 2ASCIDESC 。 ASC表示按升序排序, DESC表示按降序排序,可以按一列或多列排序,升序是默认 的排列方式。如果短语中指定多
33、个字段,则依次按自左向右的顺序进行排序。 【知识模块】 关系数据库标准语言 SQL 10 【正确答案】 C 【试题解析】 本题考查查询结果的去向。若在 SELECT语句中使用 INTO DBF TABLE表名,则可以将查询的结果存放到表中,该表是自由表。 【知识模块】 关系数据库标准语言 SQL 11 【正确答案】 C 【试题解析】 使用短语 INTODBF TABLE TableName可以将查询结果存放到永久表中 (dbf文件 )。生成的表文件是一个自由 表。所以与 “SELECT*FROM教师表 INTO DBF A”等价的是 “SEIECT*FROM教师表 INTO TABLEA”。
34、【知识模块】 关系数据库标准语言 SQL 12 【正确答案】 A 【试题解析】 由于题意中要求计算系名为 “计算机 ”的教师总数,所以 SOL语句的 WHERE子句应该为 WHERE系名 =“计算机 ”,所以正确的是选项 A)。 【知识模块】 关系数据库标准语言 SQL 13 【正确答案】 D 【试题解析】 由于 “教师表 ”与 “学院表 ”是通过 “系号 ”进行关系的连接,而选项 A)没有 WHERE子句,所以选项 A)是错误的。选项 B)中,由于接下来的 SQL语句“SELECT MAX(人数 )FROM TEMP”的字段名称为 “人数 ”,而第一条 SOL语句没有对查询的结果进行重命名,
35、会产生错误。选项 C)中的 SQL语句使用短语 INTO FILEFileName ADDITIVE可以将查询结果存放到文本文件中, FileName是文件名,默认扩展名是 txt,接下来的 SOL语句 “SEI ECT MAX(人数 )FROM TEMP”会产生错误。 【知识模块】 关系数据库标准语言 SQL 14 【正确答案】 A 【试题解析】 在 SQL SELECT查询语句中,用 where说明查询条件。在表中尚未确定的值用 NULL值表示,而 SQL中查询空值时要用 ISNULL,不能用 “=”。 【知识模块】 关系数据库标准语言 SQL 15 【正确答案】 A 【试题解析】 VFP
36、的 SELECT语句中用于内联接查询的语法是: SELECTFROM 表 1INNERJOIN表 2ON联接条件 where Count(、 )和 avg()都是 SQL中用于计算的检索函数,其中 Count用来计算记录个数,通常 应该使用 Distinct,除非对关系中的元组个数进行计算。这个题目中要求订购单的数量,显然应该对订单号计数,但订购单明细表中的订单号是有重复的(因为一份订单上可能有多种产品 ),因此应该在 count()中使用 Distinct。 AVg函数是用来计算平均值的。产品金额 =数量木单价。 【知识模块】 关系数据库标准语言 SQL 16 【正确答案】 B 【试题解析】
37、 本题考查 SELECT语句的正确应用。要查询第一作者为 “张三 ”的所有书名及出版社,那么书名及出版社是要查询的列,查询源是图书表,条件是第一作者 为 “张三 ”。 【知识模块】 关系数据库标准语言 SQL 17 【正确答案】 C 【试题解析】 在 SQL语句中,空值查询用 IS NULL。 【知识模块】 关系数据库标准语言 SQL 18 【正确答案】 C 【试题解析】 在 SQL语句中,空值查询用 IS NULL。 【知识模块】 关系数据库标准语言 SQL 19 【正确答案】 A 【试题解析】 在 SQL语句中,将查询结果保存在临时表中应使用短语 INTO CURSOR。 【知识模块】 关
38、系数据库标准语言 SQL 20 【正确答案】 D 【试题解析】 在 SQL的 WHRER子句的条件表达式中,字符串匹配的运算符是LIKE,通配符 “ ”表示 0个或多个字符,另外还有一个通配符 “_”表示一个字符。 【知识模块】 关系数据库标准语言 SQL 21 【正确答案】 C 【试题解析】 在 SQL,语句中支持空值查询,用 IS NULL表示。 【知识模块】 关系数据库标准语言 SQL 22 【正确答案】 D 【试题解析】 可以用 JOINON 语法进行超连结查询,也可以用 WHERE直接表示数据表连接条件。 ORDER BY短语表示排序, DESC短语表示降序。 【知识模块】 关系数据
39、库标准语言 SQL 23 【正确答案】 D 【试题解析】 用 WHERE表示数据表连接条件;用 GROUP BY表示分组,HAVING总是跟在 GROUP BY之后,用来限定分组,即 HAVING是用来表示选择分组的条件。 【知识模块】 关系数据库标准语言 SQL 24 【正确答案】 A 【试题解析】 本题考查 SELECT语句中 in短语的应用。 in(),括号中是子查询,返回结果集,换句话说子查询先产生结果集,然后主 查询再去结果集里去找符合要求的字段列表,符合要求的输出,反之则不输出。在选项 A)中, IN后面的子查询查找到所有课程号 =C5的学生的学号,再在这个集合中,查询课程号 =C
40、1的学生的学号。 【知识模块】 关系数据库标准语言 SQL 25 【正确答案】 C 【试题解析】 在 SQL查询语中, WHERE是说明查询条件,即选择元组的条件。 【知识模块】 关系数据库标准语言 SQL 26 【正确答案】 B 【试题解析】 在 SQL查询中, HAVING总是跟在 GROUP BY之后,用来限定分 组条件。 【知识模块】 关系数据库标准语言 SQL 27 【正确答案】 D 【试题解析】 TOP表示排序后满足条件的前几条记录。所以需要和 ORDER BY同时使用。 【知识模块】 关系数据库标准语言 SQL 28 【正确答案】 C 【试题解析】 本题考查三个表之间的联接查询。
41、在用 SELECT语句进行联接查询,要用 JOIN关键字, ON关键字是两表进行联接的字段,对于本题来说,先以s学号 =sc学号进行学生表和选课表之间联接,再以 sc课程号 =c课程号进行选课表和课程表之间的联接 。 【知识模块】 关系数据库标准语言 SQL 29 【正确答案】 A 【试题解析】 本题考查 SELECT语句中关键字 EXISTS的应用。 EXISTS是用来判断子查询中是否有或没有结果返回,当 EXISTS(查询 )有返回时,则返回真,否则返回假。 NOT EXISTS则相反。 EXISTS做为 wHERE条件时,是先对wHERE前的主查询进行查询,然后用主查询的结果一个一个的代
42、入 EXISTS的查询进行判断,如果为真则输出当前这一条主查询的结果,否则不输出。选项 A)的子查询是查询出选课表中的学号等于学生学 号并且学生成绩小于 85分的所有学生记录。而在主查询中找出所有学生的学生和姓名不在子查询集的记录就是题目的要求。 【知识模块】 关系数据库标准语言 SQL 30 【正确答案】 D 【试题解析】 本题考查 SELECT语句中分组和排序短语。在 SELECT语句中分组语使用 GROUP BY HAVING关键字,排序使用 ORDER BY短语,降序使用DESC,本题中用学号分组,用 HAVINGCOUNT(*) =5对分组进行筛选,用ORDER BY 3DESC按平均成绩降序排序。 【知识模块】 关系数 据库标准语言 SQL