武夷山景区网站建设优点,网站设计与开发策划书,台州企业网站搭建价格,金融中介做网站需要SQL综合查询下 目录SQL综合查询下18、查询所有人都选修了的课程号与课程名题目代码题解19、SQL查询#xff1a;查询没有参加选课的学生。题目代码20、SQL查询#xff1a;统计各门课程选修人数#xff0c;要求输出课程代号#xff0c;课程名#xff0c;有成绩人数#xff…SQL综合查询下 目录SQL综合查询下18、查询所有人都选修了的课程号与课程名题目代码题解19、SQL查询查询没有参加选课的学生。题目代码20、SQL查询统计各门课程选修人数要求输出课程代号课程名有成绩人数grade不为NULL最高分最低分平均分按课程号排序。题目代码题解21、查询计算机系平均成绩高于70分的成绩信息。题目代码22、查询同时选修了“数据库基础”和“计算机网络”两门课的学生的学号姓名。题目代码not exists写法23、SQL查询查询选修了课程的学生的学号和姓名。题目代码24、SQL查询查询学生的选课情况要求输出学号姓名课程门数课程名列表按课程名升序排列用下划线\_分隔按照学号升序排序。题目代码题解25、查询每个男生的选课门数要求用嵌套查询实现题目代码26、SQL查询查询没有同时选修“计算机导论”和“计算机网络”两门课的学生的学号姓名题目代码27、查询选修了学号为9521102同学选修的全部课程的学生学号和姓名题目一代码题解28、查询95级学生(学号前两位)的选课情况输出学号、姓名、课程号、成绩包括未选课的学生信息题目代码 29、查询选课门数最多的学生的学号和姓名题目代码题解30、查询每个学生成绩最高的成绩信息题目代码31、SQL查询查询同时选修了c01,c02,c03课程学生输出学号姓名题目代码题解32、查询每门课程被选修的情况输出课程号课程名被选修次数题目代码33、查询每门课程被选修的情况(包括从未被选修过的课程)题目代码34、查询选修了c03课程的学生学号和姓名题目代码35、查询实验题-查询考试不及格的学生的学号包括没有成绩的题目代码18、查询所有人都选修了的课程号与课程名
题目
有课程表学生表成绩表如下查询所有人都选修了的课程号与课程名。
course
列名数据类型约束说明cnochar(4)主键非空课程号cnamevarchar(40)非空课程名cpnochar(4)参照course(cno)先修课ccredittinyint学分
student
列名数据类型约束说明snochar(7)主键非空学号snamechar(10)非空学生姓名ssexenum(‘男’,‘女’)默认‘男’性别sagetinyint年龄sdeptchar(20)默认’计算机系’系别
sc
列名数据类型约束说明snochar(7)主键非空参照student(sno)学号cnochar(4)主键非空参照course(cno)课程号gradedecimal(5,1)成绩ccredittinyint
代码
# 查询所有人都选修了的课程号与课程名
select c.cno,c.cname from course c where not exists
(select s.sno from student s where not exists
(select a.cno from sc a where a.snos.sno and a.cnoc.cno))题解
该语句中使用了嵌套的子查询来查找所有人都选修了的课程。首先在外层查询中从课程表中选择本门课程的编号和名称。然后在内层查询中对于每个学生我们检查是否存在没有修读该门课程的情况。如果不存在这样的情况则意味着所有学生都修读了该门课程因此将该门课程包含在结果中。
19、SQL查询查询没有参加选课的学生。
题目
#查询没有参加选课的学生输出系名学号姓名性别按系名升序学号升序排序。
[注意SQL表名请用小写]
学生数据库db_student包括三个数据表student学生表、course课程表和sc选课表。表结构如下
1、student学生表
SNO学号CHAR(7)
SNAME姓名CHAR(10)
SSEX性别CHAR(2)
SAGE年龄SMALLINT
SDEPT所在系 VARCHAR(20)
2、course课程表
CNO课程号CHAR(10)
CNAME课程名VARCHAR(20)
CCREDIT学分SMALLINT
SEMSTER学期SMALLINT
PERIOD学时SMALLINT
3、sc选课表
SNO 学号CHAR(7)
CNO 课程号CHAR(10)
GRADE 绩 SMALLINT
代码
#查询没有参加选课的学生输出系名学号姓名性别按系名升序学号升序排序。
select s.sdept ,s.sno ,s.sname,s.ssex
from student s
where s.sno not in (select distinct sno from sc )
order by s.sdept asc ,s.sno asc;
20、SQL查询统计各门课程选修人数要求输出课程代号课程名有成绩人数grade不为NULL最高分最低分平均分按课程号排序。
题目
#统计各门课程选修人数要求输出课程代号课程名有成绩人数grade不为NULL最高分最低分平均分(取整round函数)按课程号排序。
[注意SQL表名请用小写]
学生数据库db_student包括三个数据表student学生表、course课程表和sc选课表。表结构如下
1、student学生表
SNO学号CHAR(7)
SNAME姓名CHAR(10)
SSEX性别CHAR(2)
SAGE年龄SMALLINT
SDEPT所在系 VARCHAR(20)
2、course课程表
CNO课程号CHAR(10)
CNAME课程名VARCHAR(20)
CCREDIT学分SMALLINT
SEMSTER学期SMALLINT
PERIOD学时SMALLINT
3、sc选课表
SNO 学号CHAR(7)
CNO 课程号CHAR(10)
GRADE 成绩 SMALLINT
代码
#统计各门课程选修人数要求输出课程代号课程名有成绩人数grade不为NULL最高分最低分平均分(取整round函数)按课程号排序。
select c.cno,c.cname,count(sc.sno),max(sc.grade),min(sc.grade),round(avg(sc.grade)) from course c
join sc on c.cnosc.cno
where sc.grade is not null
group by c.cno
order by c.cno;题解
从课程表(course)和选课表(sc)中查询课程代号(cno)课程名(cname)成绩不为NULL的学生人数(count(sc.sno))最高分(max(sc.grade))最低分(min(sc.grade))和平均分(round(avg(sc.grade)))这些字段通过INNER JOIN关键字将课程表和选课表连接起来连接条件为课程代号(cno)相等使用WHERE子句过滤掉成绩为NULL的记录只统计有成绩的学生人数使用GROUP BY子句对每门课程进行分组统计每门课程的选修人数及成绩相关指标使用ORDER BY子句按照课程代号(cno)升序排序。
21、查询计算机系平均成绩高于70分的成绩信息。
题目
有课程表学生表成绩表如下查询计算机系平均成绩高于70分的学号姓名、平均成绩并按平均成绩降序排列。
course
列名数据类型约束说明cnochar(4)主键非空课程号cnamevarchar(40)非空课程名cpnochar(4)参照course(cno)先修课ccredittinyint学分
student
列名数据类型约束说明snochar(7)主键非空学号snamechar(10)非空学生姓名ssexenum(‘男’,‘女’)默认‘男’性别sagetinyint年龄sdeptchar(20)默认’计算机系’系别
sc
列名数据类型约束说明snochar(7)主键非空参照student(sno)学号cnochar(4)主键非空参照course(cno)课程号gradedecimal(5,1)成绩ccredittinyint
代码
#查询计算机系平均成绩高于70分的成绩信息
SELECT sc.sno, s.sname, AVG(sc.grade)
FROM sc
JOIN student s ON sc.sno s.sno
WHERE s.sdept 计算机系
GROUP BY sc.sno
HAVING AVG(sc.grade) 70
ORDER BY AVG(sc.grade) DESC
22、查询同时选修了“数据库基础”和“计算机网络”两门课的学生的学号姓名。
题目 代码
# 查询同时选修了“数据库基础”和“计算机网络”两门课的学生的学号姓名。
select sno,sname
from student
where sno in
(select snofrom course,scwhere course.cnosc.cno and cname数据库基础and sno in(select snofrom course,scwhere course.cnosc.cno and cname计算机网络));
not exists写法
select sno,sname from student
where not exists(select * from course where cname in(数据库基础,计算机网络)
and not exists (select * from sc where snostudent.sno and cnocourse.cno)) 在主查询中我们选择输出学生的学号和姓名因此使用了 SELECT sno, sname。在 FROM 子句中我们选择了 student 表表示我们要查询学生的信息。在 WHERE 子句中我们使用了一个子查询来筛选同时选修了“数据库基础”和“计算机网络”两门课程的学生。具体来说子查询中的第一个 NOT EXISTS 子句用于筛选选修了至少一门不是这两门课程的学生第二个 NOT EXISTS 子句用于筛选未选修这两门课程的学生。通过使用两个 NOT EXISTS 子句的嵌套我们筛选出了选修了这两门课程的学生。在子查询中我们使用了 SELECT * FROM course WHERE cname IN (数据库基础, 计算机网络) 来选择选修了这两门课程的课程记录。然后我们使用 NOT EXISTS 子句来筛选未选修这些课程的学生。具体来说NOT EXISTS 子句中的子查询 SELECT * FROM sc WHERE sno student.sno AND cno course.cno 用于查找学生选课表中是否存在选修了这些课程的记录。如果不存在这样的记录那么学生就未选修这些课程。 如果对not exists用法不熟悉 建议用两次子查询 23、SQL查询查询选修了课程的学生的学号和姓名。
题目
#查询选修了课程的学生的学号和姓名按学号排序。
[注意SQL表名请用小写]
学生数据库db_student包括三个数据表student学生表、course课程表和sc选课表。表结构如下
1、student学生表
SNO学号CHAR(7)
SNAME姓名CHAR(10)
SSEX性别CHAR(2)
SAGE年龄SMALLINT
SDEPT所在系 VARCHAR(20)
2、course课程表
CNO课程号CHAR(10)
CNAME课程名VARCHAR(20)
CCREDIT学分SMALLINT
SEMSTER学期SMALLINT
PERIOD学时SMALLINT
3、sc选课表
SNO 学号CHAR(7)
CNO 课程号CHAR(10)
GRADE 成绩 SMALLINT
代码
#查询选修了课程的学生的学号和姓名按学号排序。
select distinct s.sno,s.sname from student s,sc
where s.sno sc.sno
order by s.sno;24、SQL查询查询学生的选课情况要求输出学号姓名课程门数课程名列表按课程名升序排列用下划线_分隔按照学号升序排序。
题目
#查询学生的选课情况要求输出学号姓名课程门数课程名列表按课程名升序排列用下划线_分隔按照学号升序排序。
[注意SQL表名请用小写]
学生数据库db_student包括三个数据表student学生表、course课程表和sc选课表。表结构如下
1、student学生表
SNO学号CHAR(7)
SNAME姓名CHAR(10)
SSEX性别CHAR(2)
SAGE年龄SMALLINT
SDEPT所在系 VARCHAR(20)
2、course课程表
CNO课程号CHAR(10)
CNAME课程名VARCHAR(20)
CCREDIT学分SMALLINT
SEMSTER学期SMALLINT
PERIOD学时SMALLINT
3、sc选课表
SNO 学号CHAR(7)
CNO 课程号CHAR(10)
GRADE 成绩 SMALLINT
代码
#查询学生的选课情况要求输出学号姓名课程门数课程名列表按课程名升序排列用下划线_分隔按照学号升序排序。
SELECT s.sno,sname,COUNT(*),
GROUP_CONCAT(cname ORDER BY cname SEPARATOR _)课程名列表
FROM student s,sc,course cs
WHERE s.snosc.sno AND sc.cnocs.cno
GROUP BY s.sno
ORDER BY s.sno;
题解
从学生表(student)、选课表(sc)和课程表(course)中查询学号(sno)、姓名(sname)、课程数量(COUNT( *))和课程名列表(GROUP_CONCAT())这些字段使用WHERE子句将学生表、选课表和课程表连接起来连接条件为学号(sno)和课程号(cno)相等使用GROUP BY子句对每个学生进行分组统计每个学生所选课程的数量和课程名列表使用GROUP_CONCAT函数将每个学生所选课程的课程名按照字母表顺序排序并用下划线连接起来形成课程名列表使用ORDER BY子句按照学号(sno)升序排序。
25、查询每个男生的选课门数要求用嵌套查询实现
题目
#查询每个男生的选课门数要求用嵌套查询实现要求输出学号、选课门数并按序号升序排序。
[注意SQL表名请用小写] 代码
#查询每个男生的选课门数要求用嵌套查询实现要求输出学号、选课门数并按学号升序排序。
select sc.sno,count(*)
from sc
where sno in(select sno from student where ssex男)
group by sno;26、SQL查询查询没有同时选修“计算机导论”和“计算机网络”两门课的学生的学号姓名
题目
学生数据库db_student包括三个数据表student学生表、course课程表和sc选课表。表结构如下
1、student学生表
SNO学号CHAR(7)
SNAME姓名CHAR(10)
SSEX性别CHAR(2)
SAGE年龄SMALLINT
SDEPT所在系 VARCHAR(20)
2、course课程表
CNO课程号CHAR(10)
CNAME课程名VARCHAR(20)
CCREDIT学分SMALLINT
SEMSTER学期SMALLINT
PERIOD学时SMALLINT
3、sc选课表
SNO 学号CHAR(7)
CNO 课程号CHAR(10)
GRADE 成绩 SMALLINT
代码
select sno,sname from student where sno not in(
select sno from sc,course where sc.cnocourse.cno and cname计算机导论
and sno in (
select sno from sc,course where sc.cnocourse.cno and cname计算机网络
));
27、查询选修了学号为9521102同学选修的全部课程的学生学号和姓名
题目一
有课程表学生表成绩表如下查询选修了学号为9521102同学选修的全部课程的学生学号和姓名。
course
列名数据类型约束说明cnochar(4)主键非空课程号cnamevarchar(40)非空课程名cpnochar(4)参照course(cno)先修课ccredittinyint学分
student
列名数据类型约束说明snochar(7)主键非空学号snamechar(10)非空学生姓名ssexenum(‘男’,‘女’)默认‘男’性别sagetinyint年龄sdeptchar(20)默认’计算机系’系别
sc
列名数据类型约束说明snochar(7)主键非空参照student(sno)学号cnochar(4)主键非空参照course(cno)课程号gradedecimal(5,1)成绩ccredittinyint
代码
# 查询选修了学号为9521102同学选修的全部课程的学生学号和姓名
SELECT DISTINCT s.sno, s.sname
FROM student s
WHERE NOT EXISTS (SELECT *FROM sc bWHERE b.sno 9521102 AND NOT EXISTS (SELECT *FROM sc cWHERE s.sno c.sno AND c.cno b.cno)
);
题解
首先我们使用SELECT DISTINCT关键字指定要查询的结果集中的每个记录都是唯一的即去除重复记录。接下来我们使用FROM子句指定要查询的表是学生表(student)使用别名s来代替学生表(student)。然后我们使用WHERE子句对查询结果进行筛选。在这个查询中我们使用了NOT EXISTS子查询表示查找不存在满足特定条件的记录。在NOT EXISTS子查询中我们使用了一个子子查询其中先查询出学号为9521102的学生选修的全部课程然后再查询出除该学生外选修了这些全部课程的学生。如果存在这样的学生则该学生不符合条件被排除在查询结果之外。最后我们使用SELECT子句指定要查询的结果集包括每个学生的学号(sno)和姓名(sname)。这些字段分别来自于学生表(student)。
28、查询95级学生(学号前两位)的选课情况输出学号、姓名、课程号、成绩包括未选课的学生信息
题目
查询95级学生(学号前两位)的选课情况输出学号、姓名、课程号、成绩包括未选课的学生信息。
有课程表学生表成绩表如下请完成查询。
course
列名数据类型约束说明cnochar(4)主键非空课程号cnamevarchar(40)非空课程名cpnochar(4)参照course(cno)先修课ccredittinyint学分
student
列名数据类型约束说明snochar(7)主键非空学号snamechar(10)非空学生姓名ssexenum(‘男’,‘女’)默认‘男’性别sagetinyint年龄sdeptchar(20)默认’计算机系’系别
sc
列名数据类型约束说明snochar(7)主键非空参照student(sno)学号cnochar(4)主键非空参照course(cno)课程号gradedecimal(5,1)成绩ccredittinyint
代码
# 查询95级学生(学号前两位)的选课情况输出学号、姓名、课程号、成绩包括未选课的学生信息。
select s.sno,s.sname,sc.cno,sc.grade
from student s
left join sc on sc.sno s.sno
where s.sno like 95%;29、查询选课门数最多的学生的学号和姓名
题目
有课程表学生表成绩表如下查询选课门数最多的学生的学号和姓名结果可能不只一行。
course
列名数据类型约束说明cnochar(4)主键非空课程号cnamevarchar(40)非空课程名cpnochar(4)参照course(cno)先修课ccredittinyint学分
student
列名数据类型约束说明snochar(7)主键非空学号snamechar(10)非空学生姓名ssexenum(‘男’,‘女’)默认‘男’性别sagetinyint年龄sdeptchar(20)默认’计算机系’系别
sc
列名数据类型约束说明snochar(7)主键非空参照student(sno)学号cnochar(4)主键非空参照course(cno)课程号gradedecimal(5,1)成绩ccredittinyint
代码
#查询选课门数最多的学生的学号和姓名
select s.sno,s.sname from student s,sc
where s.snosc.sno
group by s.sno
having count(*) (select count(*) from sc group by sno order by count(*) desc limit 1);题解
首先使用SELECT关键字指定要查询的结果集包含学生的学号(sno)和姓名(sname)字段。接着使用FROM子句指定要查询的表包括学生表(student)和选课表(sc)。然后使用WHERE子句指定学生表(student)和选课表(sc)之间的连接条件为学号(sno)相等。接下来使用GROUP BY子句按照学生的学号(sno)进行分组统计每个学生选修的课程数量。然后使用HAVING子句过滤掉选修课程数量不是最多的学生记录。在这个查询中我们使用COUNT( *)函数统计每个学生选修的课程数量然后将这个数量与所有学生选修课程数量的最大值进行比较如果相等则表示该学生选修课程数量最多满足条件。最后使用子查询获取所有学生的选修课程数量按照数量从大到小排序并只返回数量最大的那个值作为判断条件。
30、查询每个学生成绩最高的成绩信息
题目
有课程表学生表成绩表如下请完成查询输出成绩信息学号、课程号及成绩最高分可能有多门成绩。
course
列名数据类型约束说明cnochar(4)主键非空课程号cnamevarchar(40)非空课程名cpnochar(4)参照course(cno)先修课ccredittinyint学分
student
列名数据类型约束说明snochar(7)主键非空学号snamechar(10)非空学生姓名ssexenum(‘男’,‘女’)默认‘男’性别sagetinyint年龄sdeptchar(20)默认’计算机系’系别
sc
列名数据类型约束说明snochar(7)主键非空参照student(sno)学号cnochar(4)主键非空参照course(cno)课程号gradedecimal(5,1)成绩
代码
# 输出成绩信息学号、课程号及成绩最高分可能有多门成绩。
select * from sc student
where grade(select max(grade) from sc where sc.snostudent.sno);31、SQL查询查询同时选修了c01,c02,c03课程学生输出学号姓名
题目
#查询同时选修了c01,c02,c03课程学生输出学号姓名 代码
#查询同时选修了c01,c02,c03课程学生输出学号姓名
select sno,sname from student
where not exists (select * from course where cno in (c01,c02,c03) #筛选出选修了这几门课程中任意一门或多门的学生记录
and not exists (select * from sc where snostudent.sno and cnocourse.cno))题解
首先使用SELECT关键字指定要查询的结果集包含学生的学号(sno)和姓名(sname)字段。接着使用FROM子句指定要查询的表为学生表(student)。然后使用WHERE子句对查询结果进行筛选。在这个查询中我们使用了NOT EXISTS子查询表示查找不存在满足特定条件的记录。在NOT EXISTS子查询中我们使用了一个子子查询其中先查询出所有指定课程c01、c02和c03然后再查询出选修了这些课程的学生。如果存在这样的学生则该学生符合条件被包含在查询结果之中。在子子查询中我们使用了另一个子查询查询选修了指定课程的学生和课程的关系表(sc)。如果存在这样的关系记录则表示该学生选修了指定的课程。最后使用sno student.sno和cno course.cno这两个条件将学生表(student)和课程表(course)之间的关系进行连接。
32、查询每门课程被选修的情况输出课程号课程名被选修次数
题目
查询每门课程被选修的情况输出课程号课程名被选修次数结果按选修次数降序课程号降序排列。
其中课程表course结构为 选修表sc结构为
代码
#查询每门课程被选修的情况输出课程号课程名被选修次数结果按选修次数降序课程号降序排列。
select c.cno, c.cname, count(*)
from course c ,sc
where c.cno sc.cno
group by c.cno
ORDER BY count(*) DESC, c.cno DESC;33、查询每门课程被选修的情况(包括从未被选修过的课程)
题目
查询每门课程被选修的情况(包括从未被选修过的课程)输出课程号课程名被选修次数结果按选修次数升序课程号升序排列。
其中课程表course结构为
选修表sc结构为 代码
# 查询每门课程被选修的情况(包括从未被选修过的课程)
select course.cno,cname,count(sno)
from course
left join sc on course.cnosc.cno
group by course.cno
order by count(sno) asc ,course.cno asc
34、查询选修了c03课程的学生学号和姓名
题目
有课程表学生表成绩表如下查询选修了c03课程的学生学号和姓名。
course
列名数据类型约束说明cnochar(4)主键非空课程号cnamevarchar(40)非空课程名cpnochar(4)参照course(cno)先修课ccredittinyint学分
student
列名数据类型约束说明snochar(7)主键非空学号snamechar(10)非空学生姓名ssexenum(‘男’,‘女’)默认‘男’性别sagetinyint年龄sdeptchar(20)默认’计算机系’系别
sc
列名数据类型约束说明snochar(7)主键非空参照student(sno)学号cnochar(4)主键非空参照course(cno)课程号gradedecimal(5,1)成绩ccredittinyint
代码
# 查询选修了c03课程的学生学号和姓名
select s.sno,s.sname from student s,sc
where sc.sno s.sno
and cno c03;35、查询实验题-查询考试不及格的学生的学号包括没有成绩的
题目
查询考试不及格的学生的学号包括没有成绩的。选课表(sc)表结构如下
代码
# 查询考试不及格的学生的学号包括没有成绩的
select distinct sno from sc
where grade 60 or grade is null;
# 别忘了学号的去重