MYSQL45道练习题---持续更新中

news2024/11/24 19:17:35

来源: Mysql_45道练习题 - 简书

共四张表:

①、course表: CId:课程id        Cname:课程名称        TId:老师id

②、student学生表:        SId:学生id        Sname:学生名称        Sage:年龄        Ssex:性别

③、teacher教师表:        TId:教师id        Tname:教师名称

④、sc学生-课程表:        SId:学生Id        CId:课程id        score:成绩

导入sql文件:


SET NAMES utf8mb4;
SET FOREIGN_KEY_CHECKS = 0;

-- ----------------------------
-- Table structure for course
-- ----------------------------
DROP TABLE IF EXISTS `course`;
CREATE TABLE `course`  (
  `CId` varchar(10) CHARACTER SET utf8 COLLATE utf8_bin NULL DEFAULT NULL,
  `Cname` varchar(10) CHARACTER SET utf8 COLLATE utf8_general_ci NULL DEFAULT NULL,
  `TId` varchar(10) CHARACTER SET utf8 COLLATE utf8_bin NULL DEFAULT NULL
) ENGINE = InnoDB CHARACTER SET = utf8 COLLATE = utf8_bin ROW_FORMAT = Dynamic;

-- ----------------------------
-- Records of course
-- ----------------------------
INSERT INTO `course` VALUES ('01', '语文', '02');
INSERT INTO `course` VALUES ('02', '数学', '01');
INSERT INTO `course` VALUES ('03', '英语', '03');

-- ----------------------------
-- Table structure for sc
-- ----------------------------
DROP TABLE IF EXISTS `sc`;
CREATE TABLE `sc`  (
  `SId` varchar(10) CHARACTER SET utf8 COLLATE utf8_bin NULL DEFAULT NULL,
  `CId` varchar(10) CHARACTER SET utf8 COLLATE utf8_bin NULL DEFAULT NULL,
  `score` decimal(18, 1) NULL DEFAULT NULL
) ENGINE = InnoDB CHARACTER SET = utf8 COLLATE = utf8_bin ROW_FORMAT = Dynamic;

-- ----------------------------
-- Records of sc
-- ----------------------------
INSERT INTO `sc` VALUES ('01', '01', 80.0);
INSERT INTO `sc` VALUES ('01', '02', 90.0);
INSERT INTO `sc` VALUES ('01', '03', 99.0);
INSERT INTO `sc` VALUES ('02', '01', 70.0);
INSERT INTO `sc` VALUES ('02', '02', 60.0);
INSERT INTO `sc` VALUES ('02', '03', 80.0);
INSERT INTO `sc` VALUES ('03', '01', 80.0);
INSERT INTO `sc` VALUES ('03', '02', 80.0);
INSERT INTO `sc` VALUES ('03', '03', 80.0);
INSERT INTO `sc` VALUES ('04', '01', 50.0);
INSERT INTO `sc` VALUES ('04', '02', 30.0);
INSERT INTO `sc` VALUES ('04', '03', 20.0);
INSERT INTO `sc` VALUES ('05', '01', 76.0);
INSERT INTO `sc` VALUES ('05', '02', 87.0);
INSERT INTO `sc` VALUES ('06', '01', 31.0);
INSERT INTO `sc` VALUES ('06', '03', 34.0);
INSERT INTO `sc` VALUES ('07', '02', 89.0);
INSERT INTO `sc` VALUES ('07', '03', 98.0);

-- ----------------------------
-- Table structure for student
-- ----------------------------
DROP TABLE IF EXISTS `student`;
CREATE TABLE `student`  (
  `SId` varchar(10) CHARACTER SET utf8 COLLATE utf8_bin NULL DEFAULT NULL,
  `Sname` varchar(10) CHARACTER SET utf8 COLLATE utf8_bin NULL DEFAULT NULL,
  `Sage` datetime(0) NULL DEFAULT NULL,
  `Ssex` varchar(10) CHARACTER SET utf8 COLLATE utf8_bin NULL DEFAULT NULL
) ENGINE = InnoDB CHARACTER SET = utf8 COLLATE = utf8_bin ROW_FORMAT = Dynamic;

