学生选课数据库SQL语句练习题详细分解答案分析解析.doc

上传人:坚持 文档编号:3452851 上传时间:2019-05-30 格式:DOC 页数:16 大小:94.50KB
下载 相关 举报
学生选课数据库SQL语句练习题详细分解答案分析解析.doc_第1页
第1页 / 共16页
学生选课数据库SQL语句练习题详细分解答案分析解析.doc_第2页
第2页 / 共16页
学生选课数据库SQL语句练习题详细分解答案分析解析.doc_第3页
第3页 / 共16页
学生选课数据库SQL语句练习题详细分解答案分析解析.doc_第4页
第4页 / 共16页
学生选课数据库SQL语句练习题详细分解答案分析解析.doc_第5页
第5页 / 共16页
点击查看更多>>
资源描述

1、数据库 wzm一、设有一数据库,包括四个表:学生表(Student)、课程表(Course)、成绩表(Score)以及教师信息表(Teacher)。四个表的结构分别如表 1-1 的表(一)表(四)所示,数据如表 1-2 的表(一)表(四)所示。用 SQL 语句创建四个表并完成相关题目。表 1-1 数据库的表结构 表(一)Student 属性名 数据类型可否为空含 义Sno Char(3) 否 学号(主键)Sname Char(8) 否 学生姓名Ssex Char(2) 否 学生性别Sbirthday datetime 可 学生出生年月Class Char(5) 可 学生所在班级表(二)Cour

2、se属性名 数据类型 可否为空含 义Cno Char(5) 否 课程号(主键)Cname Varchar(10) 否 课程名称Tno Char(3) 否 教师编号(外键)表(三)Score属性名 数据类型 可否为空含 义Sno Char(3) 否 学号(外键)Cno Char(5) 否 课程号(外键)数据库 wzmDegree Decimal(4,1) 可 成绩主码:Sno+ Cno表(四)Teacher属性名 数据类型 可否为空含 义Tno Char(3) 否 教师编号(主键)Tname Char(4) 否 教师姓名Tsex Char(2) 否 教师性别Tbirthday datetime

3、可 教师出生年月Prof Char(6) 可 职称Depart Varchar(10) 否 教师所在部门表 1-2 数据库中的数据表(一)StudentSno Sname Ssex Sbirthday class108 曾华 男 1977-09-0195033105 匡明 男 1975-10-0295031107 王丽 女 1976-01-2395033101 李军 男 1976-02-2095033109 王芳 女 1975-02-1095031103 陆君 男 1974-06-0395031表(二)CourseCno Cname Tno数据库 wzm3-105 计算机导论 8253-245

4、 操作系统 8046-166 数字电路 8569-888 高等数学 831表(三)ScoreSno Cno Degree103 3-245 86105 3-245 75109 3-245 68103 3-105 92105 3-105 88109 3-105 76101 3-105 64107 3-105 91108 3-105 78101 6-166 85107 6-166 79108 6-166 81表(四)TeacherTno Tname Tsex Tbirthday Prof Depart804 李诚 男 1958-12-02副教授计算机系856 张旭 男 1969-03-12讲师 电

5、子工程系825 王萍 女 1972-05-05助教 计算机系831 刘冰 女 1977-08-14助教 电子工程系- 1、查询 Student 表中的所有记录的 Sname、Ssex 和 Class 列。select sname,ssex,class from student;数据库 wzm- 2、查询教师所有的单位即不重复的 Depart 列。select distinct depart from Teacher;- 3、查询 Student 表的所有记录。select * from student;- 4、查询 Score 表中成绩在 60 到 80 之间的所有记录。select * fr

6、om score where degree between 60 and 80;- 5、查询 Score 表中成绩为 85,86 或 88 的记录。select * from score where degree in(85,86,88);- 6、查询 Student 表中“95031”班或性别为“女” 的同学记录。select * from student where class = 95031 or ssex=女;- 7、以 Class 降序查询 Student 表的所有记录。select * from student order by class desc;- 8、以 Cno 升序、De

7、gree 降序查询 Score 表的所有记录。select * from score order by cno,degree desc;数据库 wzm- 9、查询“95031” 班的学生人数。select class,count(*) as 学生人数 from student group by class having class=95031;- 10、查询 Score 表中的最高分的学生学号和课程号。(子查询或者排序)select sno,cno,degree, (select max(degree) from score) as maxscore-计算最高分from score where

8、 degree= (select max(degree) from score);- 11、查询 3-105号课程的平均分。select avg(degree) as avgdegreefrom score group by cno having cno=3-105;- 12、查询 Score 表中至少有 5 名学生选修的并以 3 开头的课程的平均分数。select avg(degree) as avgdegree from score group by cno -按照课程分组取平均值having cno= (select cno from score group by cno having

9、count(*)=5)-至少有 5 名学生选修的课程and cno like 3%;-以 3 开头的课程- 13、查询最低分大于 70,最高分小于 90 的 Sno 列。数据库 wzmselect sno,max(degree)as maxdegree,min(degree) as mindegree from Score group by sno having max(degree)70- 14、查询所有学生的 Sname、Cno 和 Degree 列。select sname,cno,degree from student join score on student.sno=score.s

