倚楼听风雨
淡看江湖路

MySQL 各种函数使用方法存档 持续更新

有的时候需要经常以 DBA 的身份去处理各种各样的数据来满足公司运营的一些需求,发现这个过程中需要经常不可避免的用到一些函数,比如时间处理、字符串处理等函数,毕竟不是专业干这个的,所以很多时候遇到这些问题都需要去网上查一下 MySQL 相关的一些比较牛逼的函数来使用,索性新建一篇文章做一个函数合集的笔记,以后用到了直接来这里复盘,当然也希望对你们有一些帮助,每个函数我尽量写一些例子来帮助更形象的记忆,技多不压身,写代码的说不定以后转行 DBA 也不是问题哈!

1.COUNT() 函数

该函数是用来统计表中的记录有多少行的一个函数。常用的形式有 COUNT(*)、COUNT(1)、COUNT(列名)、COUNT(DISTINCT 列名) 的形式。关于 COUNT(*) 与 COUNT(1) 其实没什么太大的区别,COUNT(*) 属于自动优化帮你找到索引列进行计数统计,而 COUNT(1) 是主键索引,其中这个「1」代表忽略列,统计行数的意思。至于 COUNT(列名) 就是统计当前列的记录数,是忽略 NULL 这种情况的,COUNT(DISTINCT 列名) 自然就是去重,如果列名是索引的话就会加快查询统计速度。

2.SUM() 函数

该函数是用来计算某一列的总和或者计算表达式的结果。如果没有返回结果的话 SUM() 函数会返回 NULL 而不是 0。

  • SUM 与 GROUP BY 子句组合时,会计算 GROUP BY 子句中指定的每个分组的总和。
  • SUM 与 HAVING 组合使用时,可以使用 SUM 函数根据特定条件过滤结果。
  • SUM 与 LIMIT 组合使用,可以只计算前几条限制数据的的计算。但是需要子查询。
  • 如果希望 SUM 函数返回 0 而不是 NULL 可以使用 COALESCE 函数。COALESCE函数接受两个参数,如果第一个参数为 NULL,则返回第二个参数,否则返回第一个参数。

3.DATEDIFF() 函数

返回两个日期之间的天数。第一参数放比较超前的日期,第二个参数放比较早的日期,否则会返回负数。

4.DATE_FORMAT() 函数

用于以不同的格式显示日期/时间数据。DATE_FORMAT(date,format),date 就是代表日期,format 就代表要格式化的格式。

格式 描述
%a 缩写星期名
%b 缩写月名
%c 月,数值
%D 带有英文前缀的月中的天
%d 月的天,数值(00-31)
%e 月的天,数值(0-31)
%f 微秒
%H 小时 (00-23)
%h 小时 (01-12)
%I 小时 (01-12)
%i 分钟,数值(00-59)
%j 年的天 (001-366)
%k 小时 (0-23)
%l 小时 (1-12)
%M 月名
%m 月,数值(00-12)
%p AM 或 PM
%r 时间,12-小时(hh:mm:ss AM 或 PM)
%S 秒(00-59)
%s 秒(00-59)
%T 时间, 24-小时 (hh:mm:ss)
%U 周 (00-53) 星期日是一周的第一天
%u 周 (00-53) 星期一是一周的第一天
%V 周 (01-53) 星期日是一周的第一天,与 %X 使用
%v 周 (01-53) 星期一是一周的第一天,与 %x 使用
%W 星期名
%w 周的天 (0=星期日, 6=星期六)
%X 年,其中的星期日是周的第一天,4 位,与 %V 使用
%x 年,其中的星期一是周的第一天,4 位,与 %v 使用
%Y 年,4 位
%y 年,2 位

5.FIND_IN_SET() 函数

用于在逗号分隔的字符串列表中查找指定字符串的位置。FIND_IN_SET(needle,haystack);

其实这个函数可以跟 IN 关键字转换用,实际上它俩基本差不多。只不过 IN 的性能更高,相比于 IN,FIND_IN_SET 表达的是是否包含的子集概念,而 IN 直接代表的就是表中的某个字段的值。第一个参数 needle 是要查找的字符串。第二个参数 haystack 是要搜索的逗号分隔的字符串列表。注意如果 needle 包含逗号,该函数将无法正常工作。

  • 如果 needle 在 haystack 中,则返回一个正整数。
  • 如果 needle 不在 haystack 中,或者 haystack 是空字符串,则返回零。
  • 如果 needle 或 haystack 为 NULL,则函数返回 NULL 值。

6.SUBSTRING_INDEX() 函数

SUBSTRING_INDEX(str,delim,count),代表从字符串 str 分隔符 delim 在计数发生前的子字符串。count 为正就是从左向右,否则反之。

7.TIMESTAMPDIFF() 函数

MySQL 的 TIMESTAMPDIFF 是用来计算两个日期的差值,一共接收三个参数:

  • 第一个参数:差值结果类型,值可以为 YEAR、MONTH、WEEK、DAY、HOUR、MINUTE、SECOND 等类型,分别代表年月周日天时分秒。
  • 第二个参数与第三个参数分别代表旧日期与新日期,即计算的是后面的日期减去前面的日期的差值。

8.DATE() 函数

DATE(expr),提取日期或日期时间表达式 expr 中的日期部分。

9.STR_TO_DATE(str,format) 函数

STR_TO_DATE(str, format),DATE_FORMAT() 函数的反函数。它需要一个字符串 str 和一个格式字符串格式。STR_TO_DATE() 返回一个 DATETIME 值,如果格式字符串包含日期和时间部分,或如果字符串只包含日期或时间的部分返回日期或时间值。

10.待续。

相关文章阅读

  1. 浅析 MySQL 中的锁
  2. MySQL 索引知识详细总结
  3. 阿里巴巴Java开发手册第五章MySQL数据库-索引规约篇
  4. MySQL中执行explain命令后显示的各个字段都是什么含义?

更博不易,如果觉得文章对你有帮助并且有能力的老铁烦请捐赠盒烟钱,点我去赞助。或者扫描文章下面的微信/支付宝二维码打赏任意金额(点击「给你买杜蕾斯」),也可以加入本站封闭式交流论坛「DownHub」开启新世界的大门,老四这里抱拳谢谢诸位了。捐赠时请备注姓名或者昵称,因为您的署名会出现在赞赏列表页面,您的捐赠钱财也会被用于小站的服务器运维上面,再次抱拳感谢。

赞(14) 给你买杜蕾斯
本站原创文章受自媒体平台原创保护,未经允许不得转载高老四博客 » MySQL 各种函数使用方法存档

开始你的表演 抢沙发

觉得文章有用就打赏一下老四,鼓励我更好的创作

非常感谢你的打赏,我们将继续给力更多优质内容,让我们一起创建更加美好的网络世界!

支付宝扫一扫打赏

微信扫一扫打赏

登录

找回密码

注册