【数据库】软件测试之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

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

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

vb机试考试成绩分析与统计,设计与实现(高数概率统计)-141-(代码+程序说明)

转载地址http://www.3q2008.com/soft/search.asp?keyword141 前言: 为何口出狂言,作任何VB和ASP的系统, 这个就是很好的一个证明 :) 又有些狂了... 数据库操作谁都会,接触的多了也没什么难的,VB编程难在哪?算法上,这个是一个算法题的毕业设计,里面涉及到对试卷的 平均分,最…

AI编程已有公司纳入绩效,你的AI编程工具是什么?

自从ChatGPT带动全球AI热潮&#xff0c;AI席卷着各行各业。编程界也不例外&#xff0c;最出名的摸过OpenAI与GitHub联合开发的Github Copilot。Github Copilot带动了一大堆AI编程工具的出现。后来Github Copilot付费了&#xff0c;再加上网络方面的问题&#xff0c;在国内使用G…

基于PHP的店家服务与管理交互平台

目 录 摘 要 I Abstract II 引 言 1 1相关技术 3 1.1 PHP 3 1.2 ThinkPHP框架 3 1.2.1 Struts结构 3 1.2.2 MVC 3 1.2 Tomcat服务器 3 1.3 MySQL数据库 3 1.4 LayUI框架 4 1.5 ECharts 4 1.6 本章小结 4 2 系统分析 5 2.1 功能需求 5 2.2 用例分析 6 2.3 非功能需求 8 2.4 本章…

MySQL--索引类型详解

索引的类型 主键索引&#xff1a; PRIMARY KEY&#xff0c;当一张表的某个列是主键的时候&#xff0c;该列就是主键索引&#xff0c;一张表只允许有一个主键索引&#xff0c;主键所在的列不能为空。 创建主键索引的SQL语法&#xff1a; # 给user表中的id字段创建名为id_ind…

【Datawhale学习笔记】从大模型到AgentScope

从大模型到AgentScope AgentScope是一款全新的Multi-Agent框架&#xff0c;专为应用开发者打造&#xff0c;旨在提供高易用、高可靠的编程体验&#xff01; 高易用&#xff1a;AgentScope支持纯Python编程&#xff0c;提供多种语法工具实现灵活的应用流程编排&#xff0c;内置…

数字化车间MES管理系统如何降低如何降低企业生产成本

数字工厂管理系统在降低制造企业生产成本方面发挥了重要的作用。通过优化物流和信息流&#xff0c;实现生产过程的自动化、智能化和可视化&#xff0c;数字工厂管理系统将从三个方面来降低生产成本。 1、数字工厂管理系统可以通过减少库存量来降低企业的生产成本。数字工厂管理…

GEE:计算一个遥感影像的空像素占比

作者:CSDN @ _养乐多_ 本文将介绍,如何在 Google Earth Engine (GEE) 平台计算一个遥感影像的空像素占比,其中,包含获取研究区内所有像素的总数的代码,以及获取非空像素的总数的代码。 结果如下图所示, 文章目录 一、核心函数1.1 获取研究区内所有像素的总数1.2 获取非…

【面试精讲】Java线程6种状态和工作原理详解,Java创建线程的4种方式

Java线程6种状态和工作原理详解&#xff0c;Java创建线程的4种方式 目录 一、Java线程的六种状态 二、Java线程是如何工作的&#xff1f; 三、BLOCKED 和 WAITING 的区别 四、start() 和 run() 源码分析 五、Java创建线程的所有方式和代码详解 1. 继承Thread类 2. 实现…

管理类联考-复试-管理类知识-其他常见词汇

文章目录 其他常见词汇营销4P、营销4C营销STP理论破窗效应价格歧视/区别定价定价策略——撇脂定价策略定价策略——渗透定价策略 心理账户机会成本看不见的手市场失灵马太效应鲶鱼效应禀赋效应&#xff08;马克杯实验&#xff09;羊群效应帕累托原则长尾理论 其他常见词汇 营销…

安装Mysql时报错[Warning] TIMESTAMP with implicit DEFAULT

win10安装mysql5.7.26(免安装版本)过程中 在执行mysqld --initialize命令时 报错&#xff1a; [Warning]解决方法&#xff1a; [Warning] TIMESTAMP with implicit DEFAULT value is deprecated. Please use --explicit_defaults_for_timestamp server option (see document…

