【数据库】软件测试之MySQL数据库练习题目

有表如下:

Student 学生表

SC 成绩表

Course 课程表

Teacher 老师表

每个学生可以学习多门课程,每一个课程都有得分,每一门课程都有老师来教,一个老师可以教多个学生

1、查询姓‘朱’的学生名单 

select * from Student where sname like '朱%'

2、查询同名字同性别学生名单,并统计同名人数

select sname,ssex,count(*) from Student GROUP BY sname,ssex having count(*) >= 2

3、查询每门课程的平均成绩,结果按平均成绩升序排列,平均成绩相同时,按照课程号降序排列

select cid,avg(score) from SC GROUP BY cid ORDER BY avg(score) ASC,cid DESC

4、查询平均成绩大于85的所有学生的学号,姓名和平均成绩

-- 子查询
select SC.sid, Student.sname , avg(SC.score) from SC,Student where SC.sid = Student.sid GROUP BY SC.sid,Student.sname HAVING avg(SC.score) > 85
-- 关联查询
-- Student s ----s是表Student的别名
select  SC.sid, s.sname, avg(SC.score) from SC INNER JOIN Student s on SC.sid = s.sid GROUP BY SC.sid,s.sname HAVING avg(SC.score) > 85;
-- 或 :
select  s.sid, s.sname, avg(score) from SC INNER JOIN Student s on SC.sid = s.sid GROUP BY sid,s.sname HAVING avg(score) > 85;

5、查询课程名称为“睡觉”,且分数低于60的学生姓名和分数

-- 方法1、通过关联查询
select s.sname,SC.score
from Course c INNER JOIN SC on c.cid = SC.cid INNER JOIN Student s on SC.sid = s.sid
where c.cname = '睡觉' and SC.score < 60-- 方法2、通过子查询
select s.sname,SC.score from Student s,SC where s.sid = SC.sid and SC.score < 60 and SC.cid in (
select c.cid from Course c where c.cname = '睡觉')

6、查询所有学生的选课情况

-- ⚠️ 以学生为主 所以是左查询
select s.sname,c.cname from Student s LEFT JOIN SC on s.sid = SC.sid INNER JOIN Course c on SC.cid = c.cid
-- 或者第二个用 left join
select s.sname,c.cname from Student s LEFT JOIN SC on s.sid = SC.sid LEFT JOIN Course c on SC.cid = c.cid

7、查询任何一门课程成绩在70分以上的学生姓名、课程名称和分数

-- (1)、用having
select s.sname,c.cname,SC.score from Student s INNER JOIN SC on s.sid = SC.sid INNER JOIN Course c on SC.cid = c.cid having SC.score > 70
-- (2)、用where
select s.sname,c.cname,SC.score from Student s INNER JOIN SC on s.sid = SC.sid INNER JOIN Course c on SC.cid = c.cid where SC.score > 70

8、查询每门课程被选修的学生数

select c.cid,c.cname,count(*) from SC INNER JOIN Course c on SC.cid = c.cid GROUP BY c.cid,c.cname

9、查询不同老师所教不同课程平均分从高到低显示 

select t.tname,c.cname,avg(SC.score)
from Teacher t INNER JOIN Cource c on c.tid = t.tid 
INNER JOIN SC on SC.cid = c.cid 
GROUP BY t.tid c.cname 
ORDER BY avg(sc.score) desc

10、按照各科平均成绩从低到高和及格率百分比从高到低显示——select里面嵌套另外的select

-- 及格率 : 这一科 及格人数 / 这一科目的总人数
-- ⚠️直接这样用结果不对:(select count(*) from SC where score >= 60) 因为没有办法和外面的select确认是同一个课程
-- where sc2.cid = SC.cid  ----这句表示 查询的是当前课程select SC.cid,avg(SC.score),(select count(*) from SC sc2 where sc2.cid = SC.cid and sc2.score >= 60)/count(*) 
from SC GROUP BY SC.cid  ORDER BY SC.cid

11、查询和‘2’号的同学 学习的课程完全相同的其他同学的学号和姓名

