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

本文涉及的产品
云数据库 RDS MySQL,集群系列 2核4GB
推荐场景:
搭建个人博客
RDS MySQL Serverless 基础系列,0.5-2RCU 50GB
云数据库 RDS MySQL,高可用系列 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的人找出来

总结

相关实践学习
如何在云端创建MySQL数据库
开始实验后,系统会自动创建一台自建MySQL的 源数据库 ECS 实例和一台 目标数据库 RDS。
全面了解阿里云能为你做什么
阿里云在全球各地部署高效节能的绿色数据中心,利用清洁计算为万物互联的新世界提供源源不断的能源动力,目前开服的区域包括中国(华北、华东、华南、香港)、新加坡、美国(美东、美西)、欧洲、中东、澳大利亚、日本。目前阿里云的产品涵盖弹性计算、数据库、存储与CDN、分析与搜索、云通信、网络、管理与监控、应用服务、互联网中间件、移动服务、视频服务等。通过本课程,来了解阿里云能够为你的业务带来哪些帮助     相关的阿里云产品:云服务器ECS 云服务器 ECS(Elastic Compute Service)是一种弹性可伸缩的计算服务,助您降低 IT 成本,提升运维效率,使您更专注于核心业务创新。产品详情: https://www.aliyun.com/product/ecs
相关文章
|
11天前
|
SQL 前端开发 关系型数据库
SpringBoot使用mysql查询昨天、今天、过去一周、过去半年、过去一年数据
SpringBoot使用mysql查询昨天、今天、过去一周、过去半年、过去一年数据
42 9
|
12天前
|
缓存 监控 关系型数据库
如何优化MySQL查询速度?
如何优化MySQL查询速度?【10月更文挑战第31天】
39 3
|
17天前
|
SQL NoSQL 关系型数据库
2024Mysql And Redis基础与进阶操作系列(5)作者——LJS[含MySQL DQL基本查询:select;简单、排序、分组、聚合、分组、分页等详解步骤及常见报错问题所对应的解决方法]
MySQL DQL基本查询:select;简单、排序、分组、聚合、分组、分页、INSERT INTO SELECT / FROM查询结合精例等详解步骤及常见报错问题所对应的解决方法
|
16天前
|
监控 关系型数据库 MySQL
数据库优化:MySQL索引策略与查询性能调优实战
【10月更文挑战第27天】本文深入探讨了MySQL的索引策略和查询性能调优技巧。通过介绍B-Tree索引、哈希索引和全文索引等不同类型,以及如何创建和维护索引,结合实战案例分析查询执行计划,帮助读者掌握提升查询性能的方法。定期优化索引和调整查询语句是提高数据库性能的关键。
82 1
|
22天前
|
SQL Java 关系型数据库
java连接mysql查询数据(基础版,无框架)
【10月更文挑战第12天】该示例展示了如何使用Java通过JDBC连接MySQL数据库并查询数据。首先在项目中引入`mysql-connector-java`依赖,然后通过`JdbcUtil`类中的`main`方法实现数据库连接、执行SQL查询及结果处理,最后关闭相关资源。
|
19天前
|
SQL 关系型数据库 MySQL
定时任务频繁插入数据导致锁表问题 -> 查询mysql进程
定时任务频繁插入数据导致锁表问题 -> 查询mysql进程
38 1
|
17天前
|
监控 关系型数据库 MySQL
数据库优化:MySQL索引策略与查询性能调优实战
【10月更文挑战第26天】数据库作为现代应用系统的核心组件,其性能优化至关重要。本文主要探讨MySQL的索引策略与查询性能调优。通过合理创建索引(如B-Tree、复合索引)和优化查询语句(如使用EXPLAIN、优化分页查询),可以显著提升数据库的响应速度和稳定性。实践中还需定期审查慢查询日志,持续优化性能。
47 0
|
19天前
|
SQL 关系型数据库 MySQL
mysql编写sql脚本:要求表没有主键,但是想查询没有相同值的时候才进行插入
mysql编写sql脚本:要求表没有主键,但是想查询没有相同值的时候才进行插入
30 0
|
1月前
|
存储 SQL 关系型数据库
MySQL 给查询结果增列并自定义列数据
MySQL 给查询结果增列并自定义列数据
437 2
|
1月前
|
存储 SQL 关系型数据库
MySQL查询数据库锁表的SQL语句
MySQL查询数据库锁表的SQL语句
83 1