MySQL 练习二

表数据:

CREATE TABLE J_TEACHER (tno int NOT NULL PRIMARY KEY,tname varchar(20) NOT NULL);CREATE TABLE J_STUDENT(sno int NOT NULL PRIMARY KEY,sname varchar(20) NOT NULL,sage datetime NOT NULL,ssex char(2) NOT NULL);CREATE TABLE J_COURSE(cno int NOT NULL PRIMARY KEY,cname varchar(20) NOT NULL,tno int NOT NULL);CREATE TABLE J_SCORE(sno int NOT NULL,cno int NOT NULL,score int NOT NULL);ALTER TABLE J_SCORE ADD CONSTRAINT FK_SCORE_course FOREIGN KEY(cno)REFERENCES J_COURSE (cno);ALTER TABLE J_SCORE ADD CONSTRAINT FK_score_student FOREIGN KEY(sno)REFERENCES J_STUDENT (sno);

练习:

1、查询课程1的成绩比课程2的成绩高的所有学生的学号。

select s1.sno fromj_score s1 join j_score s2on s1.sno = s2.snowhere s1.cno = 1 and s2.cno = 2 and s1.score > s2.score;

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

select sno,avg(score) from j_score group by sno having avg(score) > 60

3、查询所有同学的学号、姓名、选课数、总成绩。

select s1.sno,s1.sname,s2.a,s2.b fromj_student s1join(select sno,count(*) a ,sum(score) b from j_score group by sno) s2on s1.sno = s2.sno;

4、查询姓“李”的学生的个数。

select count(sno) from j_student where sname like '李%';

5、查询没学过“叶平”老师课的同学的学号、姓名。

select sno,sname from j_student where sno not in(select sno from j_score where cno in(select cno from j_course where tno in(select tno from j_teacher where tname = '叶平')));

6、查询同时学过课程1和课程2的同学的学号、姓名。

select sno,sname from j_student where sno in(select s1.sno from(select sno from j_score  where cno = 1) s1join(select sno from j_score where cno = 2) s2on s1.sno = s2.sno  )

7、查询学过“叶平”老师所教所有课程的所有同学的学号、姓名。

select sno,sname from j_student where sno in (select sno fromj_scorejoinj_courseonj_score.cno = j_course.cnojoinj_teacheron j_course.tno = j_teacher.tnowhere j_teacher.tname = '叶平'group by snohaving count(distinct j_course.cno) = (select count(cno) from j_course join j_teacher on j_course.tno = j_teacher.tno where j_teacher.tname = '叶平')) 

8、查询 课程编号1的成绩 比 课程编号2的成绩 高的所有同学的学号、姓名。

select sno,sname from j_student where sno in (select s1.sno from(select sno,score from j_score  where cno = 1) s1join(select sno,score from j_score where cno = 2) s2on s1.sno = s2.sno  where s1.score > s2.score);

9、查询所有课程成绩小于60分的同学的学号、姓名。

select sno,sname from j_student where sno in(select s1.sno from(select sno,count(*) a from j_score where score < 60 group by sno) s1  join(select sno,count(*) b from j_score group by sno ) s2on s1.a = s2.b and s1.sno =s2.sno); 

10、查询所有课程成绩大于60分的同学的学号、姓名。

select sno,sname from j_student where sno in(select s1.sno from(select sno,count(*) a from j_score where score > 60 group by sno) s1  join(select sno,count(*) b from j_score group by sno ) s2on s1.a = s2.b and s1.sno =s2.sno);

11、查询没有学全所有课的同学的学号、姓名

select sno,sname from j_student where sno in(select sno from j_scoregroup by snohaving count(cno) < (select count(distinct cno) from j_course));

12、查询至少有一门课程 与 学号为1的同学所学课程 相同的同学的学号和姓名

select sno,sname from j_student where sno in(select distinct sno from j_score where cno in(select cno from j_score where sno=1));

13、查询和2号同学学习的课程完全相同的其他同学学号和姓名。

select sno,sname from j_student where sno in (select s1.sno from(select * from j_score where sno!=2 ) s1join(select cno from j_score where sno= 2) s2on s1.cno=s2.cnogroup by snohaving count(*) = (select count(cno) from j_score where sno = 2))

14、查询各科成绩最高分和最低分。以如下形式显示:课程号,最高分,最低分

select cno,max(score),min(score) from j_score group by cno;

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

select count(distinct sno) from j_score group by cno;

16、查询出只选修了一门课程的全部学生的学号和姓名。

select sno,sname from j_student where sno in (select s1.sno from (select sno,count(cno) a from j_score group by sno) s1where s1.a = 1);

17、查询同名同性学生名单,并统计同名人数。

select count(*) from j_student s1,j_student s2 where s1.sname = s2.sname and s1.ssex = s2.ssex and s1.sno != s2.sno group by s1.sname;select sname,count(*) from j_student group by sname having count(*)>1;

