国家二级VF机试(关系数据库标准语言SQL)模拟试卷20
选择题
1.使用如下三个数据表
学生表:S(学号,姓名,性别,出生日期,院系)
课程表:C(课程号,课程名,学时)
选课成绩表:SC(学号,课程号,成绩)
在上述表中,出生日期数据类型为日期型,学时和成绩为数值型,其他均为字符型。
用SQL命令查询选修的每门课程的成绩都高于或等于85分的学生的学号和姓名,正确的命令是(A)
A. SELECT 学号,姓名 FORM S WHERE NOT EXISTS;
(SELECT*FROM SC WHERE SC.学号=S.学号AND成绩<85)
B. SELECT 学号,姓名 FORM S WHERE NOT EXISTS;
(SELECT*FROM SC WHERE SC.学号=S.学号 AND 成绩>=85)
C. SELECT 学号,姓名 FORM S,SC;
WHERE S.学号=SC.学号 AND 成绩>=85
D. SELECT 学号,姓名 FORM S,SC;
WHERE S.学号=SC.学号.AND ALL 成绩>=85
解析:NOT EXIS等价于NOT IN,是用来查询出不存在于子查询中的记录。选项B)用NOT EXISTS检查出的是不大于或等于85分的成绩范围内学生,正好与题意相反,所以是错误的;选项C)只要有一门成绩大于或等于85分,就能被查询出来。题中要求是每门成绩都要高于或等于85分:选项D)查询语句错误,不能使用ALL,短语。
2.基于学生表S和学生选课表SC两个数据表,它们的结构如下:
S(学号,性别,年龄)其中学号、姓名和性别为C型字段,年龄为N型字段。
SC(学号,课程号,成绩),其中学号和课程号为C型字段,成绩为N型字段(初始为空值)。查询成绩在70分至85分之间学生的学号、课程号和成绩,正确的SQL语句是(A)
A. SELECT 学号,课程号,成绩 FROM sc WHERE 成绩 BETWEEN 70 AND 85
B. SELECT 学号,课程号,成绩 FROM sc WHERE 成绩>=70 OR 成绩<=85
C. SELECT 学号,课程号,成绩 FROM sc WHERE 成绩>=70 OR<=85
D. SELECT 学号,课程号,成绩 FROM sc WHERE 成绩>=70 AND<=85
解析:SQL SELECT语句中使用特殊运算符包括BETWEEN NumberA AND NumberB,该运算符表示该查询的条件是在NumberA与NumberB之内,相当于用AND连接的一个逻辑表达式。
3.基于图书表、读者和借阅表三个数据库表,它们的结构如下:
图书(图书编号,书名,第一作者,出版社):图书编号、书名、第一作者和出版社为C型字段,图书编号为主关键字;
读者(借书证号,单位,姓名,职称):借书证号、单位、姓名、职称为C型字段,借书证号为主关键字;
借阅(借书证号,图书编号,借书日期,还书日期):借书证号和图书编号为C型字段,借书日期和还书日期为D型字段,还书日期默认值为NULL,借书证号和图书编号共同构成主关键字。
查询尚未归还的图书编号和借书日期,正确的SQL语句是(C)
A. SELECT 图书编号,借书日期 FROM 借阅 WHERE 还书日期=\\
B. SELECT 图书编号,借书日期 FROM 借阅 WHERE 还书日期=NULL
C. SELECT 图书编号,借书日期 FROM 借阅 WHERE 还书日期 IS NULL
D. SELECT 图书编号,借书日期 FROM 借阅 WHERE 还书日期
解析:本题考察的知识点是SQL查询。由于还书日期默认为空,一旦读者归还了图书,则还书日期就不再为空,所以可以通过还书日期是否为空来判断是否已还书,而判断字段是否为空用is null。所以本题的答案为选项C)。
4.使用如下三个表:
商店(商店号,商店名,区域名,经理名)
商品(商品号,商品名,单价)
销售(商店号,商品号,销售日期,销售数量)
查询销售金额合计超过20000的商店,查询结果包括商店名和销售金额合计。正确的命令是(D)
A. SELECT 商店名,SUM(销售数量*单价)As 销售金额合计 FROM 商店,商品,销售 WHERE 销售金额合计 20000
B. SELECT 商店名,SUM(销售数量*单价)As 销售金额合计>2000 FROM 商店,商品,销售 WHERE商品.商品号=销售.商品号 AND 商店.商店号=销售.商店号
C. SELECT 商店名,SUM(销售数量*单价)As 销售金额合计 FROM 商店,商品,销售 WHERE 商品.商品号=销售.商品号 AND 商店.商店号=销售.商店号 AND SUM(销售数量*单价)>20000 GROUP BY 商店名
D. SELECT 商店名,SUM(销售数量*单价)As 销售金额合计 FROM 商店,商品,销售 WHERE 商品.商品号=销售.商品号 AND 商店.商店号=销售.商店号 GROUP BY 商店名 HAVING SUM(销售数量*单价)>20000
解析:用WHERE直接表示数据表连接条件;用GROUP BY表示分组,HAVING总是跟在GROUP BY之后,用来限定分组,即HAVING是用来表示选项分组的条件。所以选项D)为正确答案。
5.检索“投中3分球”小于等于5个的运动员中“得分”最高的运动员的“得分”,正确的SQL语句是(A)
A. SELECT MAX(得分、FROM 运动员 WHERE 投中 3 分球<=5
B. SELECT MAX(得分)FROM 运动员 WHEN 投中 3 分球<=5
C. SELEC T得分MAX(得分)FROM 运动员 WHERE 投中 3 分球<=5
D. SELECT 得分MAX(得分)FROM 运动员 WHEN 投中 3 分球<=5
解析:求最大值的函数是MAX(),使用计算函数后,会改变原来的,用于计算的字段名,如果要指定新的字段名,可以在该计算函数后通过AS短语指定新的字段名,也可以省略AS短语直接输入新字段名做为输出显示的字段名称。本题选项C)和D)中,使用计算函数的表达方式错误;而选项B)中,条件短语的关键字出错,应该是WHERE,而不是WHEN。
6.设有学生选课表SC(学号,课程号,成绩),用SQL同时检索选修课程号为“C1”和“C5”的学生学号的正确命令是(D)
A. SELECT 学号 FROM SC;WHERE 课程号=’C1’AND 课程号=’C5’
B. SELECT 学号 FROM SC WHERE 课程号=’C1’:AND 课程号=(SELECT 课程号 FROM SC WHERE 课程号=’C5’)
C. SELECT 学号 FROM SC WHERE 课程号=’C1’;AND 学号=(SELECT 学号 FROM SC WHERE 课程号=’C5’)
D. SELECT 学号 FROM SC WHERE 课程号=’C1’;AND 学号 IN(SELECT 学号 FROM SC WHERE 课程号=’C5’)
解析:题干中要求同时检索选修课程号为“C1”和“C5”的学生学号。采用嵌套循环实现检索,排除选项A)。在嵌套查询中使用短语IN表示“属于”的意思,而不是“=”,所以排除选项B)、C)。
7.使用如下数据表:
学生.DBF:学号(C,8),姓名(C,6),性别(C,2),出生日期(D)选课.DBF:学号(C,8),课程号(C,3),成
本文档预览:3600字符,共13515字符,源文件无水印,下载后包含无答案版和有答案版,查看完整word版点下载