一、数学函数
基础运算函数
函数 | 功能描述 |
---|---|
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
C语言网提供由在职研发工程师或ACM蓝桥杯竞赛优秀选手录制的视频教程,并配有习题和答疑,点击了解:
一点编程也不会写的:零基础C语言学练课程
解决困扰你多年的C语言疑难杂症特性的C语言进阶课程
从零到写出一个爬虫的Python编程课程
只会语法写不出代码?手把手带你写100个编程真题的编程百练课程
信息学奥赛或C++选手的 必学C++课程
蓝桥杯ACM、信息学奥赛的必学课程:算法竞赛课入门课程
手把手讲解近五年真题的蓝桥杯辅导课程