[MySQL]常用函数,统计函数,分组查询和过滤,以及子查询

本文涉及的产品
云数据库 RDS MySQL,集群系列 2核4GB
推荐场景:
搭建个人博客
RDS MySQL Serverless 基础系列,0.5-2RCU 50GB
云数据库 RDS PostgreSQL,集群系列 2核4GB
简介: 哈喽,大家好!我是保护小周ღ,本期为大家带来的是 MySQL 数据库常用函数,以及分组查询和子查询数据表的基本操作:创建、删除、修改表,针对修改表的结构进行了讲解,随后是如何向数据表中添加数据,浅浅的提了一下表中数据的查询,更多相关知识敬请期待:保护小周ღ *★,°*:.☆( ̄▽ ̄)/$:*.°★*

哈喽,大家好!我是保护小周ღ,本期为大家带来的是 MySQL的常用函数,统计函数,分组查询和过滤,以及子查询,更多相关知识敬请期待:保护小周ღ *★,°*:.☆( ̄▽ ̄)/$:*.°★*

一、函数

1.1 常用函数(了解)

--数学运算SELECTABS(-8)  --绝对值SELECTCEILING(9.4) --向上取整SELECTFLOOR(9.4) --向下取整SELECTROUND(3.1415926,2)
--重要SELECTrand()  --生成一个随机数--字符串函数SELECTCHAR_LENGTH('你好') --字符串长度SELECTCONCAT('你','好') --字符串拼接SELECTLOWER('HELLO') --字符串转换成小写SELECTUPPER('hello') --字符串转换成大写--时间和日期函数SELECTCURRENT_DATE() --获取当前日期--重要SELECTSYSDATE() --获取当前日期时间

1.2 统计函数|聚合函数|分组函数(常用)(掌握)

--简单使用SELECTSUM(`sal`) AS总和FROMempSELECTAVG(`sal`) AS平均值FROMempSELECTMAX(`sal`) AS最大值FROMempSELECTMIN(`sal`) AS最小值FROMempSELECTCOUNT(`sal`) AS计数FROMemp;
--同时显示多个SELECTSUM(`sal`) ,
AVG(`sal`) 平均值,
MAX(`sal`) 最大值,
MIN(`sal`) 最小值,
COUNT(`sal`) 个数FROMemp;
--聚合函数支持哪些类型SELECTSUM(ename), AVG(ename)
FROMempSELECTSUM(hiredate), AVG(hiredate)
FROMempSELECTMAX(ename),MIN(ename)
FROMempSELECTMAX(hiredate),MIN(hiredate)
FROMempSELECTCOUNT(ename)
FROMemp;
SELECTCOUNT(comm)
FROMemp;
--count()
SELECTCOUNT(mgr) fromemp; --Count(指定列,字段)会忽略所有的null值--本质都是计算行数,count*把所有列都计算一遍,count1是把所有的行都变成1返回一个结果SELECTCOUNT(*) fromemp; --不会忽略null值SELECTCOUNT(1) fromemp; --不会忽略null值

二、 分组查询和过滤(掌握)

--查出所有员工的平均工资selectavg(sal)
fromemp--我想根据不同的部门看一下不同部门的平均工资

image.png

group by 字句语法

