Mysql函数大全+案例练习

本文涉及的产品
RDS MySQL Serverless 基础系列,0.5-2RCU 50GB
RDS MySQL Serverless 高可用系列,价值2615元额度,1个月
云数据库 RDS PostgreSQL,高可用系列 2核4GB
简介: 函数,在Java中我们叫方法,MySQL 函数会对传递进来的参数进行处理,并返回一个处理结果,也就是返回一个值。MySQL 包含了大量并且丰富的函数,我们可以对 MySQL 常用函数进行简单的分类,大概包括数值型函数、字符串型函数、日期时间函数、聚合函数等。

函数

函数,在Java中我们叫方法,MySQL 函数会对传递进来的参数进行处理,并返回一个处理结果,也就是返回一个值。

MySQL 包含了大量并且丰富的函数,我们可以对 MySQL 常用函数进行简单的分类,大概包括数值型函数、字符串型函数、日期时间函数、聚合函数等。

MySQL 数值型函数

作 用 函数名称
求绝对值 ABS
求二次方根 SQRT
求余数 MOD
两个函数功能相同,都是返回不小于参数的最小整数,即向上取整 CEIL 和 CEILING
向下取整,返回值转化为一个BIGINT FLOOR
生成一个0~1之间的随机数,传入整数参数是,用来产生重复序列 RAND
对所传参数进行四舍五入 ROUND
两个函数的功能相同,都是所传参数的次方的结果值 POW 和 POWER
求正弦值 SIN
求反正弦值,与函数 SIN 互为反函数 ASIN
求余弦值 COS
求反余弦值,与函数 COS 互为反函数 ACOS
求正切值 TAN
求反正切值,与函数 TAN 互为反函数 ATAN
求余切值 COT

MySQL 字符串函数

函数名称 作 用
LENGTH 计算字符串长度函数,返回字符串的字节长度
CONCAT 合并字符串函数,返回结果为连接参数产生的字符串,参数可以使一个或多个
CONCAT_WS CONCAT的变种,可以将多个字符串按照统一格式进行拼接
INSERT 替换字符串函数下标从1开始,INSERT(idcard,2,2,'**') : 将身份证号第二个开始连续两个替换成
LOWER 将字符串中的字母转换为小写
UPPER 将字符串中的字母转换为大写
LEFT 从左侧字截取符串,返回字符串左边的若干个字符
RIGHT 从右侧字截取符串,返回字符串右边的若干个字符
TRIM 删除字符串左右两侧的空格
REPLACE 将指定的字符串替换成新的字符串
SUBSTRING 截取字符串,返回从指定位置开始的指定长度的字符换
REVERSE 字符串反转(逆序)函数,返回与原始字符串顺序相反的字符串

MySQL 日期和时间函数

函数名称 作 用
CURDATE 和 CURRENT_DATE 两个函数作用相同,返回当前系统的日期,只包含年、月、日SELECT CURDATE() 、SELECT CURRENT_DATE()
CURTIME 和 CURRENT_TIME 两个函数作用相同,返回当前系统的时间值
NOW 和 SYSDATE 两个函数作用相同,返回当前系统的日期和时间值
UNIX_TIMESTAMP 获取时间戳,也可以将指定的日期转成时间戳
FROM_UNIXTIME 将时间戳转成日期UNIX_TIMESTAMP()、UNIX_TIMESTAMP('2022-05-30')
MONTH 获取指定日期中的月份
MONTHNAME 获取指定日期中的月份英文名称
DAYNAME 获取指定曰期对应的星期几的英文名称
DAYOFWEEK 获取指定日期对应的一周的索引位置值,周日是1,周一是2......
WEEK 获取指定日期是一年中的第几周,返回值的范围是否为 0〜52 或 1〜53
DAYOFYEAR 获取指定曰期是一年中的第几天,返回值范围是1~366
DAYOFMONTH 获取指定日期是一个月中是第几天,返回值范围是1~31
YEAR 获取年份,返回值范围是 1970〜2069
TIME_TO_SEC 将时间参数转换为秒数TIME_TO_SEC('2022-05-19 15:14:08')
SEC_TO_TIME 将秒数转换为时间,与TIME_TO_SEC 互为反函数
DATE_ADD 和 ADDDATE 两个函数功能相同,都是向日期添加指定的时间间隔 DATE_ADD('2022-05-19 15:14:08',INTERVAL 1 DAY)
DATE_SUB 和 SUBDATE 两个函数功能相同,都是向日期减去指定的时间间隔DATE_SUB('2022-05-19 15:14:08',INTERVAL 1 DAY)
ADDTIME 时间加法运算,在原始时间上添加指定的时间ADDTIME('2022-05-19 15:14:08','10:00:00')
SUBTIME 时间减法运算,在原始时间上减去指定的时间SUBTIME('2022-05-19 15:14:08','10:00:00')
DATEDIFF 获取两个日期之间间隔,返回参数 1 减去参数 2 的值
DATE_FORMAT 格式化指定的日期,根据参数返回指定格式的值,这个转换格式与Java不同 如 %Y-%m-%d %H:%i:%s
WEEKDAY 获取指定日期在一周内的对应的工作日索引周一是0,周二是1.......

