MySQL—多表查询—练习(2)

news2024/11/23 21:59:02

一、引言

接着上篇博客《 MySQL多表查询——练习(1)》继续完成剩下的案例需求。


二、案例

(0)三张表(员工表、部门表、薪资等级表)

员工表:emp

部门表:dept

薪资等级表:salgrade


接着下面完成案例。从第6个需求开始。

(6)查询 “ 研发部 ” 所有员工的信息及工资等级。
1、分析

涉及三张表,两个连接条件,一个查询条件。

(连接条件:emp.salary between salgrade.losal and salgrade.hisal ,emp.dept_id = dept.id)

(查询条件:dept.name ="研发部")

2、实操
SELECT e.*, s.grade FROM emp e,dept d,salgrade s WHERE e.dept_id = d.id AND (e.salary BETWEEN s.losal AND s.hisal) AND d.name='研发部';

3、问题

随着SQL语句的复杂程度越来越高,所涉及的表也越来越多,这时SQL语句的长度越来越长,在可视化工具看起来的可视化不是很直观。

解决方法如下:

展示结果:

(7)查询 “ 研发部 ” 员工的平均工资。

分析:涉及两张表,使用聚合函数

SELECT AVG(e.salary) FROM emp e,dept d WHERE e.dept_id=d.id AND d.name='研发部';

(8)查询工资比员工 “ 灭绝 ” 高的员工信息。

分析:用子查询。先查员工 " 灭绝 " 的工资,再查其它满足需求的员工信息。

标量子查询

SELECT * FROM emp WHERE emp.salary > (SELECT e.salary FROM emp e WHERE name='灭绝');

(9)查询比平均薪资高的员工信息。

实操

SELECT * FROM emp WHERE salary > (SELECT AVG(e.salary) FROM emp e);

(10)查询低于本部门平均工资的员工信息

1、分析

先假如查询id=1 的部门的平均工资

SELECT AVG(e1.salary) FROM emp e1 WHERE e1.dept_id=1;

查到之后,按照题目的意思就是要查询当前部门的员工小于平均工资的员工信息

现在题目要求的是查询低于当前部门的平均工资的员工。即每个部门都要有这种查询结果

SELECT e2.*,(SELECT AVG(e1.salary) FROM emp e1 WHERE e1.dept_id=e2.dept_id) AS '所属部门的平均工资' FROM emp e2 WHERE e2.salary < (SELECT AVG(e1.salary) FROM emp e1 WHERE e1.dept_id=e2.dept_id);

(11)查询所有的部门信息,并统计部门的员工人数

1、分析

首先试试查询某个部门的员工数量

SELECT COUNT(*) FROM emp WHERE emp.dept_id=1;

再改一下(最终SQL语句)

SELECT d.id,d.name,(SELECT COUNT(*) FROM emp e1 WHERE e1.dept_id=d.id) AS '部门总人数' FROM dept d;

在 SELECT 语句也可以出现子查询语句。

(12)查询所有学生的选课情况,展示出学生名称,学号,课程名称

涉及到三张表:学生表 student 、课程表 course 、学生选课表 student_course

通过中间表来维护三张表的多对多的关系。

1、三张表的基本数据

课程表:course

学生表:student

学生选课表

2、实操开始

注意:三张表要消除笛卡尔积(避免无效数据),至少两个条件。

连接条件:(student.id = student_course.student_id,course.id = student_course.course_id)

SELECT s.name,s.id,c.name FROM student s ,student_course sc ,course c WHERE (s.id=sc.student_id) AND (sc.course_id=c.id);

这就是演示的三张表的多表联查。就是要搞清楚:注意两两表之间的联系

关于多表查询的12个SQ语句案例已经全部实操完成了,

在完成的时候,SQL语句的写法不是固定的,有很多种查询方法去完成这些SQL语句的编写。

简而言之:只要能满足需求即可。

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

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

相关文章

[Leetcode]同时进行正向和逆向迭代匹配解决回文链表问题