18、查询选修“叶平”老师所授课程的学生中,成绩最高的学生姓名及其成绩。

select s1.sname,s2.score fromj_student s1join (select sno,score from j_score where score in (select max(score) from j_score where cno in (select cno from j_course where tno in (select tno from j_teacher where tname = '叶平'))group by cno)) s2on s1.sno = s2.sno;

19、查询不同课程成绩相同的学生的学号、课程号、学生成绩。

select s1.sno,s1.cno,s1.score from 
j_score s1,j_score s2 
where s1.score = s2.score 
and s1.cno != s2.cno 
and s1.sno = s2.sno;

20、查询每门课程成绩最好的学生学号

select sno,cno from j_score s1 
where s1.score = (select max(score) from j_score s2 where s1.cno = s2.cno)

21、查询至少选修了5门课程的学生学号。

select sno from j_score group by sno having count(*) >= 5;

22、查询没学过“叶平”老师讲授的任一门课程的学生姓名。

select sname from j_student where sno not in (select sno from j_score where cno in (select cno from j_course where tno = (select tno from j_teacher where tname = '叶平')));

23、查询两门以上不及格课程的同学的学号及其平均成绩。

select sno,avg(score) from j_score 
where score < 60 group by sno having count(*) >= 2;

24、查询最受欢迎的老师(选修学生最多的老师)。

select tno,tname from j_teacher where tno in(select tno from j_course where cno in (select cno from j_score group by cno having count(*) =(select max(b.a) from (select cno,count(sno) a from j_score group by cno) b)));

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

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

相关文章

kubernetes最小调度单元Pod概述

Pod概述 一.Pod的概念1.Pod是什么2.Pod网络共享实现方式3.Pod存储共享方式4.创建Pod的流程 二.使用YAML文件定义Pod资源1.Pod资源清单YAML文件书写技巧1.YAML语法格式&#xff1a;2.配置Linux tab缩进两个空格3.使用kubectl explain帮助命令 2.创建Pod及Pod常用命令1.创建Pod资…

js中多重引号会导致函数的参数失效报错-Invalid or unexpected token

在js使用中我们经常会使动态添加html信息到元素对象中&#xff0c;且还加入了函数及其&#xff0c;函数对应参数&#xff0c;这个时候就会使用多重引号去拼接&#xff0c;如果拼接中没有做引号的转义&#xff0c;就会出现Invalid or unexpected token。 例如以下代码&#xff0…

利器 | 测试必会之 Linux 三剑客 ( grep / awk / sed )

Linux 给人的印象是黑乎乎的神秘窗口&#xff0c;文本操作和数据处理似乎没有 Windows 窗口界面直观方便。其实Linux 有自己的独特的法宝&#xff0c;称之为三剑客&#xff1a;grep&#xff0c;awk 和 sed。你可以用这三件法宝很方便的处理数据 &#xff1a;查找&#xff0c;分…

【中间件】docker数据卷

&#x1f4dd;个人主页&#xff1a;五敷有你 &#x1f525;系列专栏&#xff1a;中间件 ⛺️稳中求进&#xff0c;晒太阳 1.数据卷&#xff08;容器数据管理&#xff09; 修改nginx的html页面时&#xff0c;需要进入nginx内部。并且因为内部没有编辑器&#xff0c;修改…

速盾:免备案防攻击cdn

在互联网时代&#xff0c;网站安全和防御攻击成为了每个网站所有者都需要关注的重要问题。随着网络攻击手段的不断进化和攻击频率的不断增加&#xff0c;传统的防火墙和安全策略已经无法满足现代网络安全的需求。针对这一问题&#xff0c;出现了许多新的防御手段和技术&#xf…

Redis - 高并发场景下的Redis最佳实践_翻过6座大山

文章目录 概述6座大山之_缓存雪崩 &#xff08;缓存全部失效&#xff09;缓存雪崩的两种常见场景如何应对缓存雪崩&#xff1f; 6座大山之_缓存穿透&#xff08;查询不存在的 key&#xff09;缓存穿透的原因解决方案1. 数据校验2. 缓存空值3. 频控4. 使用布隆过滤器 6座大山之_…

Java项目:73 ssm档案管理系统

作者主页&#xff1a;源码空间codegym 简介&#xff1a;Java领域优质创作者、Java项目、学习资料、技术互助 文中获取源码 项目介绍 角色&#xff1a;管理员、用户 用户点击进入到系统操作界面&#xff0c;可以对个人中心、警察信息管理、事故信息管理、申诉信息管理等功能模…

基于java+springboot+vue实现的医院门诊信息管理系统(文末源码+Lw+ppt)23-325

摘 要 系统根据现有的管理模块进行开发和扩展&#xff0c;采用面向对象的开发的思想和结构化的开发方法对医院门诊信息的现状进行系统调查。采用结构化的分析设计&#xff0c;该方法要求结合一定的图表&#xff0c;在模块化的基础上进行系统的开发工作。在设计中采用“自下而…