MySQL 聚合函数

函数名称 作用
MAX 查询指定列的最大值
MIN 查询指定列的最小值
COUNT 统计查询结果的行数
SUM 求和,返回指定列的总和
AVG 求平均值,返回指定列数据的平均值

MySQL 流程控制函数

函数名称 作用
IF(v,v1,v2) 判断v值,如果符合返回v1,不符合返回v2,流程控制
IFNULL(v1,v2) 判断是否为空,v1不为空返回自己,为空返回v2
CASE WHEN... THEN WHEN...THEN ... ELSE ... END 搜索语句,类似于Java中的if .... else if .... else
CASE ... WHEN ... THEN WHEN...THEN ... ELSE ..END 搜索语句,类似于Java中的Switch case

SQL练习

第一题:请你从exam_record数据表中计算所有用户完成SQL类别高难度试卷得分的截断平均值(去掉一个最大值和一个最小值后的平均值)examination_info(exam_id试卷ID, tag试卷类别, difficulty试卷难度, duration考试时长, release_time发布时间)

1. SELECT
2.  tag,
3.  difficulty,
4.  round(( sum( score ) - max( score ) - min( score )) / ( count( score ) - 2 ), 1 ) AS clip_avg_score 
5. FROM
6.  exam_record
7.  LEFT JOIN examination_info ON exam_record.exam_id = examination_info.exam_id 
8. WHERE
9.  tag = "SQL" 
10.   AND difficulty = "hard"

第二题:展示出第一张表所有数据,90分以上为优,80-90良,60-80中 小于60为不及格。

1. SELECT id,uid, CASE WHEN score >90 THEN '优'
2. WHEN score >80 AND score< 90 THEN '良'
3. WHEN score >60 AND score< 80 THEN '中'
4.                 WHEN score< 60 THEN '不及格'
5.         ELSE  '未知' END
6. FROM exam_record

