首页 游戏 软件 资讯 排行榜 专题
首页
数据库
MySQL的复合查询功能实现

MySQL的复合查询功能实现

热心网友
78
转载
2026-05-05

到这里,我们已经学会了如何在一张表中进行各种查询。但请大家思考一个问题:真实的工程项目中,我们面对的真的只是单张孤立的数据表吗?显然不是。订单信息可能关联用户表,成绩查询需要联立课程表……单表查询固然基础,却难以应对这些现实场景。因此,为了让查询真正“活”起来,我们将进入下一个核心篇章 —— MySQL 复合查询

免费影视、动漫、音乐、游戏、小说资源长期稳定更新! 👉 点此立即查看 👈

1. 基本查询回顾

MySQL的复合查询功能实现

MySQL的复合查询功能实现

1. 查询工资高于2000或岗位为MANAGER的雇员,同时还要满足他们的姓名首字母为大写的J

MySQL的复合查询功能实现

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

MySQL的复合查询功能实现

3. 使用年薪进行降序排序

MySQL的复合查询功能实现

4. 显示工资最高的员工的名字和工作岗位

MySQL的复合查询功能实现

5. 显示工资高于平均工资的员工信息

MySQL的复合查询功能实现

6. 显示每个部门的平均工资和最高工资

MySQL的复合查询功能实现

7. 显示平均工资低于2000的部门号和它的平均工资

MySQL的复合查询功能实现

在 SQL 中看到的 HA VING 平均工资 <= 2000 其实是一种 MySQL 对标准 SQL 的扩展,它允许在 HA VING 子句中直接使用 SELECT 中定义的列别名(比如这里的 平均工资)。

不过,从 SQL 的逻辑执行顺序来看,这并不符合标准的运算顺序,所以容易让人困惑。因此,更稳妥、更标准的写法是直接使用聚合函数,例如 HA VING a vg(sal) <= 2000

8. 显示每种岗位的雇员总数,平均工资

MySQL的复合查询功能实现

2. 多表查询

实际开发中,数据往往分散在不同的表中,这就需要用到多表查询。本节我们用一个简单的公司管理系统来演示,该系统包含三张表:EMP(员工表)、DEPT(部门表)和SALGRADE(工资等级表)。

来看一个典型案例:

显示雇员名、雇员工资以及所在部门的名字。由于数据分别来自EMP和DEPT表,因此需要进行联合查询。

MySQL的复合查询功能实现

MySQL的复合查询功能实现

MySQL的复合查询功能实现

1. 显示部门号为10的部门名,员工名和工资

MySQL的复合查询功能实现

2. 显示各个员工的姓名,工资,及工资级别

MySQL的复合查询功能实现

3. 自连接

自连接,顾名思义,就是同一张表自己和自己进行连接查询。

案例:显示员工FORD的上级领导的编号和姓名(其中,mgr字段存储的是该员工领导的编号,对应empno字段)。

1. 使用的子查询

MySQL的复合查询功能实现

2. 使用多表查询(自查询)

-- 使用到表的别名

-- from emp leader, emp worker,给自己的表起别名,因为要先做笛卡尔积,所以别名可以先识别

MySQL的复合查询功能实现

4. 子查询

子查询,也叫嵌套查询,是指嵌入在其他SQL语句(如SELECT, INSERT, UPDATE, DELETE)中的SELECT语句。

1. 单行子查询

显示与SMITH同一部门的员工。

MySQL的复合查询功能实现

2. 多行子查询

1. IN关键字

  • 作用:判断某个值是否在子查询返回的多行结果列表中。
  • 典型场景:查找与指定集合匹配的记录。
  • 示例:查询和10号部门工作岗位相同的雇员,但排除10号部门自己的员工。

MySQL的复合查询功能实现

2. ALL关键字

  • 作用:与比较运算符(><= 等)配合,表示比子查询返回的所有值大/小/相等。
  • 典型场景:查找超过某一组中所有记录某个字段的值(例如比某部门所有人都高)。
  • 示例:显示工资比部门30的所有员工的工资都高的员工(即工资大于部门30的最高工资)。

MySQL的复合查询功能实现

3. ANY关键字(有些数据库也支持SOME)

  • 作用:与比较运算符配合,表示比子查询返回的任意一个值大/小/相等(即至少满足一个)。
  • 典型场景:查找超过某一组中至少一个人的某个字段(例如比部门30中工资最低的人高)。
  • 示例:显示工资比部门30的任意一个员工的工资高的员工(即大于部门30的最低工资即可,包括自己部门的员工)。

MySQL的复合查询功能实现

3. 多列子查询