-- ----------------------------
-- Records of student
-- ----------------------------
INSERT INTO `student` VALUES ('01', '赵雷', '1990-01-01 00:00:00', '男');
INSERT INTO `student` VALUES ('02', '钱电', '1990-12-21 00:00:00', '男');
INSERT INTO `student` VALUES ('03', '孙风', '1990-05-20 00:00:00', '男');
INSERT INTO `student` VALUES ('04', '李云', '1990-08-06 00:00:00', '男');
INSERT INTO `student` VALUES ('05', '周梅', '1991-12-01 00:00:00', '女');
INSERT INTO `student` VALUES ('06', '吴兰', '1992-03-01 00:00:00', '女');
INSERT INTO `student` VALUES ('07', '郑竹', '1989-07-01 00:00:00', '女');
INSERT INTO `student` VALUES ('09', '张三', '2017-12-20 00:00:00', '女');
INSERT INTO `student` VALUES ('10', '李四', '2017-12-25 00:00:00', '女');
INSERT INTO `student` VALUES ('11', '李四', '2017-12-30 00:00:00', '女');
INSERT INTO `student` VALUES ('12', '赵六', '2017-01-01 00:00:00', '女');
INSERT INTO `student` VALUES ('13', '孙七', '2018-01-01 00:00:00', '女');

-- ----------------------------
-- Table structure for teacher
-- ----------------------------
DROP TABLE IF EXISTS `teacher`;
CREATE TABLE `teacher`  (
  `TId` varchar(10) CHARACTER SET utf8 COLLATE utf8_bin NULL DEFAULT NULL,
  `Tname` varchar(10) CHARACTER SET utf8 COLLATE utf8_bin NULL DEFAULT NULL
) ENGINE = InnoDB CHARACTER SET = utf8 COLLATE = utf8_bin ROW_FORMAT = Dynamic;

-- ----------------------------
-- Records of teacher
-- ----------------------------
INSERT INTO `teacher` VALUES ('01', '张三');
INSERT INTO `teacher` VALUES ('02', '李四');
INSERT INTO `teacher` VALUES ('03', '王五');

SET FOREIGN_KEY_CHECKS = 1;

题目1:

        查询" 01 "课程比" 02 "课程成绩高的学生的信息及课程分数:

select * 
from sc a 
left join student d
    on a.sid=d.sid 
inner join sc b 
    on a.sid=b.sid and a.cid='01' and b.cid='02'
where a.score>b.score;

我自己写的、太冗余:

1、
   先找出cid为01课程的
 select * from sc where cid = 01
2、
    再找出cid课程为02课程的
select * from sc where cid = 02
3、表连接

sleect sid,score from 
( select * from sc where cid = 01) m1
join
(select * from sc where cid = 02) m2
on m1.sid = m2.sid and m1.score>m2.score

改进后:

select * from
student s join sc as m1
on s.sid = m1.sid
join sc as m2
on m1.sid = m2.sid and m1.cid = '01' and m2.cid = '02'
where m1.score > m2.score ;

题目2:

        查询同时选了" 01 "课程和" 02 "课程的学生

select * 
from sc a 
inner join sc b 
    on a.sid=b.sid and a.cid='01' and b.cid='02';
select 
	sid
from
	sc
where
	sid in (select sid from sc where cid = '01')
	and
	sid in (select sid from sc where cid = '02');
select 
	m1.sid
from 
	(select sid from sc where cid = '01') as m1
join
	(select sid from sc where cid = '02') as m2
on 
	m1.sid = m2.sid;
mysql> select
    -> m1.sid
    -> from
    -> (select sid from sc where cid = '01') as m1
    -> join
    -> (select sid from sc where cid = '02') as m2
    -> on
    -> m1.sid = m2.sid;
+------+
| sid  |
+------+
| 01   |
| 02   |
| 03   |
| 04   |
| 05   |
+------+
5 rows in set (0.00 sec)

mysql> select
    -> sid
    -> from
    -> sc
    -> where
    -> sid in (select sid from sc where cid = '01')
    -> and
    -> sid in (select sid from sc where cid = '02');
+------+
| sid  |
+------+
| 01   |
| 01   |
| 01   |
| 02   |
| 02   |
| 02   |
| 03   |
| 03   |
| 03   |
| 04   |
| 04   |
| 04   |
| 05   |
| 05   |
+------+
14 rows in set (0.00 sec)