题目链接:234. 回文链表 - 力扣&#xff08;LeetCode&#xff09; 题目&#xff1a; 题解&#xff1a; currentNode 指针是先到尾节点&#xff0c;由于递归的特性再从后往前进行比较。frontPointer 是递归函数外的指针。若 currentNode.val ! frontPointer.val 则返回 false。…

从零开始搭建Electron项目(二)之例程解析

本专栏&#xff0c;前面学习了怎么下载例程并运行。 这里解析例程的构成 从零开始搭建Electron项目之运行例程-CSDN博客文章浏览阅读22次。最好的学习方式就是&#xff1a;给一段能够运行的代码示例。本文给出了例程资源&#xff0c;以及运行的步骤。在国内开发electron有一点特…

leetcode刷题记录35-419. 甲板上的战舰

问题描述 给你一个大小为 m x n 的矩阵 board 表示甲板&#xff0c;其中&#xff0c;每个单元格可以是一艘战舰 X 或者是一个空位 . &#xff0c;返回在甲板 board 上放置的 战舰 的数量。 战舰 只能水平或者垂直放置在 board 上。换句话说&#xff0c;战舰只能按 1 x k&#x…

LW-DETR:实时目标检测的Transformer, Apache-2.0 开源可商用,论文实验超 YOLOv8

LW-DETR&#xff1a;实时目标检测的Transformer&#xff0c; Apache-2.0 开源可商用&#xff0c;论文实验超 YOLOv8 LW-DETR 架构实例化高效训练高效推理 目的与解法拆解ViT编码器和DETR解码器多级特征图聚合变形交叉注意力窗口注意力和全局注意力 论文&#xff1a;https://arx…

C语言:结构体数组

结构体数组 介绍定义结构体定义结构体数组初始化结构体数组访问和修改结构体数组的元素遍历结构体数组 示例高级用法动态分配结构体数组使用 malloc 动态分配使用 calloc 动态分配 结构体数组作为函数参数结构体数组与指针多维结构体数组使用 typedef 简化结构体定义结构体数组…

【EDA】SSTA中最慢路径与最快路径统计计算

假设&#xff08;X1&#xff0c;X2&#xff09;为二元高斯随机向量&#xff0c;均值&#xff08;μ1&#xff0c;μ2&#xff09;&#xff0c;标准差&#xff08;σ1&#xff0c;σ2&#xff09;&#xff0c;相关系数ρ 定义&#xff1a;Xmax&#xff08;X1&#xff0c;X2&…

Keil软件仿真的使用

一、软件的初始化设置 初始设置可以按照下图&#xff0c;这里我使用的是STM32F103C8T6&#xff0c;所以单片机型号为STM32F103C8&#xff0c;这个设置在Debug目录下。然后进行时钟的设置&#xff0c;我们板上晶振为8M&#xff0c;这里将时钟改为8. 或许有人想问如果是别的型号单…

JavaScript基础用法(变量定义、输入输出、转义符、注释和编码规范)

天行健&#xff0c;君子以自强不息&#xff1b;地势坤&#xff0c;君子以厚德载物。 每个人都有惰性&#xff0c;但不断学习是好好生活的根本&#xff0c;共勉&#xff01; 文章均为学习整理笔记&#xff0c;分享记录为主&#xff0c;如有错误请指正&#xff0c;共同学习进步。…

基于ensp的园区网络搭建综合实验

核心技术介绍 1、虚拟局域网&#xff08;VLAN&#xff09; 2、链路聚合&#xff08;E-trunk&#xff09; 3、多生成树协议&#xff08;MSTP&#xff09; 4、VLANIF三层逻辑接口 5、虚拟路由冗余协议&#xff08;VRRP&#xff09; 6、开放式最短路径优先&#xff08;OSPF&…

C语言:(动态内存管理)

目录 动态内存有什么用呢 malloc函数 开辟失败示范 free函数 calloc函数 realloc函数 当然realooc也可以开辟空间 常⻅的动态内存的错误 对NULL指针的解引⽤操作 对动态内存开辟的空间越界访问 对⾮动态开辟内存使⽤free释放 使⽤free释放⼀块动态开辟内存的⼀部分 …

G盘文件系统损坏:全面解析与应对策略