-- 课程完全相同:课程在2号学习课程范围内 + 数量一样--2同学:【a,b,c,d,e】
--1同学:【a,b,c,d,e,f】——1同学就不行,用下面步骤2去除它-- 步骤1: 2号学生学过的课
select cid from SC where sid = 2-- 步骤2: 没学过2号学生课的同学/学过课程 不在2号学过课程范围内 的人——比如上面的1同学学过f课程,不在这个范围内
select SC.sid ,SC.cid from SC where SC.cid not in (select SC.cid from SC where SC.sid = 2
)-- 步骤3:剩下的都是学习过2号学生课 以内的人 
-- 可能少学 那就同时需要数量一致
select SC.sid from SC where SC.sid not in (select SC.sid from SC where SC.cid not in (select SC.cid from SC where SC.sid = 2)
)GROUP BY SC.sid having count(*) = (select count(*) from SC where SC.sid = 2)-- 去除2号同学
select SC.sid from SC where SC.sid not in (select SC.sid from SC where SC.cid not in (select SC.cid from SC where SC.sid = 2)
) and SC.sid != 2 GROUP BY SC.sid having count(*) = (select count(*) from SC where SC.sid = 2)-- 去除2号同学后的学生名字和学号
select s.sid,s.sname from Student s where s.sid in (select SC.sid from SC where SC.sid not in (select SC.sid from SC where SC.cid not in (select SC.cid from SC where SC.sid = 2)) and SC.sid != 2 GROUP BY SC.sid having count(*) = (select count(*) from SC where SC.sid = 2)
)

12、查询学过‘黄观’老师所教的所有课的同学的学号、姓名 ---包括 不止学过黄观老师的课

(1):黄瓜老师教的课:
select c.cid from Course c INNER JOIN Teacher t on c.tid = t.tid where t.tname = '黄观'
(2):完全学习过黄观老师课的人 可能不止黄观老师的课
select s.sid,s.sname from Student s where s.sid in(select SC.sid from SC where SC.cid in (select c.cid from Course c INNER JOIN Teacher t on c.tid = t.tid where t.tname = '黄观' )GROUP BY SC.sid HAVING count(*) = (select count(*) from Course c INNER JOIN Teacher t on c.tid = t.tid where t.tname = '黄观'))

13、把 ‘SC’ 表中 ’黄观‘ 老师教的课的成绩都更改为此课程的平均成绩

-- 错误的解题思路:在查询该表的时候 去修改表中的数据,报错,不允许这样操作
update SC set score = (select avg(score) from SC)
-- ‼️引入临时表 t 把查询的平均成绩作为临时表t
update SC,(select SC.cid as cid,avg(SC.score) as score from SC group by SC.cid) t 
set SC.score = t.score
where SC.cid = t.cid 
and SC.cid in
(select c.cid from Course c INNER JOIN Teacher t on c.tid = t.tid where t.tname = '黄观')

14、查询 课程编号‘2’ 的成绩 比 课程编号‘1’ 课程低的所有同学的学号、姓名

-- 有两个课程 需要单独查询,所以设置 sc2 和 sc1---->sc2.cid = 2 and sc1.cid = 1
-- sc2.score < sc1.score
-- 需要是同一个同学:sc1.sid = sc2.sid
select * from Student where sid in (
select sc1.sid from SC sc2,SC sc1 where sc2.score < sc1.score and sc2.cid = 2 and sc1.cid = 1 and sc1.sid = sc2.sid
)

15、查询没学过“黄观“老师课的同学的学号、姓名

select s.sid,s.sname from Student s where s.sid not in(select SC.sid from SC where SC.cid in (select c.cid from Course c INNER JOIN Teacher t on c.tid = t.tid where t.tname = '黄观' )GROUP BY SC.sid 
)

16、查询平均成绩大于60分的同学的学号和平均成绩

select sid,avg(score) from SC GROUP BY sid HAVING avg(score) > 60

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.hqwc.cn/news/529105.html

如若内容造成侵权/违法违规/事实不符,请联系编程知识网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

第二证券:港股通交易股票范围详解:哪些股票可以买卖?

港股通现在能够出资的股票有&#xff1a;①恒生归纳大型股指数的成分股&#xff1b;②恒生归纳中型股指数的成分股&#xff1b;③在沪市上市生意的AH股上市公司的H股。 注意&#xff1a;港股通标的并不是原封不动的&#xff0c;它每半年调整一次&#xff0c;被调出港股通标的的…

Excel下拉自动填充

1、选中需要下拉填充的单元格&#xff0c;按下Ctrl&#xff0c;然后再往下拖动填充。 下拉结果&#xff1a; 2、选中两个连续的单元格&#xff0c;往下拖动填充&#xff0c;可以填充增加两数差。 下拉结果&#xff1a; 本文为学习笔记&#xff0c;所参考文章均已附上链接&#…

