【Hello mysql】 mysql的复合查询 (重点)

本文涉及的产品
云数据库 RDS MySQL,集群系列 2核4GB
推荐场景:
搭建个人博客
RDS MySQL Serverless 基础系列,0.5-2RCU 50GB
云数据库 RDS PostgreSQL,集群系列 2核4GB
简介: 【Hello mysql】 mysql的复合查询 (重点)

基本查询回顾

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

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

使用年薪进行降序排序

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

我们这里使用了两个select语句查询 实际上我们也可以将它们分开先使用一个select语句查询到最高工资是多少 再使用一个语句找和最高工资相同的记录

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

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

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

多表查询

在讲解多表查询的具体操作之前 我们首先要明确一个概念

许多张表合并在一起之后会变成什么呢?

答案就是 会变成一张很大的表 本质还是一张表

也就是说 我们的多表查询其实就是在一个比较大的单表里面查询数据罢了

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

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

自连接

自连接指的是在同一张表中进行连接查询

我们在某些情况下 需要将一张相同的表进行笛卡尔积

下面是实例

显示员工FORD的上级领导的编号和姓名

思路 我们可以将原本的两张员工表使用笛卡尔积拼接形成一张大的表

之后找到该员工为雇员的记录并且寻找到第一张表中的领导等于第二张表中的雇员的记录

该条记录就记录着ford的上级领导还有编号

子查询

单行子查询

显示SMITH同一部门的员工

多行子查询

关于多列子查询主要有三个关键字需要我们理解下 in all any

下面我们用三个题目去理解这三个关键字

  • in关键字;查询和10号部门的工作岗位相同的雇员的名字,岗位,工资,部门号,但是不包含10自己的

总结下 in关键字表示其中有一个相同就符合筛选条件

  • all关键字;显示工资比部门30的所有员工的工资高的员工的姓名、工资和部门号

总结下 all关键字就是比集合里面的所有数据都要高 我们可以理解为大于最大值

  • any关键字;显示工资比部门30的任意员工的工资高的员工的姓名、工资和部门号(包含自己部门
    的员工)

多列子查询

单行子查询是指子查询只返回单列,单行数据;多行子查询是指返回单列多行数据,都是针对单列而言的,而多列子查询则是指查询返回多个列数据的子查询语句

实际上多列子查询和多行子查询的总体思路几乎没有区别 唯一的区别可能就是语法上 where要加上括号

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

在from子句中使用子查询

我们在前面介绍过一个概念 由很多张表组成的笛卡尔积 本质上还是一张表

这里还有一个新的概念 我们使用select子句筛选出来的表 本质也是一张表

也就是说之前对于表的各种操作 对筛选出来的表依然适用

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

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

合并查询

union

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

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

union all

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

将工资大于25000或职位是MANAGER的人找出来

总结