select列(要求出现在groupby的后面),分组函数fromwhere筛选条件groupby分组的列表orderby字句--注意:查询列表比较特殊,要求是分组函数和groupby后出现的字段
--简单的分组查询--查出每个工种的最高工资SELECTjob,MAX(sal)
fromempGROUPBYjob;
--查出每个部门的人数SELECTdeptno, COUNT(*)
fromempGROUPBYdeptno--查询每个岗位的平均工资SELECTjob,avg(sal) 
FROMscott.empGROUPBYjob;
--查询每个部门中每个岗位的人数和平均工资SELECTdeptno,job,count(*),avg(sal) 
FROMscott.empGROUPBYdeptno,job;
--分组前查询--查出每个岗位名称带E的人数个数SELECTjob,count(*)
FROMscott.empWHEREenamelike'%E%'GROUPBYjob--查询除去财务部门外不同部门名称的最高薪资,最低薪资,平均薪资SELECTdname, MAX(sal), MIN(sal),AVG(sal)
fromdeptdINNERJOINempeond.deptno=e.deptnowheredname!='财务'GROUPBYd.dname--分组后查询--查询哪个部门的员工个数<6SELECTdeptno, count(*)
fromempGROUPBYdeptnoHAVINGCOUNT(*) <6--查询每个部门的人数,只显示4人以上的部门SELECTdeptno,count(*)
FROMscott.empGROUPBYdeptnoHAVINGcount(*)>4;
--查询每个岗位中名字包含E的员工人数,只显示超过2人的岗位和人数SELECTjob,count(*)
FROMscott.empWHEREenamelike'%E%'GROUPBYjobHAVINGcount(*)>2;
--分组后查询,查询不同部门名称的最高薪资,最低薪资,平均薪资,平均薪资大于900SELECTdname, MAX(sal),MIN(sal),AVG(sal)fromdeptdINNERJOINempeond.deptno=e.deptnoGROUPBYd.dnameHAVINGMIN(sal) >900--总结:--聚合函数count、sum、avg、max、min等不能在where子句中使用。--where语句先执行过滤,having语句后执行过滤--WHERE后面不允许写分组函数,HAVING后面不允许写未分组的字段--查询除了财务部门外不同部门的最高薪资,最低薪资,平均薪资且平均薪资大于900SELECTdname, MAX(sal), MIN(sal),AVG(sal)
fromdeptdINNERJOINempeond.deptno=e.deptnowheredname!='财务'GROUPBYd.deptnoHAVINGMIN(sal) >900--查询出各个分组里面的工作人员SELECTdname, GROUP_CONCAT(ename)
fromdeptdINNERJOINempeond.deptno=e.deptnoGROUPBYd.dname

三、子查询(掌握)

  • 1.一般来说,连接查询都可以用子查询替换。
  • 2. 相对于表连接,子查询适合于作为查询的筛选条件。
  • 3. where(值是固定的,这个值是计算出来的)
  • 4. 本质:==在where语句中嵌套一个查询语句==
--子查询|嵌套查询--执行顺序由里到外--子查询返回一个值--innerjoin展示两个表的表头信息,子查询展示一个表的信息--查询销售的所有员工(员工编号,员工姓名)
SELECTempno, ename, dnamefromempeINNERJOINdeptdone.deptno=d.deptnowhered.dname='销售'--查询销售的所有员工(员工编号,员工姓名)
SELECTempno, enamefromempewheredeptnoin (SELECTdeptnofromdeptwheredname='销售')
--查询在广州工作的员工中,哪些人的名字中包含有E,要求显示员工姓名和部门编号SELECTename, deptnofromempwheredeptno= (selectdeptnofromdeptwhereloc='广州') andenamelike'%E%'--查询SMITH的领导姓名SELECTenameFROMscott.empWHEREempno=(SELECTmgrFROMscott.empWHEREename='SMITH');
--查询编号是7521,7566,7654,7698,7782的员工,哪些是BLAKE的下属SELECT*FROMempWHEREempnoin (7521,7566,7654,7698,7782) andmgr= (selectempnofromempwhereename='blake')
--查询KING的下属哪位在上海工作,要求显示员工编号,员工姓名,岗位,领导工号,部门编号SELECTempno, ename, job, mgr, deptnoFROMempWHEREdeptno= (selectdeptnofromdeptwhereloc='上海') andmgr= (selectempnofromempwhereename='king')    
--子查询返回多个值--查询北京和上海的所有员工信息SELECT*FROMscott.empWHEREdeptnoin(SELECTdeptnoFROMscott.deptWHERElocin('北京','上海'));
--查询KING的工资占公司总工资的比例SELECT (SELECTsalFROMscott.empWHEREename='KING')/(SELECTsum(sal) FROMscott.emp) FROMdual;
SELECTsal/(SELECTsum(sal) FROMscott.emp) FROMscott.empWHEREename='KING';