mysql> select sid from sc where cid = '01';
+------+
| sid  |
+------+
| 01   |
| 02   |
| 03   |
| 04   |
| 05   |
| 06   |
+------+
6 rows in set (0.00 sec)

mysql> select sid from sc where cid = '02';
+------+
| sid  |
+------+
| 01   |
| 02   |
| 03   |
| 04   |
| 05   |
| 07   |
+------+
6 rows in set (0.00 sec)

题目3:

        查询选了" 01 "课程但可能没有选择" 02 "课程的学生(不存在时显示为 null )

错误写法:

mysql> select *
    -> from sc a
    -> left join sc b
    ->     on a.sid=b.sid  and  a.cid='01' and b.cid='02'
    -> ;
+------+------+-------+------+------+-------+
| SId  | CId  | score | SId  | CId  | score |
+------+------+-------+------+------+-------+
| 01   | 01   |  80.0 | 01   | 02   |  90.0 |
| 01   | 02   |  90.0 | NULL | NULL |  NULL |
| 01   | 03   |  99.0 | NULL | NULL |  NULL |
| 02   | 01   |  70.0 | 02   | 02   |  60.0 |
| 02   | 02   |  60.0 | NULL | NULL |  NULL |
| 02   | 03   |  80.0 | NULL | NULL |  NULL |
| 03   | 01   |  80.0 | 03   | 02   |  80.0 |
| 03   | 02   |  80.0 | NULL | NULL |  NULL |
| 03   | 03   |  80.0 | NULL | NULL |  NULL |
| 04   | 01   |  50.0 | 04   | 02   |  30.0 |
| 04   | 02   |  30.0 | NULL | NULL |  NULL |
| 04   | 03   |  20.0 | NULL | NULL |  NULL |
| 05   | 01   |  76.0 | 05   | 02   |  87.0 |
| 05   | 02   |  87.0 | NULL | NULL |  NULL |
| 06   | 01   |  31.0 | NULL | NULL |  NULL |
| 06   | 03   |  34.0 | NULL | NULL |  NULL |
| 07   | 02   |  89.0 | NULL | NULL |  NULL |
| 07   | 03   |  98.0 | NULL | NULL |  NULL |
+------+------+-------+------+------+-------+
18 rows in set (0.00 sec)

mysql> select *
    -> from sc a
    -> left join sc b
    ->     on a.sid=b.sid  and b.cid='02'
    -> where a.cid='01';
+------+------+-------+------+------+-------+
| SId  | CId  | score | SId  | CId  | score |
+------+------+-------+------+------+-------+
| 01   | 01   |  80.0 | 01   | 02   |  90.0 |
| 02   | 01   |  70.0 | 02   | 02   |  60.0 |
| 03   | 01   |  80.0 | 03   | 02   |  80.0 |
| 04   | 01   |  50.0 | 04   | 02   |  30.0 |
| 05   | 01   |  76.0 | 05   | 02   |  87.0 |
| 06   | 01   |  31.0 | NULL | NULL |  NULL |
+------+------+-------+------+------+-------+
6 rows in set (0.00 sec)

mysql> select *
    -> from sc a
    -> left join sc b
    ->     on a.sid=b.sid  and b.cid='02';
+------+------+-------+------+------+-------+
| SId  | CId  | score | SId  | CId  | score |
+------+------+-------+------+------+-------+
| 01   | 01   |  80.0 | 01   | 02   |  90.0 |
| 01   | 02   |  90.0 | 01   | 02   |  90.0 |
| 01   | 03   |  99.0 | 01   | 02   |  90.0 |
| 02   | 01   |  70.0 | 02   | 02   |  60.0 |
| 02   | 02   |  60.0 | 02   | 02   |  60.0 |
| 02   | 03   |  80.0 | 02   | 02   |  60.0 |
| 03   | 01   |  80.0 | 03   | 02   |  80.0 |
| 03   | 02   |  80.0 | 03   | 02   |  80.0 |
| 03   | 03   |  80.0 | 03   | 02   |  80.0 |
| 04   | 01   |  50.0 | 04   | 02   |  30.0 |
| 04   | 02   |  30.0 | 04   | 02   |  30.0 |
| 04   | 03   |  20.0 | 04   | 02   |  30.0 |
| 05   | 01   |  76.0 | 05   | 02   |  87.0 |
| 05   | 02   |  87.0 | 05   | 02   |  87.0 |
| 06   | 01   |  31.0 | NULL | NULL |  NULL |
| 06   | 03   |  34.0 | NULL | NULL |  NULL |
| 07   | 02   |  89.0 | 07   | 02   |  89.0 |
| 07   | 03   |  98.0 | 07   | 02   |  89.0 |
+------+------+-------+------+------+-------+
18 rows in set (0.00 sec)

