SQL数据库查询练习题及答案(四⼗五道题)
题⽬:设有⼀数据库,包括四个表:学⽣表(Student)、课程表(Course)、成绩表(Score)以及教师信息表(Teacher)。
四个表的结构分别如表1-1的表(⼀)~表(四)所⽰,数据如表1-2的表(⼀)~表(四)所⽰。⽤SQL语句创建四个表并完成相关题⽬。
表1-1数据库的表结构
表(⼀)Student (学⽣表)
属性名数据类型可否为空含义
Sno varchar (20)否学号(主码)
Sname varchar (20)否学⽣姓名
Ssex varchar (20)否学⽣性别
Sbirthday datetime可学⽣出⽣年⽉
Class varchar (20)可学⽣所在班级
表(⼆)Course(课程表)
属性名数据类型可否为空含义
Cno varchar (20)否课程号(主码)
Cname varchar (20)否课程名称
Tno varchar (20)否教⼯编号(外码)
表(三)Score(成绩表)
属性名数据类型可否为空含义
Sno varchar (20)否学号(外码)
Cno varchar (20)否课程号(外码)
Degree Decimal(4,1)可成绩
主码:
表(四)Teacher(教师表)
属性名数据类型可否为空含义
Tno varchar (20)否教⼯编号(主码)
Tname varchar (20)否教⼯姓名
Tsex varchar (20)否教⼯性别
Tbirthday datetime可教⼯出⽣年⽉
Tbirthday datetime可教⼯出⽣年⽉Prof varchar (20)可职称
Depart varchar (20)否教⼯所在部门
表1-2数据库中的数据
表(⼀)Student
Sno Sname Ssex Sbirthday class 108曾华男1977-09-0195033 105匡明男1975-10-0295031 107王丽⼥1976-01-2395033 101李军男1976-02-2095033 109王芳⼥1975-02-1095031 103陆君男1974-06-0395031表(⼆)Course
Cno Cname Tno
3-105计算机导论825
3-245操作系统804
6-166数字电路856
9-888⾼等数学831
表(三)Score
Sno Cno Degree
1033-24586
1053-24575
1093-24568
1033-10592
1053-10588
1093-10576
1013-10564
1073-10591
1073-10591
1083-10578
1016-16685
1076-16679
1086-16681
表(四)Teacher
Tno Tname Tsex Tbirthday Prof Depart 804李诚男1958-12-02副教授计算机系856张旭男1969-03-12讲师电⼦⼯程系825王萍⼥1972-05-05助教计算机系831刘冰⼥1977-08-14助教电⼦⼯程系查询问题:
1、查询Student表中的所有记录的Sname、Ssex和Class列。
2、查询教师所有的单位即不重复的Depart列。
3、查询Student表的所有记录。
4、查询Score表中成绩在60到80之间的所有记录。
5、查询Score表中成绩为85,86或88的记录。
6、查询Student表中“95031”班或性别为“⼥”的同学记录。
7、以Class降序查询Student表的所有记录。
8、以Cno升序、Degree降序查询Score表的所有记录。
9、查询“95031”班的学⽣⼈数。
10、查询Score表中的最⾼分的学⽣学号和课程号。(⼦查询或者排序)
11、查询每门课的平均成绩。
select distinct from12、查询Score表中⾄少有5名学⽣选修的并以3开头的课程的平均分数。
13、查询分数⼤于70,⼩于90的Sno列。
14、查询所有学⽣的Sname、Cno和Degree列。
15、查询所有学⽣的Sno、Cname和Degree列。
16、查询所有学⽣的Sname、Cname和Degree列
17、查询“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’)
insert into grade values(70,79,’C’)
insert into grade values(60,69,’D’)
insert into grade values(0,59,’E’)
现查询所有同学的Sno、Cno和rank列。
19、查询选修“3-105”课程的成绩⾼于“109”号同学成绩的所有同学的记录。
20、查询score中选学多门课程的同学中分数为⾮最⾼分成绩的记录。
21、查询成绩⾼于学号为“109”、课程号为“3-105”的成绩的所有记录。
22、查询和学号为108的同学同年出⽣的所有学⽣的Sno、Sname和Sbirthday列。
23、查询“张旭“教师任课的学⽣成绩。
24、查询选修某课程的同学⼈数多于5⼈的教师姓名。
25、查询95033班和95031班全体学⽣的记录。
26、查询存在有85分以上成绩的课程Cno.
27、查询出“计算机系“教师所教课程的成绩表。
28、查询“计算机系”与“电⼦⼯程系“不同职称的教师的Tname和Prof。
29、查询选修编号为“3-105“课程且成绩⾄少⾼于选修编号为“3-245”的同学的Cno、Sno和Degree,并按Degree从⾼到低次序排序。
30、查询选修编号为“3-105”且成绩⾼于选修编号为“3-245”课程的同学的Cno、Sno和Degree.
31、查询所有教师和同学的name、sex和birthday.
32、查询所有“⼥”教师和“⼥”同学的name、sex和birthday.
33、查询成绩⽐该课程平均成绩低的同学的成绩表。
34、查询所有任课教师的Tname和Depart.
35 、查询所有未讲课的教师的Tname和Depart.
36、查询⾄少有2名男⽣的班号。
37、查询Student表中不姓“王”的同学记录。
38、查询Student表中每个学⽣的姓名和年龄。
39、查询Student表中最⼤和最⼩的Sbirthday⽇期值。
40、以班号和年龄从⼤到⼩的顺序查询Student表中的全部记录。
41、查询“男”教师及其所上的课程。
42、查询最⾼分同学的Sno、Cno和Degree列。
43、查询和“李军”同性别的所有同学的Sname.
44、查询和“李军”同性别并同班的同学Sname.
45、查询所有选修“计算机导论”课程的“男”同学的成绩表。
--第⼀题查询Student表中的所有记录的Sname、Ssex和Class列。
select Sname,Ssex,Class from student
--第⼆题查询教师所有的单位即不重复的Depart列。
select distinct Depart from Teacher
--第三题查询Student表的所有记录。
select * from student
--第四题查询Score表中成绩在60到80之间的所有记录。
select * from Score where Degree between 60 and 80
--第五题查询Score表中成绩为85,86或88的记录。
select * from Score where Degree in ('85','86','88')
--第六题查询Student表中“95031”班或性别为“⼥”的同学记录。
select * from student where Class='95031' or Ssex='⼥'
-
-第七题以Class降序查询Student表的所有记录。
select * from student order by Class desc
--第⼋题以Cno升序、Degree降序查询Score表的所有记录。
select * from Score order by Cno asc,Degree desc
--第九题查询“95031”班的学⽣⼈数。
select count(*) from student where Class='95031' --*可以换成主键值
--第⼗题查询Score表中的最⾼分的学⽣学号和课程号。(⼦查询或者排序)
select SNO,CNO from Score where Degree=(select MAX(Degree) from Score)
--第⼗⼀题查询每门课的平均成绩。
select Cno,AVG(Degree) as 平均分 from Score group by Cno
select Cname from Course where Cno in (select Cno a from Score group by Cno)
union
select Cno,AVG(Degree) from Score group by Cno
--第⼗⼆题查询Score表中⾄少有5名学⽣选修的并以3开头的课程的平均分数。
select AVG(Degree ) from Score where Cno like '3%' group by Cno having COUNT(Cno)>4
--第⼗三题查询分数⼤于70,⼩于90的Sno列。
select sno from Score where Degree between 70 and 90
--第⼗四题查询所有学⽣的Sname、Cno和Degree列。
select Sname,Cno,Degree from student join Score on student.Sno=Score.Sno
--第⼗五题查询所有学⽣的Sno、Cname和Degree列。
select Sno,Cname,degree from Score join Course on Course.Cno=Score.Cno
--第⼗六题查询所有学⽣的Sname、Cname和Degree列。
select student.Sname,Cname,degree from student join Score on student.Sno=Score.Sno join Course on
Course.Cno=Score.Cno
--第⼗七题查询“95033”班学⽣的平均分。
select AVG(Degree) from Score where Sno in (select Sno from student where Class='95033')
select AVG(Degree) from Score,student where student.Sno=Score.Sno and Class='95033'
--第⼗⼋题假设使⽤如下命令建⽴了⼀个grade表:
create table grade(low int,upp int,rank char(1))
insert into grade values(90,100,'A')
insert into grade values(80,89,'B')
insert 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,Degree,[RANK] from grade join Score on Score.Degree between low and upp
select Sno,Cno,Degree,[RANK] from Score,grade where Degree between low and upp
--第⼗九题查询选修“3-105”课程的成绩⾼于“109”号同学成绩的所有同学的记录。
select * from student,Score where Score.Cno='3-105' and student.Sno=Score.Sno and Score.Degree>(select Degree from Score where Cno='3-105' and Sno='109')
版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系QQ:729038198,我们将在24小时内删除。
发表评论