学生选课数据库SQL语句练习题详细分解答案_第1页
学生选课数据库SQL语句练习题详细分解答案_第2页
学生选课数据库SQL语句练习题详细分解答案_第3页
学生选课数据库SQL语句练习题详细分解答案_第4页
学生选课数据库SQL语句练习题详细分解答案_第5页
已阅读5页,还剩11页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

数据库 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) 可 学生所在班级表(二)Course属性名 数据类型 可否为空含 义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 可 教师出生年月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 操作系统 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讲师 电子工程系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 * from 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 升序、Degree 降序查询 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 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 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.sno;- 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 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)-现查询所有同学的 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 * 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-取交集为选学多门课程的同学中分数为非最高分成绩的同学。数据库 wzmselect 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-选学多门课程的同学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 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);- 使用关联子查询选出同课程最高分成绩的同学- 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,sbirthday) 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 人的教师

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论