
前面我们学习了MySQL简单的单表查询。但是我们发现,在很多情况下单表查询并不能很好的满足我们的查询需求。本篇文章会重点讲解MySQL中的多表查询、子查询和一些复杂查询。希望本篇文章会对你有所帮助。
文章目录
🙋♂️ 作者:@Ggggggtm 🙋♂️
👀 专栏:MySQL 👀
💥 标题:MySQL复合查询💥
❣️ 寄语:与其忙着诉苦,不如低头赶路,奋路前行,终将遇到一番好风景 ❣️
在对本篇文章学习之前,首先说明一下本篇文章所用到表的结构和内容。具体如下:
- 员工表emp:
- 部门表dept:
- 薪水表salgrade:
一、基本查询回顾
查询工资高于500或岗位为MANAGER的雇员,同时还要满足他们的姓名首字母为大写的J
首先确定,上述所需筛选的信息都在一行表中。其次,分析出 工资 > 500 or job = MANAGER。我们先来查询出满足 工资 > 500 or job = MANAGER 的员工。具体如下:
同时,我们还需要满足所查询到的员工的姓名首字母为大写的J,很明显是模糊查询。具体如下图:
按照部门号升序而雇员的工资降序排序
这个需求就是简单的排序即可。注意所需排序的先后顺序。具体如下图:
使用年薪进行降序排序
首先我们需要计算出来年薪。年薪 = 月薪(sal)*12 + 年终奖(comm)。那么我们直接就对其进行排序即可。但是需要注意的是:NULL并不能参与计算,这时候需要内置函数ifnull来进行判断其是否为NULL,如果为NULL直接加0即可。 具体如下:
显示工资最高的员工的名字和工作岗位
我们可以很容易的查找到最高工资是多少,然后再根据最高工资去找对应的员工的名字和工作岗位。具体如下图:
上述用了两条SQL语句确实能够查询出我们想要的结果。但是好像不太优雅。能不能用一条语句将所需结果查询出来呢?答案是可以的。我们可以用子查询。什么是子查询呢?在 MySQL 中,子查询是指在一个查询语句中嵌套另一个查询语句。子查询可以用于过滤结果集、作为计算字段的数据源、与外部查询进行比较等多种情况。下面我们用子查询来解决这个需求。具体如下:
显示工资高于平均工资的员工信息
这个题目的需求与上一个题目的需求很相似。我们可以先获取平均工资,在查询比平均工资高的员工,一样是用子查询。具体如下:
显示每个部门的平均工资和最高工资
我们看到需求是每个部门,那么首先肯定要按部门号进行分组。其次我们再查询每个部门的平均工











最低0.47元/天 解锁文章
1783