单行子查询返回单列单行数据,多行子查询返回单列多行数据,它们都针对单列。而多列子查询则是指查询返回多个列数据的子查询语句。

案例:查询和SMITH的部门和岗位完全相同的所有雇员,不含SMITH本人。

MySQL的复合查询功能实现

4. 在from子句中使用子查询

这种用法是将子查询语句放在from子句中,相当于把一个子查询的结果当作临时表来使用,是数据查询中一个非常实用的技巧。

1. 显示每个高于自己部门平均工资的员工的姓名、部门、工资、平均工资

MySQL的复合查询功能实现

2. 查找每个部门工资最高的人的姓名、工资、部门、最高工资

MySQL的复合查询功能实现

3. 显示每个部门的信息(部门名,编号,地址)和人员数量

MySQL的复合查询功能实现

5. 合并查询

在实际应用中,为了合并多个SELECT语句的执行结果,可以使用集合操作符 UNION 和 UNION ALL。

1. union

该操作符用于取得两个结果集的并集。当使用该操作符时,会自动去掉结果集中的重复行。

案例:将工资大于2500或职位是MANAGER的人找出来。

MySQL的复合查询功能实现

2. union all

该操作符用于取得两个结果集的并集。与UNION不同,当使用该操作符时,不会去掉结果集中的重复行。

案例:将工资大于2500或职位是MANAGER的人找出来(使用UNION ALL)。

MySQL的复合查询功能实现

以上就是关于MySQL复合查询的核心内容。掌握了这些,你就能让数据在不同表之间“对话”,应对更复杂的业务场景了。我们下篇内容再见!

来源:https://www.jb51.net/database/363220gwf.htm
免责声明: 游乐网为非赢利性网站,所展示的游戏/软件/文章内容均来自于互联网或第三方用户上传分享,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系youleyoucom@outlook.com。

最新APP

宝宝过生日
宝宝过生日
应用辅助 04-07
台球世界
台球世界
体育竞技 04-07
解绳子
解绳子
休闲益智 04-07
骑兵冲突
骑兵冲突
棋牌策略 04-07
三国真龙传
三国真龙传
角色扮演 04-07

热门推荐

冬季防火标语
职业与学业
冬季防火标语

构筑消防安全“防火墙”工程 提升全社会火灾防控综合能力 消防安全绝非一句空洞的口号,它直接关系到千家万户的生命财产安全,是社会稳定与经济发展的坚实保障。全面提升社会火灾防控水平,是一项需要全民参与、持续发力的系统性工程。以下汇集自不同领域的防火警示与实用提醒,为我们提供了直观而深刻的行动指南。 森林

热心网友
05.05
防火宣传标语(80条)
职业与学业
防火宣传标语(80条)

防火宣传标语(1-20) 1 全民总动员,防火保安全。 2 全民护林、人人防火。 3 一人把关一处安,众人防火稳如山。 4 时时注意森林防火、人人重视森林防火。 5 森林防火记心上,人人护林理应当。 6 山田年年耕、防火天天讲。 7 保护消防设施,维护消防安全。 8 入山不带烟、野外

热心网友
05.05
森林防火标语手抄报图片文案
职业与学业
森林防火标语手抄报图片文案

森林防火标语手抄报图片文案 “坚持生态效益、经济效益、社会效益相结合,突出生态效益。”这句话点明了现代林业发展的核心。如今信息传播触手可及,我们每天都能接触到海量内容,其中那些简洁有力、直击人心的句子,往往最能留下深刻印象。你是否也有收集和分享精彩语句的习惯?下面整理的这份森林防火标语集锦,或许能为

热心网友
05.05
欧交易所最新版app下载安装地址2025版
web3.0
欧交易所最新版app下载安装地址2025版

欧交易所作为全球领先的数字资产服务平台,为广大用户提供多样化的数字产品交易与金融服务。其官方应用程序设计友好,操作便捷,致力于为用户创造一个安全、稳定的交易环境。 这份指南将手把手带你完成欧交易所2025最新版App的官方下载与安装。文内提供的链接直达官方渠道,确保你的每一步操作都安全可靠。 下载教

热心网友
05.05
森林防火标语大全图片文案34句
职业与学业
森林防火标语大全图片文案34句

森林防火标语大全图片文案【篇1】 一棵树木长成参天大树,需要历经数十年的风雨洗礼,成长过程极为不易。请务必牢记,切勿让任何火源进入林区,共同守护这片绿色。 我们关心天下大事,更应心系家园安全,用行动联通守护的责任。 清明祭祖,如今更倡导以鲜花、植树等文明、环保的方式寄托哀思,摒弃焚烧纸钱旧俗,让清明

热心网友
05.05