mysql> select *
    -> from sc a
    -> left join sc b
    ->     on a.sid=b.sid  and  a.cid='01' and b.cid='02'
    -> where a.cid='01';
+------+------+-------+------+------+-------+
| SId  | CId  | score | SId  | CId  | score |
+------+------+-------+------+------+-------+
| 01   | 01   |  80.0 | 01   | 02   |  90.0 |
| 02   | 01   |  70.0 | 02   | 02   |  60.0 |
| 03   | 01   |  80.0 | 03   | 02   |  80.0 |
| 04   | 01   |  50.0 | 04   | 02   |  30.0 |
| 05   | 01   |  76.0 | 05   | 02   |  87.0 |
| 06   | 01   |  31.0 | NULL | NULL |  NULL |
+------+------+-------+------+------+-------+
6 rows in set (0.00 sec)

mysql> select *
    -> from sc a
    -> left join sc b
    ->     on a.sid=b.sid  and  a.cid='01'  ;
+------+------+-------+------+------+-------+
| SId  | CId  | score | SId  | CId  | score |
+------+------+-------+------+------+-------+
| 01   | 01   |  80.0 | 01   | 03   |  99.0 |
| 01   | 01   |  80.0 | 01   | 02   |  90.0 |
| 01   | 01   |  80.0 | 01   | 01   |  80.0 |
| 01   | 02   |  90.0 | NULL | NULL |  NULL |
| 01   | 03   |  99.0 | NULL | NULL |  NULL |
| 02   | 01   |  70.0 | 02   | 03   |  80.0 |
| 02   | 01   |  70.0 | 02   | 02   |  60.0 |
| 02   | 01   |  70.0 | 02   | 01   |  70.0 |
| 02   | 02   |  60.0 | NULL | NULL |  NULL |
| 02   | 03   |  80.0 | NULL | NULL |  NULL |
| 03   | 01   |  80.0 | 03   | 03   |  80.0 |
| 03   | 01   |  80.0 | 03   | 02   |  80.0 |
| 03   | 01   |  80.0 | 03   | 01   |  80.0 |
| 03   | 02   |  80.0 | NULL | NULL |  NULL |
| 03   | 03   |  80.0 | NULL | NULL |  NULL |
| 04   | 01   |  50.0 | 04   | 03   |  20.0 |
| 04   | 01   |  50.0 | 04   | 02   |  30.0 |
| 04   | 01   |  50.0 | 04   | 01   |  50.0 |
| 04   | 02   |  30.0 | NULL | NULL |  NULL |
| 04   | 03   |  20.0 | NULL | NULL |  NULL |
| 05   | 01   |  76.0 | 05   | 02   |  87.0 |
| 05   | 01   |  76.0 | 05   | 01   |  76.0 |
| 05   | 02   |  87.0 | NULL | NULL |  NULL |
| 06   | 01   |  31.0 | 06   | 03   |  34.0 |
| 06   | 01   |  31.0 | 06   | 01   |  31.0 |
| 06   | 03   |  34.0 | NULL | NULL |  NULL |
| 07   | 02   |  89.0 | NULL | NULL |  NULL |
| 07   | 03   |  98.0 | NULL | NULL |  NULL |
+------+------+-------+------+------+-------+
28 rows in set (0.00 sec)

mysql> select *
    -> from sc a
    ->  join sc b
    ->     on a.sid=b.sid  and  a.cid='01' and b.cid='02'
    -> where a.cid='01';
