一、数学函数

基础运算函数

函数功能描述
ABS(x)绝对值
CEIL(x)/CEILING(x)向上取整
FLOOR(x)向下取整
ROUND(x,d)四舍五入(d为小数位数)
TRUNCATE(x,d)数字截断(保留d位小数)


三角函数

函数功能描述
SIN(x)正弦函数
COS(x)余弦函数
TAN(x)正切函数
ASIN(x)反正弦函数
ACOS(x)反余弦函数
ATAN(x)反正切函数


其他数学函数

 

函数功能描述
MOD(a,b)取模运算
POW(x,y)/POWER(x,y)幂运算
RAND()返回0-1随机数
SQRT(x)平方根


应用示例:

SELECT ROUND(price*0.9, 2) AS discounted_price FROM products;


二、字符串函数

字符串处理

函数功能描述
CONCAT(s1,s2,...)字符串连接
SUBSTRING(str,pos,len)提取子字符串
TRIM()去除首尾空格
REPLACE(str,from_str,to_str)字符串替换


大小写转换

函数功能描述
LOWER(str)/LCASE(str)转小写
UPPER(str)/UCASE(str)转大写


字符串信息

函数功能描述
LENGTH(str)字节长度
CHAR_LENGTH(str)字符长度
POSITION(substr IN str)子串出现位置


应用示例:

SELECT CONCAT(UPPER(firstname), ' ', LOWER(lastname)) AS fullname FROM users;


三、日期时间函数

获取当前时间

函数功能描述
NOW()当前日期时间
CURDATE()当前日期
CURTIME()当前时间


日期提取

函数功能描述
YEAR(date)提取年份
MONTH(date)提取月份
DAY(date)提取日期
HOUR(time)提取小时
MINUTE(time)提取分钟
SECOND(time)提取秒钟


日期计算

函数功能描述
DATE_ADD(date,INTERVAL expr unit)日期加法
DATEDIFF(date1,date2)计算日期差
DATE_FORMAT(date,format)日期格式化


应用示例:

SELECT name, DATEDIFF(NOW(), hire_date)/365 AS years_employed FROM employees;


四、条件判断函数

流程控制

函数功能描述
IF(expr, v1, v2)条件判断(三目运算)
IFNULL(v1, v2)NULL值替换
NULLIF(expr1, expr2)相等返回NULL


CASE表达式

CASE 
    WHEN condition1 THEN result1
    WHEN condition2 THEN result2
    ELSE default_result
END


应用示例:

SELECT 
    product_name,
    CASE 
        WHEN price > 100 THEN 'Premium'
        WHEN price > 50 THEN 'Standard'
        ELSE 'Budget'
    END AS category
FROM products;


五、系统信息函数

数据库信息

函数功能描述
DATABASE()当前数据库名
VERSION()MySQL服务器版本
USER()/CURRENT_USER()当前用户


连接信息

 

函数功能描述
CONNECTION_ID()连接ID
LAST_INSERT_ID()最后插入的AUTO_INCREMENT值


应用示例:

SELECT CONCAT('Database: ', DATABASE(), ' | User: ', USER()) AS info;


六、加密函数

哈希函数

函数功能描述
MD5(str)MD5哈希
SHA1(str)/SHA(str)SHA-1哈希
SHA2(str,hash_length)SHA-2哈希


加解密函数

函数功能描述
AES_ENCRYPT(str,key)AES加密
AES_DECRYPT(crypt_str,key)AES解密
ENCODE(str,pass_str)编码
DECODE(crypt_str,pass_str)解码


应用示例:

INSERT INTO users (username, password) 
VALUES ('john', SHA2('mypassword', 256));


七、聚合函数

常用聚合

函数功能描述
COUNT()计数
SUM()求和
AVG()平均值
MAX()最大值
MIN()最小值


高级聚合

函数功能描述
GROUP_CONCAT()连接组内字符串
STDDEV()标准差
VARIANCE()方差


应用示例:

SELECT 
    department, 
    AVG(salary) AS avg_salary,
    COUNT(*) AS employees
FROM staff
GROUP BY department;


八、窗口函数(MySQL 8.0+)

排序函数

函数功能描述
ROW_NUMBER()行号
RANK()排名(跳跃式)
DENSE_RANK()排名(连续式)


分析函数

 

函数功能描述
LEAD()访问后一行数据
LAG()访问前一行数据
FIRST_VALUE()获取窗口首值
LAST_VALUE()获取窗口尾值


应用示例:

SELECT 
    product_name,
    price,
    RANK() OVER (ORDER BY price DESC) AS price_rank
FROM products;


最佳实践建议

1. 函数嵌套:合理嵌套函数可以解决复杂问题

   SELECT DATE_FORMAT(DATE_ADD(birthdate, INTERVAL 18 YEAR), '%Y-%m-%d') AS adult_date
   FROM users;


2. 性能考虑:

    避免在WHERE条件列上使用函数(会导致索引失效)

    复杂计算考虑使用存储过程

3. 可读性:

    为复杂函数表达式添加注释

    使用CASE WHEN替代深层嵌套IF

点赞(1)

C语言网提供由在职研发工程师或ACM蓝桥杯竞赛优秀选手录制的视频教程,并配有习题和答疑,点击了解:

一点编程也不会写的:零基础C语言学练课程

解决困扰你多年的C语言疑难杂症特性的C语言进阶课程

从零到写出一个爬虫的Python编程课程

只会语法写不出代码?手把手带你写100个编程真题的编程百练课程

信息学奥赛或C++选手的 必学C++课程

蓝桥杯ACM、信息学奥赛的必学课程:算法竞赛课入门课程

手把手讲解近五年真题的蓝桥杯辅导课程

Dotcpp在线编译      (登录可减少运行等待时间)