相关实践学习
如何快速连接云数据库RDS MySQL
本场景介绍如何通过阿里云数据管理服务DMS快速连接云数据库RDS MySQL,然后进行数据表的CRUD操作。
全面了解阿里云能为你做什么
阿里云在全球各地部署高效节能的绿色数据中心,利用清洁计算为万物互联的新世界提供源源不断的能源动力,目前开服的区域包括中国(华北、华东、华南、香港)、新加坡、美国(美东、美西)、欧洲、中东、澳大利亚、日本。目前阿里云的产品涵盖弹性计算、数据库、存储与CDN、分析与搜索、云通信、网络、管理与监控、应用服务、互联网中间件、移动服务、视频服务等。通过本课程,来了解阿里云能够为你的业务带来哪些帮助     相关的阿里云产品:云服务器ECS 云服务器 ECS(Elastic Compute Service)是一种弹性可伸缩的计算服务,助您降低 IT 成本,提升运维效率,使您更专注于核心业务创新。产品详情: https://www.aliyun.com/product/ecs
相关文章
|
2月前
|
缓存 关系型数据库 MySQL
MySQL索引策略与查询性能调优实战
在实际应用中,需要根据具体的业务需求和查询模式,综合运用索引策略和查询性能调优方法,不断地测试和优化,以提高MySQL数据库的查询性能。
194 66
|
11天前
|
存储 Oracle 关系型数据库
索引在手,查询无忧:MySQL索引简介
MySQL 是一款广泛使用的关系型数据库管理系统,在2024年5月的DB-Engines排名中得分1084,仅次于Oracle。本文介绍MySQL索引的工作原理和类型,包括B+Tree、Hash、Full-text索引,以及主键、唯一、普通索引等,帮助开发者优化查询性能。索引类似于图书馆的分类系统,能快速定位数据行,极大提高检索效率。
44 8
|
14天前
|
SQL 关系型数据库 MySQL
MySQL 窗口函数详解:分析性查询的强大工具
MySQL 窗口函数从 8.0 版本开始支持,提供了一种灵活的方式处理 SQL 查询中的数据。无需分组即可对行集进行分析,常用于计算排名、累计和、移动平均值等。基本语法包括 `function_name([arguments]) OVER ([PARTITION BY columns] [ORDER BY columns] [frame_clause])`,常见函数有 `ROW_NUMBER()`, `RANK()`, `DENSE_RANK()`, `SUM()`, `AVG()` 等。窗口框架定义了计算聚合值时应包含的行。适用于复杂数据操作和分析报告。
56 11
|
17天前
|
存储 关系型数据库 MySQL
mysql怎么查询longblob类型数据的大小
通过本文的介绍,希望您能深入理解如何查询MySQL中 `LONG BLOB`类型数据的大小,并结合优化技术提升查询性能,以满足实际业务需求。
70 6
|
2月前
|
SQL 前端开发 关系型数据库
SpringBoot使用mysql查询昨天、今天、过去一周、过去半年、过去一年数据
SpringBoot使用mysql查询昨天、今天、过去一周、过去半年、过去一年数据
68 9
|
2月前
|
缓存 监控 关系型数据库
如何优化MySQL查询速度?
如何优化MySQL查询速度?【10月更文挑战第31天】
123 3
|
2月前
|
SQL NoSQL 关系型数据库
2024Mysql And Redis基础与进阶操作系列(5)作者——LJS[含MySQL DQL基本查询:select;简单、排序、分组、聚合、分组、分页等详解步骤及常见报错问题所对应的解决方法]
MySQL DQL基本查询:select;简单、排序、分组、聚合、分组、分页、INSERT INTO SELECT / FROM查询结合精例等详解步骤及常见报错问题所对应的解决方法
|
2月前
|
监控 关系型数据库 MySQL
数据库优化:MySQL索引策略与查询性能调优实战
【10月更文挑战第27天】本文深入探讨了MySQL的索引策略和查询性能调优技巧。通过介绍B-Tree索引、哈希索引和全文索引等不同类型,以及如何创建和维护索引,结合实战案例分析查询执行计划,帮助读者掌握提升查询性能的方法。定期优化索引和调整查询语句是提高数据库性能的关键。
329 1
|
2月前
|
SQL 关系型数据库 MySQL
定时任务频繁插入数据导致锁表问题 -> 查询mysql进程
定时任务频繁插入数据导致锁表问题 -> 查询mysql进程
56 1
|
2月前
|
监控 关系型数据库 MySQL
数据库优化:MySQL索引策略与查询性能调优实战
【10月更文挑战第26天】数据库作为现代应用系统的核心组件,其性能优化至关重要。本文主要探讨MySQL的索引策略与查询性能调优。通过合理创建索引(如B-Tree、复合索引)和优化查询语句(如使用EXPLAIN、优化分页查询),可以显著提升数据库的响应速度和稳定性。实践中还需定期审查慢查询日志,持续优化性能。
131 0