MYSQL常用函数介绍


Posted in MySQL onMay 05, 2022

MYSQL函数

1:聚合函数

聚合函数主要由:count,sum,min,max,avg,group_count()

重点说一下group_count()函数,首先根据group by指定的列进行分组,并且用分隔符分隔,将同一个分组中的值连接起来,返回一个字符串结果. 

格式 : group_count([distinct]字段名 [order by 排序字段 asc/desc] [separator '分隔符'])

说明:

      1:使用distinct可以排除重复值.
      2:如果需要对结果值进行排序,可以使用order by 子句.
      3:separator是一个字符串值,默认为逗号.

2:数学函数

1:ABS(x) 返回x的绝对值
2:CEIL(x)返回大于等于x的最小整数(向上取整)
3:FLOOR(x) 返回小于等于x的最大整数(向下取整)
4:GREATEST(expr1,expr2...)返回列表中的最大值
5:LEAST(expr1,expr2.....)返回列表的最小值
6:MAX(x) 返回字段x的最大值
7:MIN(x) 返回字段x的最小值
8:MOD(x,y) 返回x除以y以后的余数
9:PI()返回圆周率(3.141593)
10:POW(x,y) 返回x的y次方
11:RAND() 返回0到1的随机数
12:ROUND(x) 返回离x最近的整数(遵循四舍五入)
13:ROUND(x,y) 返回指定位数的小数(遵循四舍五入)
14:TRUNCATE(x,y) 返回数值x保留到小数点后y位的值,(与ROUND最大的去区别是不会进行四舍五入)

2:字符串函数

1:char_length(s) 返回字符串s的字符数
2:character_length 返回字符串s的字符数
3:concat(s1,s2,s3) 字符串s1,s2等多个字符串合并为一个字符串
4:concat_ws(x,s1,s2..) 同concat(s1,s2,s3)函数,但是每个字符串之间要加上x,x可以是分隔符
5:field(s,s1,s2) 返回第一个字符串s在字符串列表(s1,s2..)中的位置
6:length() 返回的是字节数 mysql中utf-8的编码 一个中文汉字是三个字节
7:ltrim(s) 去掉字符串s开始处的空格 去除左边的空格  rtrim()去除右边的空格 trim()去除两边的空格
8:mid(s,n,len) 从字符串s的n位置截取长度为len的子字符串同substring(s,n,len)
9:position(s1,in,s) 从字符串s中获取s1的开始位置
10:replcae(s,s1,s2) 将字符串s2替代字符串s中的字符串s1
11:reverse(s) 将字符串s的顺序反过来
12:right(s,n)返回字符串s的后n个字符(从右取n个字符)
13:strcmp(s1,s2) 比较字符串s1和s2,如果s1与s2相等返回0,如果s1>s2返回1 如果s1小于s2返回-1
14:substr(s,start,length) 从字符串s的start位置截取长度为length的子字符串
15:ucase(s) upper(s)将字符串转换为大写
16:lcase(s) lower(s) 将字符串转换为小写

3:日期函数

1:unix_timestamp() 返回1970-01-01 00:00:00 到当前毫秒值
2:unix_timestamp(date_string) 将指定日期转换为毫秒值时间戳
3:from_unixtime(bigint unixtime,string-format) 将毫秒值时间戳转为指定格式日期
4:curdate() 返回当前日期
5:current_date() 返回当前日期
6:current_timestamp() 返回当前日期和时间
7:datediff(d1,d2) 计算日期d1>d2之间间隔的天数  eg:datediff('2022-01-01','2022-02-01')
8:currtime() 返回当前时间 
9:date_format(d,f) 按照表达式f的要求显示日期d

4:控制流函数

1:if(expr,v1,v2) 如果表达式expr成立,返回结果v1,否则返回结果v2
2:ifnull(v1,v2) 如果v1的值为null则返回v1,否则返回v2 
3:isnull(expression) 判断表达式是否为null 
4:nullif(expr1,expr2)  比较两个字符串 如果字符串expr1和expr2相等 返回null 否则返回expr1
5:case expression when condition1 then result1  when condition2 then result2 else result end 表示case函数开始,end表示函数结束,如果condition1成立则返回result1,如果condition2成立则返回result2,当全部不成立则返回result,而当有一个成立之后,后面的就不执行了.

5:窗口函数

mysql8.0新增的窗口函数又称为开窗函数,非聚合窗口函数是相对于聚合函数来说,聚合函数是对一组数据计算后返回单个值(即分组),非聚合函数一次只会处理一行数据,窗口聚合函数在行记录上计算某个字段的结果时,可将窗口范围内的数据输入到聚合函数中,并不改变行数

5.1 序号函数

可以实现分组排序,并添加序号

1: row_number()
2: rank()
3: dense_rank() 

写法:select id,...,dense_rank() over(partition by dname order by salary desc) as rn from employee;

注意: 不加 partition by 表示全局排序

MYSQL常用函数介绍

5.2 分布函数

1: percent_rank()
  用途:每行按照公式(rank-1)/(row-1)进行计算.其中rank为rank()函数产生的序号,row为当前窗口的记录总行数
2: cume_dist()
  用途:分组内小于,等于当前rank值的行数/分组内总行数
  应用场景:查询小于等于当前薪资的比例

写法:select dname,ename,salary,cume_dist() over(order by salary) as rn1,
cume_dist() over(partition by dname order by salary) as rn2 from employe;

MYSQL常用函数介绍

5.3 前后函数

1: lag(expr,n)
2: lead(expr,n)