10、no;- 15、查询所有学生的 Sno、Cname 和 Degree 列。select sno,cname,degree from Score join course on So=o;- 16、查询所有学生的 Sname、Cname 和 Degree 列。select sname,cname,degree from student join score on student.sno=score.sno join course on So=o;- 17、查询 “95033”班所选课程的平均分。select avg(degree) as avgdegree from score where sno

11、 in(select sno from student where class=95033)18、假设使用如下命令建立了一个 grade 表:create table grade(low int(3),upp int(3),rank char(1)insert into grade values(90,100,A)insert into grade values(80,89,B)数据库 wzminsert into grade values(70,79,C)insert into grade values(60,69,D)insert into grade values(0,59,E)-现查询

12、所有同学的 Sno、Cno 和 rank 列。select sno,cno,(case when degree between 90 and 100 then Awhen degree between 80 and 89 then Bwhen degree between 70 and 79 then Cwhen degree between 60 and 69 then Dwhen degree between 0 and 59 then EEND) as rank from score;- 19、 查询选修 “3-105”课程的成绩高于“109”号同学成绩的所有同学的记录。select *

13、 from score where cno=3-105and degree(select degree from score where sno=109 and cno=3-105);- 20、查询 score 中选学多门课程的同学中分数为非最高分成绩的记录。select * from score where sno in-选学多门课程的同学中分数为非最高分成绩的同学的全记录(select sno from score group by sno having count(cno)1-选学多门课程的同学intersect-取交集为选学多门课程的同学中分数为非最高分成绩的同学。数据库 wzmsel

14、ect distinct sno from score where sno not in( -分数为非最高分成绩的同学select sno from score where degree=(select max(degree) from score)-分数最高成绩的同学- 21、查询 score 中选学多门课程的同学中分数为非同课程最高分成绩的记录。方法 1:select * from score where sno in-选学多门课程的同学中分数为非同课程最高分成绩的同学的全记录(select sno from score group by sno having count(cno)1-选学

15、多门课程的同学intersect-取交集为选学多门课程的同学中分数为非同课程最高分成绩的同学。select distinct sno from score where sno not in(-非同课程分数最高成绩的同学select distinct sno from score where degree in (-同课程分数最高成绩的同学select max(degree)from score group by cno)-同课程分数最高成绩方法 2:select * from score where sno in-选学多门课程的同学中分数为非同课程最高分成绩的同学的全记录(select sno

16、 from score group by sno having count(cno)1- 选学多门课程的同学intersect - 取交集为选学多门课程的同学中分数为同课程非最高分成绩的同学select distinct sno from score where sno not in - 选出非同课程最高分成绩的同学数据库 wzm(select distinct sno from score as s1 where degree=(select max(degree) from score as s2 where o=o group by cno);- 使用关联子查询选出同课程最高分成绩的同学

17、- 22、查询 1975 年之后出生的学生的所学课程以及成绩。select sname,Cname,degree from student join score on student.sno=score.snojoin course on o=o where sbirthday=1975-01-01;- 23、查询和学号为 107 的同学同年出生的所有学生的Sno、Sname 和 Sbirthday 列。select sno,sname,sbirthday from student where datepart(year,sbirthday)=(select datepart(year,sbi

18、rthday) from student where sno=107)-学号为 107 的同学的出生年份and sno not in(107);-排除学号为 107 的同学- 24、查询 “张旭”教师任课的学生成绩。select degree from score where cno=(select cno from course join teacher on teacher.tno=course.tno where tname=张旭);-张旭老师所任课程数据库 wzm- 25、查询选修某课程的同学人数多于 5 人的教师姓名。select tname from teacher join co

19、urse on teacher.tno=course.tno where cno in (select cno from score group by cno having count(*)5);- 多于 5 名同学选修的课程- 26、查询 95033 班和 95031 班全体学生的记录。select * from student where class in(95033,95031);- 27、查询存在有 85 分以上成绩的课程 Cno.select distinct cno from score where degree85;- 28、查询出 “计算机系”教师所教课程的成绩表。select o,degree from score join course on o=owhere tno in(select tno from teacher where depart=计算机系);-计算机系教师的教师编号- 29、查询 “计算机系”与“电子工程系”不同职称的教师的 Tname 和Prof。select tname,prof from teacher where depart in(计算机系, 电子工程系)-“计算机系”与“电子工程系”所有教师 Tname 和 Prof

展开阅读全文
相关资源
相关搜索

当前位置:首页 > 教育教学资料库 > 试题真题

Copyright © 2018-2021 Wenke99.com All rights reserved

工信部备案号浙ICP备20026746号-2  

公安局备案号:浙公网安备33038302330469号

本站为C2C交文档易平台,即用户上传的文档直接卖给下载用户,本站只是网络服务中间平台,所有原创文档下载所得归上传人所有,若您发现上传作品侵犯了您的权利,请立刻联系网站客服并提供证据,平台将在3个工作日内予以改正。