第三题:求出每个用户每个科目的平均值,并将科目放到表头(行转列

1. SELECT
2.  er.id,
3.  er.uid,
4.  er.exam_id,
5.  avg( CASE ei.tag WHEN 'SQL' THEN er.score END ) AS 'sql',
6.  avg( CASE ei.tag WHEN '算法' THEN er.score END ) AS '算法'
7. FROM
8.  exam_record er
9.  JOIN examination_info ei USING ( exam_id ) 
10. GROUP BY
11.er.uid
相关实践学习
如何快速连接云数据库RDS MySQL
本场景介绍如何通过阿里云数据管理服务DMS快速连接云数据库RDS MySQL,然后进行数据表的CRUD操作。
全面了解阿里云能为你做什么
阿里云在全球各地部署高效节能的绿色数据中心,利用清洁计算为万物互联的新世界提供源源不断的能源动力,目前开服的区域包括中国(华北、华东、华南、香港)、新加坡、美国(美东、美西)、欧洲、中东、澳大利亚、日本。目前阿里云的产品涵盖弹性计算、数据库、存储与CDN、分析与搜索、云通信、网络、管理与监控、应用服务、互联网中间件、移动服务、视频服务等。通过本课程,来了解阿里云能够为你的业务带来哪些帮助 &nbsp; &nbsp; 相关的阿里云产品:云服务器ECS 云服务器 ECS(Elastic Compute Service)是一种弹性可伸缩的计算服务,助您降低 IT 成本,提升运维效率,使您更专注于核心业务创新。产品详情: https://www.aliyun.com/product/ecs
目录
相关文章
|
29天前
|
SQL 关系型数据库 MySQL
MySQL 常用函数
我们这次全面梳理 MySQL 中的常用函数,涵盖 聚合函数、字符串函数、日期时间函数、数学函数 和 控制流函数 等五大类。每类函数均配有语法说明与实用示例,帮助读者提升数据处理能力,如统计分析、文本处理、日期计算、条件判断等。文章结尾提供了丰富的实战练习,帮助读者巩固和应用函数技巧,是进阶 SQL 编程与数据分析的实用工具手册。
68 2
|
5月前
|
关系型数据库 MySQL Linux
MySQL原理简介—6.简单的生产优化案例
本文介绍了数据库和存储系统的几个主题: 1. **MySQL日志的顺序写和数据文件的随机读指标**:解释了磁盘随机读和顺序写的原理及对数据库性能的影响。 2. **Linux存储系统软件层原理及IO调度优化原理**:解析了Linux存储系统的分层架构,包括VFS、Page Cache、IO调度等,并推荐使用deadline算法优化IO调度。 3. **数据库服务器使用的RAID存储架构**:介绍了RAID技术的基本概念及其如何通过多磁盘阵列提高存储容量和数据冗余性。 4. **数据库Too many connections故障定位**:分析了MySQL连接数限制问题的原因及解决方法。
156 23
|
3月前
|
关系型数据库 MySQL 大数据
大数据新视界--大数据大厂之MySQL 数据库课程设计:MySQL 数据库 SQL 语句调优的进阶策略与实际案例(2-2)
本文延续前篇,深入探讨 MySQL 数据库 SQL 语句调优进阶策略。包括优化索引使用,介绍多种索引类型及避免索引失效等;调整数据库参数,如缓冲池、连接数和日志参数;还有分区表、垂直拆分等其他优化方法。通过实际案例分析展示调优效果。回顾与数据库课程设计相关文章,强调全面认识 MySQL 数据库重要性。为读者提供综合调优指导,确保数据库高效运行。
|
4月前
|
SQL 关系型数据库 MySQL
【YashanDB知识库】MySQL field 函数的改写方法
【YashanDB知识库】MySQL field 函数的改写方法
|
5月前
|
存储 SQL 关系型数据库
服务器数据恢复—云服务器上mysql数据库数据恢复案例
某ECS网站服务器,linux操作系统+mysql数据库。mysql数据库采用innodb作为默认存储引擎。 在执行数据库版本更新测试时,操作人员误误将在本来应该在测试库执行的sql脚本在生产库上执行,导致生产库上部分表被truncate,还有部分表中少量数据被delete。
145 25
|
4月前
|
SQL 关系型数据库 MySQL
【YashanDB知识库】MySQL field 函数的改写方法
本文来自YashanDB官网,介绍将MySQL的FIELD函数改写到YashanDB的方法。MySQL中,FIELD函数用于自定义排序;而在YashanDB中,可使用DECODE或CASE语句实现类似功能。示例展示对表`t1`按指定顺序排序的过程,提供两种改写方式,结果均符合预期。
|
5月前
|
SQL 关系型数据库 MySQL
数据库数据恢复——MySQL简介和数据恢复案例
MySQL数据库数据恢复环境&故障: 本地服务器,安装的windows server操作系统。 操作系统上部署MySQL单实例,引擎类型为innodb,表空间类型为独立表空间。该MySQL数据库没有备份,未开启binlog。 人为误操作,在用Delete命令删除数据时未添加where子句进行筛选导致全表数据被删除,删除后未对该表进行任何操作。
|
5月前
|
SQL 关系型数据库 MySQL
MySQL原理简介—11.优化案例介绍
本文介绍了四个SQL性能优化案例,涵盖不同场景下的问题分析与解决方案: 1. 禁止或改写SQL避免自动半连接优化。 2. 指定索引避免按聚簇索引全表扫描大表。 3. 按聚簇索引扫描小表减少回表次数。 4. 避免产生长事务长时间执行。
|
6月前
|
SQL 关系型数据库 MySQL
Mysql-常用函数及其用法总结
以上列举了MySQL中一些常用的函数及其用法。这些函数在日常的数据库操作中非常实用,能够简化数据查询和处理过程,提高开发效率。掌握这些函数的使用方法,可以更高效地处理和分析数据。
183 19
|
7月前
|
SQL 关系型数据库 MySQL
【MySQL基础篇】盘点MySQL常用四大类函数
本文介绍了MySQL中的四大类常用函数:字符串函数、数值函数、日期函数和流程函数。
【MySQL基础篇】盘点MySQL常用四大类函数

推荐镜像

更多