MySQL -- 复合查询 - 指南
前言
个人主页:不会c嘎嘎
专栏传送门:【数据结构】 、【C++】 、【Linux】、【算法】、【MySQL】
学习方向:C++方向学习爱好者
⭐人生格言:谨言慎行,戒骄戒躁每日一鸡汤:
“别怕走得慢,只怕停下来。每一个不曾起舞的日子,都是对生命的辜负。你流下的每一滴汗水,都会在未来某个时刻开花结果。即使现在看不到希望,也要相信,黑夜再长,也挡不住黎明的光。坚持下去,不是因为看见了希望才努力,而是努力了,才能看见希望。”


目录
1.回顾基本查询
先带大家来做一下便捷的复合查询,这是一个来自oracle 9i的经典测试表题目,大家许可自行导入scott_data: 雇员信息表,练习mysql语法
(1)查询工资高于500或岗位为MANAGER的雇员,同时还要满足他们的姓名首字母为大写的J

(2)按照部门号升序而雇员的工资降序排序

(3)使用年薪进行降序排序

(4)呈现工资最高的员工的名字和工作岗位
这里使用了子查询获取最高工资,继而再查询工资等于这个值的员工

(5)显示工资高于平均工资的员工信息
这里使用了子查询获取平均工资,然后再查询工资大于这个值的员工

(6)显示每个部门的平均工资和最高工资
先对表通过deptno进行分组,然后再使用聚合函数查询值

(7)显现平均工资低于2000的部门号和它的平均工资
这里的having可以在分组以后采用,相当于where筛选条件

(8)表现每种岗位的雇员总数,平均工资
先对数据通过job分组,然后求人数和平均工资

2.多表查询
实际开发中往往数据来自不同的表,所以需要多表查询。本节我们用一个容易的公司管理系统,有三张EMP,DEPT,SALGRADE来演示如何进行多表查询。
案例:(1)显示雇员名、雇员工资以及所在部门的名字
缘于上面的数据来自EMP和DEPT表,因此要联合查询

不加过滤的笛卡尔积表

通过deptno进行过滤

再从过滤后的表中显示出雇员名字,雇员工资以及部门名

(2)表现部门号为10的部门名,员工和工资
先对两个表做笛卡尔积,然后过滤没用的行,最终筛选出deptno=10的员工信息

(3)显示各个员工的姓名,工资,及工资级别
先对两张表做笛卡尔积,根据工资介于工资的等级进行筛选数据

3.自连接

2.运用多表查询,先查出下级的上级编号与员工表中对应的员工编号的人

然后根据上面的临时表再进行筛选出名字叫ford的员工

4.子查询


















结语
本文介绍了MySQL数据库查询操作,包括基本查询、多表查询、自连接和子查询等高级技巧。通过经典的scott_data雇员信息表案例,详细讲解了复合查询条件设置、分组聚合、排序操作等基础查询方法。在多表查询部分,演示了笛卡尔积过滤和表连接应用。特别讲解了自连接查询和子查询的多种用法,包括单行/多行子查询、多列子查询及在FROM子句中使用子查询作为临时表的技巧。文章还提供了部门统计、工资级别筛选等实用案例,适合数据库学习者提升SQL查询技能。
本期博客的全部内容,感谢各位的阅读以及观看。如果内容有误请大佬们多多指教,一定积极改进,加以学习。就是以上就

浙公网安备 33010602011771号