在数字时代&#xff0c;数据的重要性不言而喻。然而&#xff0c;G盘文件系统损坏却时常给我们的数据安全带来威胁。当G盘文件系统受损时&#xff0c;可能导致文件丢失、数据无法访问等严重后果。本文将深入探讨G盘文件系统损坏的现象、原因、恢复方案以及预防措施&#xff0c;帮…

Java学习-JDBC(四)

连接池 现有问题 每次操作数据库都需要重新获取新连接&#xff0c;使用完毕后需close释放&#xff0c;频繁的创建和销毁造成资源浪费连接的数量无法把控&#xff0c;对服务器造成巨大压力 连接池 连接池是数据库连接对象的缓冲区&#xff0c;通过配置&#xff0c;由连接池负…

刷机维修进阶教程-----红米k30 nv损坏故障 修复实例教程步骤解析

小米红米系列机型在米8起始就有了串码校验。不得随意更改参数限制。不同于其他机型,可以任意刷入同芯片的基带qcn来修复基带和串码丢失。米系列刷入同芯片基带qcn会提示nv损坏故障。是因为有串码校验。一般在于格机或者全檫除分区后写新参数出现的故障。 这种解决方法通常有两…

OpenAI与核聚变公司寻求合作,白宫拨款1.8亿美元用于核聚变商业化研究

在当下&#xff0c;由 AI 引发的新一轮能源危机已经不再是一个小概率的「黑天鹅」事件&#xff0c;而是一头正在向我们猛冲而来的「灰犀牛」。 Helion Energy&#xff0c;是一家总部位于美国华盛顿州埃弗雷特的能源创业公司。 3.5研究测试&#xff1a;hujiaoai.cn 4研究测试&am…

Pytorch 实现目标检测三(Pytorch 25)

一 目标检测数据集 目标检测领域没有像MNIST和Fashion‐MNIST那样的小数据集。为了快速测试目标检测模型&#xff0c;我们收集并标记了一个小型数据集。首先&#xff0c;我们拍摄了一组香蕉的照片&#xff0c;并生成了1000张不同角度和大小的香蕉图像。然 后&#xff0c;我们在…

基于STM32开发的智能空气质量监控系统

⬇帮大家整理了单片机的资料 包括stm32的项目合集【源码开发文档】 点击下方蓝字即可领取&#xff0c;感谢支持&#xff01;⬇ 点击领取更多嵌入式详细资料 问题讨论&#xff0c;stm32的资料领取可以私信&#xff01; 目录 引言环境准备智能空气质量监控系统基础代码实现&…

Kafka的分区副本机制

目录 生产者的分区写入策略 轮询策略 随机策略 按key分配策略 乱序分区 自定义分区策略 实现步骤&#xff1a; 消费者组Rebalance机制 Rebalance触发时机 Rebalance的不良影响 消费者分区分配策略 Range范围分配策略 RoundRobin轮询策略 Stricky粘性分配策略 生产…

冯喜运:6.11#现货黄金#美原油#行情趋势分析及操作建议

【黄金消息面分析】&#xff1a;随着全球经济的波动&#xff0c;黄金作为传统的避险资产&#xff0c;其价格走势一直备受投资者关注。上周五&#xff0c;美国非农就业报告的强劲表现给美联储降息预期泼了冷水&#xff0c;同时&#xff0c;中国5月份未增持黄金&#xff0c;结束了…

Unity ShaderGraph 扭曲

需要注意的是&#xff1a; HDRP ShaderGraph中 你不能扭曲UI&#xff0c;所以假如你要扭曲视频&#xff0c;请把视频在材质上渲染 播放&#xff0c;这样就可以扭曲视频了喔&#xff0c; ShaderGraph扭曲

3、线性代数

1、矩阵转置 A[i,j]A[j,i] 2、对称矩阵 &#xff1a;A转置A [0,2,3] [2 1 5] [3,5,1] 3、三维矩阵 求和 axis0 两个矩阵相加 axis1 两个向量相加 &#xff0c;axis2 向量内部相加 keepdimsTrue 求和后维度保持不变 4、cumsum累加求和 5、torch.mm() 或 torch.bmm() 【矩…