+------+------+-------+------+------+-------+
| SId  | CId  | score | SId  | CId  | score |
+------+------+-------+------+------+-------+
| 01   | 01   |  80.0 | 01   | 02   |  90.0 |
| 02   | 01   |  70.0 | 02   | 02   |  60.0 |
| 03   | 01   |  80.0 | 03   | 02   |  80.0 |
| 04   | 01   |  50.0 | 04   | 02   |  30.0 |
| 05   | 01   |  76.0 | 05   | 02   |  87.0 |
+------+------+-------+------+------+-------+
5 rows in set (0.00 sec)

mysql> select *
    -> from sc a
    ->  join sc b
    ->     on a.sid=b.sid  and  a.cid='01' and b.cid='02';
+------+------+-------+------+------+-------+
| SId  | CId  | score | SId  | CId  | score |
+------+------+-------+------+------+-------+
| 01   | 01   |  80.0 | 01   | 02   |  90.0 |
| 02   | 01   |  70.0 | 02   | 02   |  60.0 |
| 03   | 01   |  80.0 | 03   | 02   |  80.0 |
| 04   | 01   |  50.0 | 04   | 02   |  30.0 |
| 05   | 01   |  76.0 | 05   | 02   |  87.0 |
+------+------+-------+------+------+-------+
5 rows in set (0.00 sec)

mysql>

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

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

相关文章

淘宝店铺商品信息抓取

一、背景 为了更好了解同行或竞争对手的情况,基于对行业数据分析、市场研究、竞争情报收集等方面的需求。一些公司或个人可能希望获取淘宝店铺的商品数据,以便进行以下操作: 市场研究和竞争分析:通过分析淘宝店铺的商品数据&…

Qt [获取Dump] 使用WindowsAPI实现生成MiniDump文件

说明 客户现场的软件偶发崩溃是程序开发者,比较头疼的事情。如何更快速的定位到问题点和解决掉,是开发应该具备的基本能力。 Windows提供了一系列的API,可以记录软件崩溃前的堆栈信息。下面就实现一个生成Dump文件的程序实例。 主要代码 回…

Linux之线程管理

目录 第1关:创建线程 任务描述 相关知识 使用pthread_create函数创建线程 编程要求 答案: 第2关:线程挂起 任务描述 相关知识 使用pthread_join挂起线程 编程要求 答案: 第3关:线程终止 任务描述 相关知识 使用pthread…

意法半导体STM32F407VET6TR单片机优缺点、参数、应用和引脚封装

ST(意法半导体)的型号STM32F407VET6TR属于32位MCU微控制器,基于高性能的ArmCortex-M4 32位RISC核心,工作频率高达168MHz。单精度浮点单元(FPU)用于Cortex-M4核心,支持所有Arm单精度数据处理指令和数据类型。它还实现了一套完整的DSP指令和一个…

走进中财:创邻科技图技术赋能金融高质量发展路演圆满完成!

4月20日下午,由中财MBA金融科技研究会主办的“走进中财”主题活动在中央财经大学商学院的A28教室如期举行。中央财经大学商学院党委副书记杨中英、中财MBA金融科技研究会发起人代表贾晓强、中央财经大学商学院教授王毅等受邀参与本次大会。 创邻科技CEO兼创始人张晨…

python 实现用户登录

1. JWT Token 参考:https://www.zhihu.com/question/364616467 jwt官网:https://jwt.io/#debugger-io 1.1. Token Token 是一个宽泛的术语,它可以指代任何一种用于身份验证的机制。Token 常常被用在验证和授权流程中。Token 可以有不同的形…

标准版/开源版 移动端新增页面使用文档

在标准版开发的实际使用中,随着用户移动端的产品和信息内容不断增多,新增页面来展示对应的产品详情、模块等内容。针对一些概念或者步骤较多的内容,可以新增子页面构建多级模块结构,帮助用户快速定位。 下面就如何新增页面做一讲…

Linux中手工创建一个用户

当我们需要新创建一个用户时,有两种方法 1.使用命令添加用户 2.去配置文件里面添加用户 1,使用useradd命令: [rootlocalhost /]# useradd tmg 然后给它设置一个密码 [rootlocalhost etc]# passwd tmg Changing password for user tmg. N…

janus模块介绍-SIP Gateway

