程序员必收藏:珍藏多年Mysql大全笔记,轻松掌握数据库!

程序员的世界里,离得开代码,却离不开数据库。今天,我要与你分享一份珍藏已久的MySQL常用函数大全。这些函数陪伴我走过了无数个加班熬夜的日子,风雨无阻,修修补补多年,希望它们也能成为你的得力助手!

掌握这些数据库函数,你的编程之路将更加顺畅,其他问题也会迎刃而解。

接下来,本篇文章将详细介绍以下内容

  1. 流程控制函数:如IF、IFNULL、CASE等,用于在SQL查询中实现条件判断和逻辑控制。
  2. 聚合函数:如COUNT、SUM、AVG等,用于对数据进行汇总和统计分析。
  3. 加密函数:如SHA、MD5、ENCODE等,用于数据加密和安全处理。
  4. 日期函数:如CURDATE、DATEDIFF、YEAR等,用于日期和时间的操作和计算。
  5. 数字函数:如SUM、ROUND、RAND等,用于数学计算和数值处理。
  6. 字符串函数:如UPPER、SUBSTRING、REPLACE等,用于字符串操作和处理。
  7. 其他函数:如USER、VERSION、DATABASE等,用于获取系统信息和数据库管理。

1. 流程控制函数

序号 函数 说明
1 IF(test,t,f) 如果test为真,返回t;否则返回f
2 IFNULL(arg1,arg2) 如果arg1不为空,返回arg1,否则返回arg2
3 NULLIF(arg1,arg2) 如果arg1=arg2返回NULL;否则返回arg1
4 CASE WHEN[test1] THEN [result1]…ELSE [default] END 如果testN为真,则返回resultN,否则返回default
5 CASE [test] WHEN[val1] THEN [result]…ELSE [default]END 如果test和valN相等,则返回resultN,否则返回default

示例:

1
SELECT IF(1>0,'yes','no');

结果:

1
yes

2. 聚合函数

序号 函数 说明
1 COUNT(col) 统计查询结果的行数
2 MIN(col) 查询指定列的最小值
3 SUM(col) 求和,返回指定列的总和
4 AVG(col) 求平均值,返回指定列数据的平均值

示例:

1
SELECT SUM(age) AS totalAge FROM Student;

结果:

1
age的总和

3. 加密函数

序号 函数 说明
1 SHA() 计算字符串str的安全散列算法(SHA)校验和
2 PASSWORD(str) 返回字符串str的加密版本,不可逆
3 MD5() 计算字符串str的MD5校验和
4 ENCRYPT(str,salt) 使用UNIX crypt()函数,用salt加密字符串str
5 ENCODE(str,key) 使用key作为密钥加密字符串str,结果为二进制字符串

示例:

1
SELECT ENCODE('geeksforgeeks', 'passwordstring');

结果:

1
Q)?P????j[K

4. 日期函数

序号 函数 说明
1 CURDATE() 返回当前日期
2 CURRENT_DATE() 返回当前日期
3 CURRENT_TIME 返回当前时间
4 CURRENT_TIMESTAMP() 返回当前日期和时间
5 CURTIME() 返回当前时间
6 DATE() 从日期或日期时间表达式中提取日期值
7 DATEDIFF(d1,d2) 计算日期d1到d2之间相隔的天数
8 YEAR(d) 返回年份
9 YEARWEEK(date, mode) 返回年份及第几周(0到53),mode中0表示周日,1表示周一
10 WEEKOFYEAR(d) 计算日期d是本年的第几个星期,范围是0到53
11 WEEKDAY(d) 日期d是星期几,0表示星期一,1表示星期二
12 WEEK(d) 计算日期d是本年的第几个星期,范围是0到53
13 TO_DAYS(d) 计算日期d距离0000年1月1日的天数
14 TIMESTAMP(expression, interval) 单个参数时,返回日期或日期时间表达式;有2个参数时,将参数相加
15 TIMEDIFF(time1, time2) 计算时间差值
16 TIME_TO_SEC(t) 将时间t转换为秒
17 TIME_FORMAT(t,f) 按f格式显示时间t
18 TIME(expression) 提取表达式的时间部分
19 SYSDATE() 返回当前日期和时间
20 SUBTIME(t,n) 时间t减去n秒
21 SUBDATE(d,n) 日期d减去n天后的日期
22 STR_TO_DATE(string, format_mask) 将字符串转变为日期
23 SEC_TO_TIME(s) 将秒数s转换为时分秒格式
24 SECOND(t) 返回t中的秒钟值
25 QUARTER(d) 返回日期d是第几季度,返回1到4
26 PERIOD_DIFF(period1, period2) 返回两个时段之间的月份差值
27 PERIOD_ADD(period, number) 为年-月组合日期添加一个时段
28 NOW() 返回当前日期和时间
29 MONTH(d) 返回日期d中的月份值,1到12
30 MONTHNAME(d) 返回日期中的月份名称,如November
31 MINUTE(t) 返回t中的分钟值
32 MICROSECOND(date) 返回日期参数所对应的微秒数
33 MAKETIME(hour, minute, second) 组合时间,参数分别为小时、分钟、秒
34 MAKEDATE(year, day-of-year) 基于年份year和天数序号day-of-year返回日期
35 LOCALTIMESTAMP() 返回当前日期和时间
36 LOCALTIME() 返回当前日期和时间
37 LAST_DAY(d) 返回给定日期的那一月份的最后一天
38 HOUR(t) 返回t中的小时值
39 FROM_DAYS(n) 计算从0000年1月1日开始n天后的日期
40 EXTRACT(type FROM d) 从日期d中获取指定的值,type指定返回的值
41 DAYOFYEAR(d) 计算日期d是本年的第几天
42 DAYOFWEEK(d) 日期d是星期几,1星期日,2星期一
43 DAYOFMONTH(d) 计算日期d是本月的第几天
44 DAYNAME(d) 返回日期d是星期几,如Saturday, Sunday
45 DAY(d) 返回日期值d的日期部分
46 DATE_SUB(date,INTERVAL expr type) 从日期减去指定的时间间隔
47 DATE_FORMAT(d,f) 按f格式显示日期d
48 ADDTIME(t,n) 时间t加上时间表达式n
49 ADDDATE(d,n) 计算起始日期d加上n天后的日期

示例:

1
SELECT DAYNAME('2018-6-1 12:45:21');

结果:

1
Friday

5. 数字函数

序号 函数 说明
1 SUM(expression) 返回指定字段的总和
2 SQRT(x) 返回x的平方根
3 SIN(x) 求正弦值(参数是弧度)
4 SIGN(x) 返回x的符号,x是负数、0、正数分别返回-1、0和1
5 ROUND(x) 返回离x最近的整数
6 RAND() 返回0到1的随机数
7 RADIANS(x) 将角度转换为弧度
8 POWER(x,y) 返回x的y次方
9 POW(x,y) 返回x的y次方
10 PI() 返回圆周率(3.141593)
11 MOD(x,y) 返回x除以y的余数
12 MIN(expression) 返回字段expression中的最小值
13 MAX(expression) 返回字段expression中的最大值
14 LOG2(x) 返回以2为底的对数
15 LOG(x) 或 LOG(base, x) 返回自然对数(以e为底的对数)
16 LN 返回数字的自然对数,以e为底
17 LEAST(expr1, expr2, expr3, …) 返回列表中的最小值
18 GREATEST(expr1, expr2, expr3, …) 返回列表中的最大值
19 FLOOR(x) 返回小于或等于x的最大整数
20 EXP(x) 返回e的x次方
21 n DIV m 整除,n为被除数,m为除数
22 DEGREES(x) 将弧度转换为角度
23 COUNT(expression) 返回查询的记录总数
24 COT(x) 求余切值(参数是弧度)
25 COS(x) 求余弦值(参数是弧度)
26 CEILING(x) 返回大于或等于x的最小整数
27 CEIL(x) 返回大于或等于x的最小整数
28 AVG(expression) 返回一个表达式的平均值
29 ATAN(x) 求反正切值(参数是弧度)
30 ASIN(x) 求反正弦值(参数是弧度)
31 ACOS(x) 求x的反余弦值(参数是弧度)
32 ABS(x) 返回x的绝对值
33 TAN(x) 求正切值(参数是弧度)
34 TRUNCATE(x,y) 返回数值x保留到小数点后y位的值

示例:

1
2
SELECT CEIL(2.5);
SELECT CEILING(2.5);

结果:

1
3

6. 字符串函数

序号 函数 说明
1 UPPER(s) 将字符串转换为大写
2 UCASE(s) 将字符串转换为大写
3 TRIM(s) 去掉字符串s开始和结尾处的空格
4 SUBSTRING_INDEX(s, delimiter, number) 返回从字符串s的第number个出现的分隔符delimiter之后的子串
5 SUBSTRING(s, start, length) 从字符串s的start位置截取长度为length的子字符串
6 SUBSTR(s, start, length) 从字符串s的start位置截取长度为length的子字符串
7 STRCMP(s1,s2) 比较字符串s1和s2
8 SPACE(n) 返回n个空格
9 RTRIM(s) 去掉字符串s结尾处的空格
10 RPAD(s1,len,s2) 在字符串s1的结尾处添加字符串s2,使字符串长度达到len
11 RIGHT(s,n) 返回字符串s的后n个字符
12 REVERSE(s) 将字符串s的顺序反过来
13 REPLACE(s,s1,s2) 将字符串s2替代字符串s中的字符串s1
14 REPEAT(s,n) 将字符串s重复n次
15 POSITION(s1 IN s) 从字符串s中获取s1的开始位置
16 MID(s,n,len) 从字符串s的n位置截取长度为len的子字符串
17 LTRIM(s) 去掉字符串s开始处的空格
18 LPAD(s1,len,s2) 在字符串s1的开始处填充字符串s2
19 LOWER(s) 将字符串s的所有字母变成小写字母
20 LEFT(s,n) 返回字符串s的前n个字符
21 LCASE(s) 将字符串s的所有字母变成小写字母
22 LOCATE(s1,s) 从字符串s中获取s1的开始位置
23 INSERT(s1,x,len,s2) 字符串s2替换s1的x位置开始长度为len的字符串
24 FORMAT(x,n) 将数字x进行格式化,保留到小数点后n位
25 FIND_IN_SET(s1,s2) 返回在字符串s2中与s1匹配的字符串的位置
26 FIELD(s,s1,s2…) 返回第一个字符串s在字符串列表中的位置
27 CONCAT_WS(x, s1,s2…sn) 同CONCAT函数,但每个字符串之间加上x
28 CONCAT(s1,s2…sn) 字符串s1,s2等多个字符串合并为一个字符串
29 CHARACTER_LENGTH(s) 返回字符串s的字符数
30 CHAR_LENGTH(s) 返回字符串s的字符数
31 ASCII(s) 返回字符串s的第一个字符的ASCII码

示例:

1
SELECT INSERT("google.com", 1, 5, "baidu");

结果:

1
baidu

7. 其他函数

序号 函数 说明
1 USER() 返回当前用户
2 SESSION_USER() 返回当前用户
3 SYSTEM_USER() 返回当前用户
4 CURRENT_USER() 返回当前用户
5 VERSION() 返回数据库的版本号
6 DATABASE() 返回当前数据库名
7 COALESCE(expr1, expr2, …, expr_n) 返回参数中的第一个非空表达式
8 CONNECTION_ID() 返回唯一的连接ID
9 CONV(x,f1,f2) 返回f1进制数变成f2进制数
10 CONVERT(s USING cs) 将字符串s的字符集变成cs
11 CAST(x AS type) 转换数据类型
12 BINARY(s) 将字符串s转换为二进制字符串
13 BIN(x) 返回x的二进制编码
14 IF(expr,v1,v2) 如果表达式expr成立,返回结果v1;否则,返回结果v2
15 IFNULL(v1,v2) 如果v1的值不为NULL,则返回v1,否则返回v2
16 ISNULL(expression) 判断表达式是否为NULL
17 LAST_INSERT_ID() 返回最近生成的AUTO_INCREMENT值
18 NULLIF(expr1, expr2) 比较两个字符串,如果expr1与expr2相等返回NULL,否则返回expr1
19 CASE expression WHEN condition1 THEN result1 WHEN condition2 THEN result2 … WHEN conditionN THEN resultN ELSE result END CASE表示函数开始,END表示函数结束。

示例:

1
SELECT CONV(13,10,2);

结果:

1
1101

总结

本文详细介绍了MySQL中的常用函数,涵盖了从流程控制、聚合、加密、日期、数字、字符串到其他常用函数的广泛内容。每个函数类别都提供了函数的名称、用途和具体示例。通过掌握这些MySQL函数,程序员可以大幅提升数据库操作的效率和灵活性,解决实际开发中的各种数据处理需求。

如果你觉得本篇mysql函数大全对你有用,希望能点赞+收藏支持下!


程序员必收藏:珍藏多年Mysql大全笔记,轻松掌握数据库!
http://example.com/2024/09/10/后端技术互联/程序员必收藏:珍藏多年Mysql大全笔记,轻松掌握数据库!/
作者
技术Z先生
发布于
2024年9月10日
许可协议