LINE社群运营教学

LINE 社群就是一个大型的公开聊天室&#xff0c;通过LINE社群不需要将对方添加为好友就可以聊天。它主要是以「兴趣」作为区分&#xff0c;所以商家可以在社群中找到不少潜在客户。尤其是面向台湾、日本、泰国这些地区的商家&#xff0c;LINE在这些地区的普及度很高&#xff0c…

记录一个vue编辑的移动端页面

<template><div class"wrap"><el-form :model"queryParams" ref"queryForm" size"small" :inline"true" label-width"120px"><el-form-item label"班级" prop"classId"…

【MATLAB第98期】基于MATLAB的MonteCarlo蒙特卡罗结合kriging克里金代理模型的全局敏感性分析模型(有目标函数)

【MATLAB第98期】基于MATLAB的Monte Carlo蒙特卡罗结合kriging克里金代理模型的全局敏感性分析模型&#xff08;有目标函数&#xff09;【更新中】 PS:因内容涉及较多&#xff0c;所以一时半会更新不完 后期会将相关原理&#xff0c;以及多种功能详细介绍。 麻烦点赞收藏&#…

Buildroot 之一 详解源码及架构

在之前的博文中,我们学习了直接通过 Makefile 手动来进行构建 U-Boot 和 Linux Kernel 等,其实,目前存在多种嵌入式 Linux 环境的构建工具,其中,Buildroot 就是被广泛应用的一种。今天就来详细学习一个 Buildroot 这个自动化构建工具。 Buildroot Buildroot 是一个运行于…

HCIP---IS-IS协议

文章目录 前言一、pandas是什么&#xff1f;二、使用步骤 1.引入库2.读入数据总结 一.IS-IS协议概述 IS-IS是一种基于链路状态的内部网关协议&#xff08;IGP&#xff09;&#xff0c;它使用最短路径优先算法&#xff08;SPF或Dijkstra&#xff09;进行路由计算。这种协议在自治…

如果让你实现实时消息推送你会用什么技术?轮询、websocket还是sse

在日常的开发中&#xff0c;我们经常能碰见服务端需要主动推送给客户端数据的业务场景&#xff0c;比如_数据大屏的实时数据_&#xff0c;比如_消息中心的未读消息_&#xff0c;比如_聊天功能_等等。 本文主要介绍SSE的使用场景和如何使用SSE。 学习就完事了 服务端向客户端推…

使用 Logstash 丰富你的 Elasticsearch 文档

作者&#xff1a;来自 Elastic David Pilato 我们在上一篇文章中看到&#xff0c;我们可以使用摄取管道中的 Elasticsearch Enrich Processor 在 Elasticsearch 中进行数据丰富。 但有时&#xff0c;你需要执行更复杂的任务&#xff0c;或者你的数据源不是 Elasticsearch&#…

掌握这3种方法,mp3格式转换就是这么简单!

掌握MP3格式转换并不需要复杂的技术或专业知识。在数字化时代&#xff0c;我们有许多简单而有效的方法可以实现这一目标。无论是为了节省存储空间&#xff0c;提高音频文件的兼容性&#xff0c;还是其他需求&#xff0c;本文将介绍三种简单的方法&#xff0c;让您轻松掌握mp3格…

编程界的圣经:从Scheme到JavaScript构建你的计算思维

文章目录 适读人群目 录 《计算机程序的构造和解释》&#xff08;Structure and Interpretation of Computer Programs&#xff0c;简记为SICP&#xff09;是MIT的基础课教材&#xff0c;出版后引起计算机教育界的广泛关注&#xff0c;对推动全世界大学计算机科学技术教育的发…

掌握潮流,使用渐变色彩图标icon,打造独特风格!

渐变色图标icon非常抢眼&#xff0c;从日常使用频率最高的手机到街上随处可见的海报&#xff0c;通常色彩搭配出众&#xff0c;让人感觉很惊艳。对色彩搭配的不同理解会影响我们设计产品的最终性能。本文将带您了解在UI设计圈兴起的时尚色彩组合——什么是渐变色&#xff0c;如…