相关实践学习
如何在云端创建MySQL数据库
开始实验后,系统会自动创建一台自建MySQL的 源数据库 ECS 实例和一台 目标数据库 RDS。
全面了解阿里云能为你做什么
阿里云在全球各地部署高效节能的绿色数据中心,利用清洁计算为万物互联的新世界提供源源不断的能源动力,目前开服的区域包括中国(华北、华东、华南、香港)、新加坡、美国(美东、美西)、欧洲、中东、澳大利亚、日本。目前阿里云的产品涵盖弹性计算、数据库、存储与CDN、分析与搜索、云通信、网络、管理与监控、应用服务、互联网中间件、移动服务、视频服务等。通过本课程,来了解阿里云能够为你的业务带来哪些帮助 &nbsp; &nbsp; 相关的阿里云产品:云服务器ECS 云服务器 ECS(Elastic Compute Service)是一种弹性可伸缩的计算服务,助您降低 IT 成本,提升运维效率,使您更专注于核心业务创新。产品详情: https://www.aliyun.com/product/ecs
相关文章
|
2天前
|
存储 Oracle 关系型数据库
索引在手,查询无忧:MySQL索引简介
MySQL 是一款广泛使用的关系型数据库管理系统,在2024年5月的DB-Engines排名中得分1084,仅次于Oracle。本文介绍MySQL索引的工作原理和类型,包括B+Tree、Hash、Full-text索引,以及主键、唯一、普通索引等,帮助开发者优化查询性能。索引类似于图书馆的分类系统,能快速定位数据行,极大提高检索效率。
25 8
|
5天前
|
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()` 等。窗口框架定义了计算聚合值时应包含的行。适用于复杂数据操作和分析报告。
42 11
|
9天前
|
存储 关系型数据库 MySQL
mysql怎么查询longblob类型数据的大小
通过本文的介绍,希望您能深入理解如何查询MySQL中 `LONG BLOB`类型数据的大小,并结合优化技术提升查询性能,以满足实际业务需求。
38 6
|
14天前
|
SQL 关系型数据库 MySQL
MySQL常见函数第二期,你都用过哪些呢 ?
本期介绍了20个常用的MySQL函数,涵盖日期处理(如CURDATE()、DATE_FORMAT())、数学运算(如ABS()、ROUND())、统计分析(如COUNT()、SUM())等,帮助提高SQL查询效率和数据处理能力。希望对大家的学习有所帮助。
59 7
|
17天前
|
关系型数据库 MySQL
MySQL常见函数第一期,你都用过哪些呢 ?
本期介绍10个常用的MySQL函数:字符串连接(CONCAT)、提取子字符串(SUBSTRING)、获取字符串长度(LENGTH)、转换大小写(UPPER、LOWER)、去除空格(TRIM)、替换字符串(REPLACE)、查找子字符串位置(INSTR)、带分隔符的字符串连接(CONCAT_WS)以及获取当前日期时间(NOW)。
56 8
|
18天前
|
数据采集 关系型数据库 MySQL
MySQL常用函数:IF、SUM等用法
本文介绍了MySQL中常用的IF、SUM等函数及其用法,通过具体示例展示了如何利用这些函数进行条件判断、数值计算以及复杂查询。同时,文章还提到了CASE WHEN语句和其他常用函数,如COUNT、AVG、MAX/MIN等,强调了它们在数据统计分析、数据清洗和报表生成中的重要性。
|
22天前
|
关系型数据库 MySQL 数据处理
【MySQL】函数
MySQL 提供了丰富的函数集,涵盖字符串处理、数值运算、日期时间操作和聚合计算等多个方面。这些函数在日常数据库操作中极为重要,通过合理使用这些函数,可以大大提高数据处理和查询的效率。用户还可以通过自定义函数,扩展 MySQL 的功能以满足特定需求。
26 3
|
13天前
|
关系型数据库 MySQL 数据库
Python处理数据库:MySQL与SQLite详解 | python小知识
本文详细介绍了如何使用Python操作MySQL和SQLite数据库,包括安装必要的库、连接数据库、执行增删改查等基本操作,适合初学者快速上手。
89 15
|
7天前
|
SQL 关系型数据库 MySQL
数据库数据恢复—Mysql数据库表记录丢失的数据恢复方案
Mysql数据库故障: Mysql数据库表记录丢失。 Mysql数据库故障表现: 1、Mysql数据库表中无任何数据或只有部分数据。 2、客户端无法查询到完整的信息。
|
14天前
|
关系型数据库 MySQL 数据库
数据库数据恢复—MYSQL数据库文件损坏的数据恢复案例
mysql数据库文件ibdata1、MYI、MYD损坏。 故障表现:1、数据库无法进行查询等操作;2、使用mysqlcheck和myisamchk无法修复数据库。