OpenCV开发笔记(七十七):相机标定(二):通过棋盘标定计算相机内参矩阵矫正畸变摄像头图像

若该文为原创文章&#xff0c;转载请注明原文出处 本文章博客地址&#xff1a;https://hpzwl.blog.csdn.net/article/details/136616551 各位读者&#xff0c;知识无穷而人力有穷&#xff0c;要么改需求&#xff0c;要么找专业人士&#xff0c;要么自己研究 红胖子(红模仿)的博…

管理类联考-复试-管理类知识-领导激励理论控制

文章目录 领导领导方式的基本类型领导权变理论情境领导理论管理权力四种员工类型 激励理论归因理论、晕轮效应、假设相似性古典动机理论马斯洛需求理论双因素理论XY理论三种需求理论工作特征模型当代动机理论目标设置理论强化理论公平理论期望理论 控制控制及其必要性PDCA、甘特…

C# 用 System.Xml 读 Freeplane.mm文件,生成测试用例.csv文件

Freeplane 是一款基于 Java 的开源软件&#xff0c;继承 Freemind 的思维导图工具软件&#xff0c;它扩展了知识管理功能&#xff0c;在 Freemind 上增加了一些额外的功能&#xff0c;比如数学公式、节点属性面板等。 先写一个测试程序 test_read_Xml.cs 如下 using System;…

某图网查看大图接口结果加密逆向之数据解密扣取

逆向网址 aHR0cHM6Ly95ZXNtenQuY29tLw 逆向链接 aHR0cHM6Ly95ZXNtenQuY29tL2JlYXV0eS8 逆向接口 aHR0cHM6Ly95ZXNtenQuY29tL2FwcC9wb3N0L3A/aWQ9MTA3NjQy 那么我们可以看到接口请求结果为加密数据&#xff0c; 需要手动解开才可以拿到数据 展示图片大图 逆向过程 请求方式&…

无需编程技能:Python爬虫与数据可视化毕业论文代写服务

引言 作为一名在软件技术领域深耕多年的专业人士&#xff0c;我不仅在软件开发和项目部署方面积累了丰富的实践经验&#xff0c;更以卓越的技术实力获得了&#x1f3c5;30项软件著作权证书的殊荣。这些成就不仅是对我的技术专长的肯定&#xff0c;也是对我的创新精神和专业承诺…

展会回顾 | 同立海源生物亮相2024第7届CAR-TCR欧洲峰会

欧洲峰会 2024年2月28-29日&#xff0c;第七届CAR-TCR欧洲峰会CAR-TCR Summit Europe在英国伦敦圆满落幕。同立海源生物亮相本次峰会&#xff0c;重点展示了公司GMP级别的细胞分选磁珠、人源重组蛋白、免疫细胞培养基等CGT领域核心原料和整体解决方案。 作为全球领先的行业盛…

Git LFS【部署 01】Linux环境安装git-lfs及测试

Linux系统安装git-lfs及测试 1.下载2.安装3.测试4.总结 Git LFS&#xff08;Large File Storage&#xff09;是一个用于Git版本控制系统的扩展&#xff0c;它专门用来管理大型文件&#xff0c;如图像、音频和视频文件。 1.下载 安装包下载页面&#xff1a;https://github.com/…

爆款KH-IPEX-K501-29

KH-IPEX-K501-29品牌: kinghelm(金航标)封装: SMD 描述: 1代

[MYSQL数据库]--表的增删查改和字段类型

前言 作者&#xff1a;小蜗牛向前冲 名言&#xff1a;我可以接受失败&#xff0c;但我不能接受放弃 如果觉的博主的文章还不错的话&#xff0c;还请点赞&#xff0c;收藏&#xff0c;关注&#x1f440;支持博主。如果发现有问题的地方欢迎❀大家在评论区指正 目录 一、表的增…

使用ISCSI服务部署网络存储

目录 一、ISCS技术应用场景之一 二、环境准备&#xff1a; 2.1网络部署 2.2服务端硬盘 三、配置ISCSI服务端 第一步、安装iscsi服务端的交互式配置工具targetcli 第二步&#xff1a;进入iscsi服务的配置“文件” 第三步&#xff1a;创建iscsi target 名称和配置共享资源。 3.1 …