模块启动 默认的SIP GateWay也是https协议,端口为8088或者8089 如果需要在自己搭建的测试服务上测试SIP GateWay模块,则也需要修改为wss 具体改动如下: 找到/opt/janus/share/janus/demos/siptest.js var server "wss://" window.location…

Python基础知识—运算符和if语句(二)

🎬 秋野酱:《个人主页》 🔥 个人专栏:《Java专栏》 《Python专栏》 ⛺️心若有所向往,何惧道阻且长 文章目录 1.输入和输出函数1.1输出函数1.2输入函数 2.常见运算符2.1赋值运算符2.2比较运算符2.3逻辑运算符2.4and逻辑与2.5or逻辑或2.6not逻…

前端JS必用工具【js-tool-big-box】,防抖和节流的方法调用学习

这一小节,我们针对前端工具包(npm)js-tool-big-box的使用做一些讲解,主要是防抖和节流方面的。 目录 前言 1 安装和引入 2 防抖的调用学习 3 节流的调用学习 4 使用方法总结 前言 在前端项目中,经常涉及到防抖…

漏斗分析方法

目录 1.什么是漏斗分析方法 2.基本概念 3.漏斗步骤的构建 4.漏斗分析的意义 5.漏斗分析的挑战和限制 6.进行漏斗分析的步骤与方法 7.在数据分析中应用漏斗分析的策略 8.示例 1.什么是漏斗分析方法 漏斗分析方法是数据分析中一种常见的技术,专门用于优化和提…

Python 网络与并发编程(四)

文章目录 协程Coroutines协程的核心(控制流的让出和恢复)协程和多线程比较协程的优点协程的缺点 asyncio实现协程(重点) 协程Coroutines 协程,全称是“协同程序”,用来实现任务协作。是一种在线程中,比线程更加轻量级的存在,由程…

走进电线电缆行业龙头金杯电工,助推湖南“智赋万企”行动热潮

湖南省政府推动的“智赋万企”行动掀起千行百业万企的数智化浪潮,在企业、服务商、行业协会等多方共推下,湖南省的数字化生态越发繁荣。 4月23日,纷享销客举办的【走进数字化游学示范基地之金杯电工】活动在长沙顺利举行。本期活动走进电线电…

ThingsBoard远程RPC调用设备

使用 RPC 功能 客户端 RPC 从设备发送客户端 RPC 平台处理客户端RPC 服务器端 RPC 服务器端RPC结构 发送服务器端RPC 使用 RPC 功能 ThingsBoard 允许您从服务器端应用程序向设备发送远程过程调用 (RPC),反之亦然。基本上,此功能允许您向设备发送命…

vue2项目升级到vue3经历分享1

依据vue官方文档,vue2在2023年12月31日终止维护。因此决定将原来的岁月云记账升级到vue3,预计工作量有点大,于是想着把过程记录下来。 原系统使用的技术栈 "dependencies": {"axios": "^0.21.1","babel-…

Qt配置CMake出错

一个项目需要在mingw环境下编译Opencv源码,当我用Qt配置opencv的CMakeLists.txt时,出现了以下配置错误: 首先我根据下述博文介绍,手动配置了CMake,但仍不能解决问题。 Qt(MinGW版本)安装 - 夕西行 - 博客园 (cnblogs.…

数之寻软件怎么样?

数之寻软件是一款功能强大的数据恢复和备份软件,以下是对其特点和功能的详细评价: 一、数据恢复方面: 高效的数据恢复能力:数之寻软件采用了先进的算法和数据恢复技术,能够快速有效地恢复丢失或损坏的数据。无论是文…

laravel视频对接aws

本次对接文件上传,目标是实现超级大文件的上传任务,可能就是4~5个g的视频文件,折腾了蛮久熟悉s3,因此记录一下。 大家要是对filesystem不清楚去看一下官方文档不然可能有点懵逼。 首先我先是对接了一个普通的s3存储文件的功能&a…

[解决] 为什么 App Inventor 扩展导入了,但是没啥反应?

大概率是导入拓展后,没有拖动拓展到界面上! 导入拓展后,别忘了拖动拓展到主界面上,这样才算真正创建了拓展对象,这时才能使用拓展的方法。 原文:为什么 App Inventor 扩展导入了,但是没啥反应&…