用途:返回位于当前行的前n行(lag(exor,n))或后n行(lead(expr,n))的expr的值

应用场景:查询前1名同学的成绩和当前同学成绩的差值 (当前行内可以有个上一行数据的某一字段值)

MYSQL常用函数介绍

MYSQL常用函数介绍

5.4 头尾函数

1: first_value(expr)
2: last_value(expr)

用途:返回第一个(first_value(expr))或者最后一个(last_value(expr)) expr的值
应用场景:截止到当前,按照日期排序查询第1个入职和最后一个入职员工的薪资

MYSQL常用函数介绍

5.5 其他函数

1: nth_value(expr,n)
2: ntile(n)

用途:返回窗口中第n个expr的值,expr可以是表达式,也可以是列名
应用场景:截止到当前薪资,显示每个员工的薪资中排名第二或者第三的薪资

MYSQL常用函数介绍

MYSQL常用函数介绍

5.6 开窗聚合函数

1: sum()
2: avg()
3: min()
4: max()

写法:select id,...,sum(salary) over(partition by dname order by hiredate desc) as rn from employee;

每一行rn的数据是当期行和之前每一行的salary之和
如果没有order by排序语句,默认把分组内的所有数据进行sum操作

MYSQL常用函数介绍

到此这篇关于MYSQL常用函数介绍的文章就介绍到这了!


Tags in this post...

MySQL 相关文章推荐
如何搭建 MySQL 高可用高性能集群
Jun 21 MySQL
MySQL系列之十三 MySQL的复制
Jul 02 MySQL
MYSQL 的10大经典优化案例场景实战
Sep 14 MySQL
MySQL中datetime时间字段的四舍五入操作
Oct 05 MySQL
SQL基础的查询语句
Nov 11 MySQL
mysql 联合索引生效的条件及索引失效的条件
Nov 20 MySQL
一文搞懂MySQL索引页结构
Feb 28 MySQL
MySQL插入数据与查询数据
Mar 25 MySQL
Mysql 文件配置解析介绍
May 06 MySQL
MySQL数据库 安全管理
May 06 MySQL
MYSQL事务的隔离级别与MVCC
May 25 MySQL
数据设计之权限的实现
Aug 05 MySQL
MySQL 数据 data 基本操作
May 04 #MySQL
MySQL 字符集 character
May 04 #MySQL
MySQL 数据表操作
May 04 #MySQL
MySQL 执行数据库更新update操作的时候数据库卡死了
May 02 #MySQL
MySQL如何使备份得数据保持一致
MySQL索引 高效获取数据的数据结构
使用Mysql计算地址的经纬度距离和实时位置信息
Apr 29 #MySQL
You might like
网友原创的PHP模板类代码
2008/09/07 PHP
PHP实现阳历到农历转换的类实例
2015/03/07 PHP
php通过array_unshift函数添加多个变量到数组前端的方法
2015/03/18 PHP
PHP弱类型语言中类型判断操作实例详解
2017/08/10 PHP
PHPUnit测试私有属性和方法功能示例
2018/06/12 PHP
javascript 中String.match()与RegExp.exec()的区别说明
2013/01/10 Javascript
jquery 元素控制(追加元素/追加内容)介绍及应用
2013/04/21 Javascript
Extjs4中tree的拖拽功能(可以两棵树之间拖拽) 简单实例
2013/12/08 Javascript
js动态创建及移除div的方法
2015/06/03 Javascript
Angularjs在初始化未完毕时出现闪烁问题的解决方法分析
2016/08/05 Javascript
AngularJs  Understanding Angular Templates
2016/09/02 Javascript
原生JS实现网页手机音乐播放器 歌词同步播放的示例
2018/02/02 Javascript
vue项目如何刷新当前页面的方法
2018/05/18 Javascript
通过npm或yarn自动生成vue组件的方法示例
2019/02/12 Javascript
Django中实现点击图片链接强制直接下载的方法
2015/05/14 Python
Python中关键字nonlocal和global的声明与解析
2017/03/12 Python
Python 机器学习库 NumPy入门教程
2018/04/19 Python
使用python进行拆分大文件的方法
2018/12/10 Python
python使用pdfminer解析pdf文件的方法示例
2018/12/20 Python
wxpython实现按钮切换界面的方法
2019/11/19 Python
Python之——生成动态路由轨迹图的实例
2019/11/22 Python
pytorch 实现cross entropy损失函数计算方式
2020/01/02 Python
python列表推导和生成器表达式知识点总结
2020/01/10 Python
pytorch实现建立自己的数据集(以mnist为例)
2020/01/18 Python
python生成任意频率正弦波方式
2020/02/25 Python
python对数组进行排序,并输出排序后对应的索引值方式
2020/02/28 Python
Python判断远程服务器上Excel文件是否被人打开的方法
2020/07/13 Python
Python监听键盘和鼠标事件的示例代码
2020/11/18 Python
input file上传文件样式支持html5的浏览器解决方案
2012/11/14 HTML / CSS
HTML5 Canvas中使用路径描画二阶、三阶贝塞尔曲线
2015/01/01 HTML / CSS
Html5 页面适配iPhoneX(就是那么简单)
2019/09/05 HTML / CSS
党员个人公开承诺书
2014/08/29 职场文书
党性心得体会
2014/09/03 职场文书
班级班风口号大全
2015/12/25 职场文书
2017寒假社会实践心得体会范文
2016/01/14 职场文书
一文搞懂Redis中String数据类型
2022/04/03 Redis