微服务高级篇(四):多级缓存:Nginx本地缓存 --- Redis缓存 --- 进程缓存

文章目录 一、多级缓存概念二、准备工作【导入案例&#xff0c;并搭建Nginx反向代理】2.1 导入商品案例2.1.1 安装MySQL2.1.2 导入SQL2.1.3 导入Demo工程2.1.4 启动2.1.5 导入商品查询页面 三、JVM进程缓存【第三级缓存】3.1 本地进程缓存与分布式缓存的区别3.2 本地进程缓存&a…

DiskGenius克隆的硬盘副本通过EasyUEFI重建引导并启动

0. 使用DiskGenius克隆硬盘副本。可能用于备份&#xff0c;可能用于换硬盘类型&#xff0c;也可能是硬盘整体扩容。DiskGenius可以方便的通过克隆硬盘来实现硬盘分区扩容。硬盘整体空间增大&#xff0c;每个分区大小也可以调整并增大。 1. 进入PE系统&#xff0c;使用EasyUEFI…

Android 开发制作系统签名

一、使用命令签名 这种方式不需要系统源码编译环境&#xff0c;可以直接对 apk 文件进行签名。 1、获取系统签名文件 首先&#xff0c;从系统源码环境中获取制作系统签名所需相关文件&#xff0c;在 build/target/product/security/ 下的 platform.pk8 和 platform.x509.pem。…

DC-4靶机

一.环境搭建 1.下载地址 靶场下载地址:https://download.vulnhub.com/dc/DC-4.zip 下载不下来用迅雷下载 2.虚拟机配置 切换为nat模式 开启靶机&#xff0c;遇到所有的错误直接点重试或者是&#xff0c;开启后呈现为下图即可 二.开始渗透 1.信息收集 老规矩&#xff0c;…

【排序算法】插入排序与选择排序详解

文章目录 &#x1f4dd;选择排序是什么&#xff1f;&#x1f320;选择排序思路&#x1f309; 直接选择排序&#x1f320;选择排序优化&#x1f320;优化方法&#x1f309;排序优化后问题 &#x1f320;选择排序效率特性 &#x1f309;插入排序&#x1f320;插入排序实现 &#…

简单了解单例模式

什么是单例模式 对于一个类&#xff0c;只有一个实例化的对象&#xff0c;我们构建单例模式一般有两种&#xff1a;饿汉式和懒汉式 饿汉式 优点是无线程安全问题&#xff0c;类加载就创建对象缺点是占内存 class Singleton01{private static Singleton01 instance new Sing…

objection命令语句大全简洁版

一、objection基础命令 1、过root检测 objection -g 包名 explore --startup-command "android root disable"2、过sll证书效验 objection -g 包名 explore --startup-command "android sslpinning disable"二、基础命令 进入命令 objection -g 包名 explo…

【JavaScript】JavaScript 程序流程控制 ⑥ ( while 循环概念 | while 循环语法结构 )

文章目录 一、while 循环1、while 循环概念2、while 循环语法结构 二、while 循环 - 代码示例1、打印数字2、计算 1 - 10 之和 一、while 循环 1、while 循环概念 在 JavaScript 中 , while 循环 是一种 " 循环控制语句 " , 使用该语句就可以 重复执行一段代码块 , …

瑞_Redis_商户查询缓存_什么是缓存

文章目录 项目介绍1 短信登录2 商户查询缓存2.1 什么是缓存2.1.1 缓存的应用场景2.1.2 为什么要使用缓存2.1.3 Web应用中缓存的作用2.1.4 Web应用中缓存的成本 附&#xff1a;缓存封装工具类 &#x1f64a; 前言&#xff1a;本文章为瑞_系列专栏之《Redis》的实战篇的商户查询缓…

设计模式(1):介绍

这篇文章小编开始讲一个新的话题——设计模式&#xff0c;在讲之前小编要给大家强调几点&#xff1a; 1. 大家不要期望通过这篇文章就能把设计模式掌握了&#xff0c;这种情况不太可能。大家通过这篇文章最重要的事就是要把设计模式的思维融入大家的学习或工作中。想要真正的学…

C语言---------strlen的使用和模拟实现

字符串是以‘\0’作为结束标志&#xff0c;strlen函数的返回值是‘\0’前面的字符串的个数&#xff08;不包括‘\0’&#xff09; 注意 1&#xff0c;参数指向的字符串必须以‘\0’结束 2&#xff0c;函数的返回值必须以size_t,是无符号的 使用代码 ​ #include<stdio.…

学习刷题-13

3.23 hw机试【二叉树】 剑指offer32 剑指 offer32&#xff08;一、二、三&#xff09;_剑指offer 32-CSDN博客 从上到下打印二叉树I 一棵圣诞树记作根节点为 root 的二叉树&#xff0c;节点值为该位置装饰彩灯的颜色编号。请按照从 左 到 右 的顺序返回每一层彩灯编号。 输…