答案:A 解释: 本题考核SQL-SELECT之多表联合操作 ; 题目中要列出选修―1001‖号课的学生姓名及成绩,涉及到两个表:学生和选课,两个表用学号相连:学生.学号=选课.学号,同时课号为1001,两个条件同时成立,所以正确答案选A;
具体内容请参考课堂视频“SQL-SELECT之多表联合操作”和第十一章课件。
(10) 列出各门课的平均成绩、最高成绩、最低成绩和选课人数。正确的SQL语句是_____ 。
(A) SELECT 课号,AVG(成绩),MAX(成绩),MIN(成绩),COUNT(学号)
FROM 选课 GROUP BY 课号;
(B) SELECT 课号,AVG(成绩),MAX(成绩),MIN(成绩),COUNT(学号)
FROM 选课 ORDER BY 课号;
(C) SELECT 课号,AVG(成绩),MAX(成绩),MIN(成绩),COUNT(学号)
FROM 选课 WHERE 课号;
(D) SELECT 课号,AVG(成绩),MAX(成绩),MIN(成绩),COUNT(学号)
FROM 选课 HAVING 课号;
答案:A 解释: 本题考核SQL-SELECT之分组聚集操作 ; 题目中要列出各门课的平均成绩、最高成绩、最低成绩和选课人数;只涉及选课表,用AVG表示平均成绩,MAX最高成绩,MIN最低成绩,COUNT计算人数,按课号排序用Groupby,所以正确答案为A;
具体内容请参考课堂视频“SQL-SELECT之分组聚集操作”和第十一章课件。
(11)列出最少选修了三门课程的学生姓名。正确的SQL语句是_____ 。
(A) SELECT 姓名 FROM 学生 WHERE 学号 IN
(SELECT 学号 FROM 选课 GROUP BY 学号 HAVING COUNT(*) >= 3);
(B) SELECT 姓名 FROM 学生 WHERE 学号 IN
(SELECT 学号 FROM 选课 GROUP BY 学号 COUNT(*) >= 3); (C) SELECT 姓名 FROM 学生 WHERE 学号
(SELECT 学号 FROM 选课 GROUP BY 学号 HAVING COUNT(*) >= 3); (D) SELECT 姓名 FROM 学生 WHERE 学号 IN
(SELECT 学号 FROM 选课 ORDER BY 学号 HAVING COUNT(*) >= 3);
答案:A 解释: 本题考核SQL-SELECT之分组聚集操作 ; 显列出所选课程至少三门学生的学号,用学号排列计算所选课程门数为SELECT 学号 FROM 选课 GROUP BY 学号 HAVING COUNT(*) >= 3);所以答案选A;
具体内容请参考课堂视频“SQL-SELECT之分组聚集操作”和第十一章课件。
17、如表10.6、表10.7和表10.8所示,用SQL语言实现下列操作。
表10.6 学生
学号 1309203 1208123 1104421 1309119 1209120 课程号 CS-110 CS-201 CS-221 EE-122 EE-201 姓名 欧阳林 王义平 周远行 李维 王大力 学时数 60 80 40 106 45 性别 女 男 男 女 男 学分 3 4 2 5 2 出生日期 1995-6-3 1994-8-20 1993-7-16 1996-8-14 1993-10-20 开课学期 秋 春 秋 秋 春 成绩 82.5 80 75 91 83 100 91 72 65 身高 1.62 1.71 1.83 1.68 1.75 表10.7 课程
表10.8 选课
学号 1309203 1309203 1309203 1208123 1208123 1104421 1104421 1309119 1309119 1209120 课程号 CS-110 CS-201 EE-201 EE-122 EE-201 EE-201 CS-110 CS-110 CS-201 CS-221 (1)查询所有女学生的身高。正确的SQL语句是_____ 。
(A) SELECT 姓名,身高 FROM 学生 WHERE 性别=‘女‘; (B) SELECT 姓名 身高 FROM 学生 WHERE 性别=‘女‘; (C) SELECT 姓名,身高 FROM 学生 WHERE 性别=女; (D)都不正确;
答案:A 解释: 本题考查SQL-SELECT之简单使用方法; 要求查询所有女学生的身高,可以只在表10.6学生表中用select查询即可;Select 姓名,身高 From 学生 Where 性别=‘女’,姓名 身高直接要有逗号,‘女’用单引号括起来。所以A正确; 具体内容参考课堂视频“SQL-SELECT之简单使用”和第十一章课件。
(2)查询1996年出生的学生姓名及其秋季所修课程的课程号及成绩。正确的SQL语句是_____ 。
(A) SELECT 姓名,课程号,成绩 FROM 学生,选课,课程
WHERE 学生.学号=选课.学号 AND 选课.课程号=课程.课程号 AND 出生日期=1996 AND 开课学期=‘秋‘;
(B) SELECT 姓名,课程号,成绩 FROM 学生,选课,课程
WHERE 学生.出生日期=1996 AND 课程.开课学期=‘秋‘; (C) SELECT 姓名,课程号,成绩 FROM 学生,选课,课程
WHERE 学生.学号=选课.学号 AND 选课.课程号=课程.课程号 AND Year(出生日期)=1996 AND 开课学期=‘秋‘;
(D) SELECT 姓名,课程号,成绩 FROM 学生,选课,课程
WHERE 学生.学号=选课.学号 AND 学生.Year(出生日期)=1996 AND 课程.开课学期=‘秋‘;
答案:C 解释: 本题考核SQL-SELECT之多表联合操作; 题目要求查询1996年出生的学生姓名及其秋季所修课程的课程号及成绩,涉及到学生表,课程表和选课表,是多表联合查询;学生表和选课表相连能通过学号,所以有学生.学号=选课.学号,且选的表和课程表相连,为选课.课程号=课程.课程号,并且秋季学期课程,有课程.开课学期=‘秋‘,同时还要满足出生年份为1996,即Year(出生日期)=1996,所以正确答案选C; 具体内容参考课堂视频“SQL-SELECT之多表联合操作”和第十一章课件。
(3)查询秋季学期有一门以上课程获90分以上成绩的学生名。正确的SQL语句是_____ 。
(A) SELECT 姓名 FROM 学生 课程 选课
WHERE 学生.学号=选课.学号 AND 选课.课程号=课程.课程号 AND 选课.课程号=课程.课程号 AND 成绩 >= 90.0 AND 开课学期=‘秋‘; (B) SELECT 姓名 FROM 学生 WHERE 学号 IN
(SELECT 学号 FROM 选课 WHERE 成绩 >= 90.0 AND 课程号 IN
(SELECT 课程号 FROM 课程 WHERE 开课学期=?秋‘));
(C) SELECT 姓名 FROM 学生 WHERE 学号 IN (学号 FROM 选课
WHERE 成绩 >= 90.0 AND 课程号 IN
(SELECT 课程号 FROM 课程 WHERE 开课学期=?秋‘));
(D) SELECT 姓名 FROM 学生 WHERE 学号 IN
(SELECT 学号 FROM 选课 WHERE 成绩 >= 90.0 AND 课程号 IN (课程号 FROM 课程 WHERE 开课学期=?秋‘));
答案:B 解释: 本题考核SQL-SELECT之多表联合操作; 题目要求查询秋季学期有一门以上课程获90分以上成绩的学生名,涉及到学生表,课程表和选课表,是多表联合查询;先选择出开设学期为秋季的所有课程,为:SELECT 课程号 FROM 课程 WHERE 开课学期=?秋‘,只有课程号在选出的秋季学期课程号才行。再和成绩>=90条件相并,选出满足这两个条件的学号,即是选过秋季学期的课程及获得90以上学生的学号。所以正确答案选B; 具体内容参考课堂视频“SQL-SELECT之多表联合操作”和第十一章课件。
(4)查询选修CS-110课程的学生名。正确的SQL语句是_____ 。
(A) SELECT 姓名 FROM 学生,选课 WHERE 课程号=?CS-110‘; (B) SELECT 姓名 FROM 学生,选课 WHERE 选课.课程号=?CS-110‘;
(C) SELECT 姓名 FROM 学生 选课 WHERE 学生.学号=选课.学号 AND 课程号=?CS-110‘; (D) SELECT 姓名 FROM 学生,选课 WHERE 学生.学号=选课.学号 AND 课程号=?CS-110‘;
答案:D 解释: 本题考核SQL-SELECT之多表联合操作; 题目要求查询选修CS-110课程的学生名,涉及到学生表和选课表,是多表联合查询;学生表和选课表相连能通过学号,所以有学生.学号=选课.学号,且 课程号=?CS-110‘,两条件同时成立,用AND连接,C中学生和选课中间要有都好,所以正确答案为D;
具体内容参考课堂视频“SQL-SELECT之多表联合操作”和第十一章课件。
(5)统计学生的平均身高。正确的SQL语句是_____ 。
(A) SELECT AVG(身高) FROM 学生; (B) SELECT COUNT(身高) FROM 学生; (C) SELECT 身高,AVG(身高) FROM 学生; (D) SELECT AVER(身高) FROM 学生;
答案:A 解释: 本题考核SQL-SELECT之多表联合操作; 题目要求统计学生的平均身高,只涉及到学生表,AVG表示求表中某一项值的平均值,所以我们用AVG(身高)来表示平均身高,所以SELECT AVG(身高) FROM 学生,正确答案为A;
具体内容参考课堂视频“SQL-SELECT之多表联合操作”和第十一章课件。
(6)查询缺成绩的学生名及课程号。正确的SQL语句是_____ 。
(A) SELECT 姓名,课程号 FROM 学生,选课
WHERE 学生.学号=选课.学号 AND 成绩=? ‘; (B) SELECT 姓名,课程号 FROM 学生,选课
WHERE 学生.学号=选课.学号 AND 成绩 IS NULL; (C) SELECT 姓名,课程号 FROM 学生,选课
WHERE 成绩 IS NULL;
(D) SELECT 姓名,课程号 FROM 学生,选课 WHERE 成绩=? ‘;
答案:B 解释: 本题考核SQL-SELECT之多表联合操作; 题目要求查询缺成绩的学生名及课程号,涉及到学生表和选课表,两个表用学号连接,
即学生.学号=选课.学号,并且要查询缺成绩的学生,则“成绩 IS NULL”,不能写成成绩=“ ”,所以正确答案选B;
具体内容参考课堂视频“SQL-SELECT之多表联合操作”和第十一章课件。
(7)试列出计算机系所开课程(CS标志)的最高成绩、最低成绩和平均成绩。如果某门课程的成绩不全(即 成绩 中有NULL出现),则该课程不予统计,结果按 课程号 升序排列。正确的SQL语句是_____ 。
(A) SELECT 课程号,MAX(成绩),MIN(成绩),AVG(成绩) FROM 选课
WHERE 课程号 Like ?CS%‘ GROUP BY 课程号
HAVING 课程号 NOT IN (SELECT 课程号 FROM 选课 WHERE 成绩 IS NULL) ORDER BY 课程号;
(B) SELECT MAX(成绩),MIN(成绩),AVG(成绩) FROM 选课
WHERE 课程号= ?CS%‘ GROUP BY 课程号
HAVING 课程号 NOT IN (SELECT 课程号 FROM 选课 WHERE 成绩 IS NULL) ORDER BY 课程号;
(C) SELECT 课程号,MAX(成绩),MIN(成绩),AVG(成绩) FROM 选课
WHERE 课程号 Like ?CS%‘ GROUP BY 课程号
HAVING 课程号 NOT IN (SELECT 课程号 FROM 选课 WHERE 成绩 IS NULL) ORDER BY 课程号;
(D) SELECT 课程号,MAX(成绩),MIN(成绩),AVG(成绩) FROM 选课
WHERE 课程号 Like ?CS%‘ GROUP BY 课程号
HAVING 课程号 NOT IN (SELECT 课程号 FROM 选课 WHERE 成绩 IS NULL)
答案:C 解释: 本题考核SQL-SELECT之多表联合操作; 题目要显示最高成绩,最低成绩和平均成绩,分别是MAX(成绩),MIN(成绩),AVG(成绩);要排除没有成绩的学生,先选出成绩为NULL的,为“SELECT 课程号 FROM 选课 WHERE 成绩 IS NULL”,所以排除没有成绩的即是NOT IN,由于是选出课程名中包括CS标志的,所以WHERE应该是:课程号 LIKE ‘CS%’;按照课程号排序,Order by课程号,默认是升序,注意GROUP By 和 HAVING是连起来用的所以正确答案选C;简单判断方法,题目中要求只要显示最高成绩,最低成绩和平均成绩,没有选出课程号,所以ABD都不对。
具体内容参考课堂视频“SQL-SELECT之多表联合操作”和第十一章课件。
18. 已知SC(S#, C#, Score)关系的元组,如下所示{
(A) 该查询结果中的元组为{ S1, S5 };
(B) 该查询结果中的元组为{ S1, S2, S3, S5 }; (C) 该查询结果中的元组为{ S1 }; (D) 该查询结果中的元组为{ S5 };
(E) 以上说法都不正确;
答案:E 解释: 本题考核SQL-SELECT之分组聚集操作,Select语句; 语句:SELECT S# FROM SC WHERE C#= ?C1‘ and C#= ?C3‘ 表示从表SC中选择S#,其中S#对应的C#要同时满足C1和C3,发现在表中,不可能满足该条件,S对应的C不能同时满足C1和C2,所以正确答案选E; 具体内容参考课堂视频“SQL-SELECT之分组聚集操作,Select语句”和第十一章课件。