MySQL常见函数(持续更新)

聚合函数:

求和

格式:sum(需要求和的列)

例如:sum (stu_score)            # 求学生总分

一般配合group by使用

---------------------------------------------------------------------------------------------------------------------------------

平均值

格式:avg(需要平均的列)

例如:avg (stu_score)            # 求学生平均分

一般配合group by使用

---------------------------------------------------------------------------------------------------------------------------------

最大和最小

格式:max(需要求最大的列),min(需要求最小的列)

例如:max (stu_score)            # 求学生最高分

min (stu_score)            # 求学生最高分

--------------------------------------------------------------------------------------------------------------------------------

计数

格式:count(需要计数的列)或者count(1)或者count(*)

例如:count(stu_score)          # 有多少组学生成绩

注意:

1.count(1)和count(*)会统计null值,而count(普通列)不会统计null值

2.count(主键列)走的是索引所以效率最高,count(1)只要检查有值就会计数所以略快与count(*),而count(普通列)需要筛选null,所以最慢

效率:count(主键列) > count(1) > count(*) > count(普通列)

------------------------------------------------------------------------------------------------------------------------------

拼接字符串

格式:group_concat([distinct] expr [,expr ...]

               [order by {unsigned_integer | col_name | expr} [asc | desc] [,col_name ...]]

                [separator str_val])

distinct:可选,用于去除重复值

expr:要连接的列或表达式

order by:可选,用于指定连接前对值的排序方式

separator:可选,用于定义连接值之间的分隔符,默认为逗号(,)

数学类函数:

绝对值

格式:abs(需要绝对值的列)

例如:abs(stu.score)            # 求绝对值

----------------------------------------------------------------------------------------------------------------------------

天花板数

格式:ceil(需要求整数的数字)      # 大于或等于x的最小整数

例如:ceil(2.135)   结果:3

------------------------------------------------------------------------------------------------------------------------------

地板数

格式:floor(需要求整数的数字)      # 小于或等于x的最大整数

例如:floor(5.321)  结果:5

-------------------------------------------------------------------------------------------------------------------------------

限制小数点位数

格式:round(需要限制小数点的数, [限制位数])   # 限制小数点位数,不填位数默认为0

例如:round(5.132163565, 2)   结果:5.13

条件判断函数:

case when

格式:

    case

        when 条件1 then 值1

        when 条件2 then 值2

        when 条件3 then 值3

        ......

        else 值n

    end as 别名

执行流程:

    1. case.when值选择语句, 首先会先判断条件1是否成立, 如果成立则执行对应的 值1, 整个case when语句结束.

    2. 如果条件1不成立, 则会立即执行条件2, 看其是否成立, 成立走对应的值2, 然后整个语句结束.

    3. 如果条件2不成立, 则会立即执行条件3...依次类推.

    4. 如果所有的条件都不成立, 则执行 else语句, 然后整个case.when结束.

---------------------------------------------------------------------------------------------------------------------------------

if

格式: if(关系表达式, 值1, 值2)

执行流程: 先执行关系表达式, 看其结果是否成立, 成立则返回值1, 否则返回值2.

--------------------------------------------------------------------------------------------------------------------------------

相等时输出NULL

格式:nullif(值1, 值2)      # 判断值1和值2是否相等,相等等于null,不等为值1

例如:nullif(3, 1)    结果:3

nullif(1,1)     结果:null

时间类函数:

当前时间--年月日

格式:curdate()       # 获取当前时间,年月日

例如:select curdate();   结果: 2024-08-02       

------------------------------------------------------------------------------------------------------------------------------

当前时间--年月日

格式:curtime()       # 获取当前时间,时分秒

例如:select curtime();   结果: 18:23:17  

-------------------------------------------------------------------------------------------------------------------------------

当前时间--年月日时分秒

格式:now()          # 获取当前时间,年月日时分秒

例如:select now();   结果:2024-08-08 18:16:49    

---------------------------------------------------------------------------------------------------------------------------------

两个时间点间的天数

格式:datediff(时间A, 时间B)       # 时间A - 时间B之间的天数

例如:select datediff('2021-01-01', '2020-02-01');   结果:335

-----------------------------------------------------------------------------------------------------------------------------

指定减去年/月/日多少天

格式:subdate(时间, [interval] 数字 [day | month | year])

date:要从中减去时间间隔的原始日期或日期时间值.

expr:要减去的时间间隔的数量.

unit:时间间隔的单位,如DAY、MONTH、YEAR等。这个单位指定了expr所代表的时间间隔的类型.

例如:

select subdate(curdate(), weekday(curdate()));                     # 本周第一天

select subdate(curdate(), interval (weekday(curdate()) - 6) day);      # 本周最后一天

select subdate('2000-01-19', interval (year('2000-01-19') - 2024) year);  #将2000替换成了2024

---------------------------------------------------------------------------------------------------------------------------------

  • 25
    点赞
  • 16
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值