【MySQL基础】MySQL内置函数全面解析:提升你的数据库操作效率

【MySQL基础】MySQL内置函数全面解析:提升你的数据库操作效率

MySQL学习:

https://blog.csdn.net/2301_80220607/category_12971838.html?spm=1001.2014.3001.5482

前言:

MySQL提供了丰富的内置函数来帮助开发者高效地处理数据。这些函数覆盖了字符串操作、数值计算、日期时间处理、流程控制等多个方面。本文将全面介绍MySQL内置函数的分类、用法和实际应用场景,帮助你更好地利用这些工具优化数据库操作。

一、MySQL函数概述MySQL内置函数是数据库系统预定义的一系列功能模块,可以直接在SQL语句中调用,用于处理和转换数据。使用这些函数可以:

简化复杂的数据操作

减少应用程序代码量

提高查询效率

保证数据处理的一致性

MySQL函数主要分为以下几大类:

字符串函数

数值函数

日期和时间函数

流程控制函数

系统信息函数

聚合函数

加密函数

二、字符串函数字符串函数用于处理和操作文本数据,是日常开发中最常用的函数类别。

1. 常用字符串函数CONCAT() - 连接字符串

代码语言:javascript复制SELECT CONCAT('Hello', ' ', 'World'); -- 输出:Hello WorldSUBSTRING()/SUBSTR() - 提取子字符串

代码语言:javascript复制SELECT SUBSTRING('MySQL Functions', 1, 5); -- 输出:MySQLLENGTH()/CHAR_LENGTH() - 获取字符串长度

代码语言:javascript复制SELECT LENGTH('数据库'); -- 返回字节数(UTF-8中可能是9)

SELECT CHAR_LENGTH('数据库'); -- 返回字符数:3TRIM() - 去除空格

代码语言:javascript复制SELECT TRIM(' MySQL '); -- 输出:MySQL

SELECT LTRIM(' MySQL'); -- 仅去除左边空格

SELECT RTRIM('MySQL '); -- 仅去除右边空格UPPER()/LOWER() - 大小写转换

代码语言:javascript复制SELECT UPPER('mysql'); -- 输出:MYSQL

SELECT LOWER('MySQL'); -- 输出:mysql2. 字符串搜索与替换LOCATE() - 查找子字符串位置

代码语言:javascript复制SELECT LOCATE('SQL', 'MySQL SQL'); -- 返回3REPLACE() - 替换字符串

代码语言:javascript复制SELECT REPLACE('MySQL is great', 'great', 'awesome');

-- 输出:MySQL is awesome这个替换函数会将原字符串中所有符合目标的子字符串都进行替换

REGEXP - 正则表达式匹配

代码语言:javascript复制SELECT 'MySQL' REGEXP '^My'; -- 返回1(true)三、数值函数数值函数用于执行数学运算和数值处理。

1. 基本数学函数ROUND() - 四舍五入

代码语言:javascript复制SELECT ROUND(3.14159, 2); -- 输出:3.14CEIL()/FLOOR() - 向上/向下取整

代码语言:javascript复制SELECT CEIL(3.14); -- 输出:4

SELECT FLOOR(3.99); -- 输出:3ABS() - 绝对值

代码语言:javascript复制SELECT ABS(-10); -- 输出:10RAND() - 随机数

代码语言:javascript复制SELECT RAND(); -- 返回0-1之间的随机浮点数2. 高级数学运算POWER() - 幂运算

代码语言:javascript复制SELECT POWER(2, 3); -- 输出:8SQRT() - 平方根

代码语言:javascript复制SELECT SQRT(16); -- 输出:4MOD() - 取模

代码语言:javascript复制SELECT MOD(10, 3); -- 输出:1四、日期和时间函数日期时间函数用于处理日期和时间值,是业务系统中不可或缺的部分。

1. 获取当前日期时间NOW() - 当前日期和时间

代码语言:javascript复制SELECT NOW(); -- 比如输出:2023-08-20 14:30:45CURDATE() - 当前日期

代码语言:javascript复制SELECT CURDATE(); -- 比如输出:2023-08-20CURTIME() - 当前时间

代码语言:javascript复制SELECT CURTIME(); -- 比如输出:14:30:452. 日期时间计算DATE_ADD()/DATE_SUB() - 日期加减

代码语言:javascript复制SELECT DATE_ADD(NOW(), INTERVAL 1 DAY); -- 加1天

SELECT DATE_SUB(NOW(), INTERVAL 1 MONTH); -- 减1个月DATEDIFF() - 计算日期差

代码语言:javascript复制SELECT DATEDIFF('2023-08-25', '2023-08-20'); -- 输出:5DATE_FORMAT() - 格式化日期

代码语言:javascript复制SELECT DATE_FORMAT(NOW(), '%Y年%m月%d日 %H:%i:%s');

-- 比如输出:2023年08月20日 14:30:45五、流程控制函数流程控制函数允许在SQL中实现条件逻辑。

1. 条件判断IF() - 简单条件判断

代码语言:javascript复制SELECT IF(1 > 0, 'True', 'False'); -- 输出:TrueCASE WHEN - 多条件判断

代码语言:javascript复制SELECT

CASE

WHEN score >= 90 THEN 'A'

WHEN score >= 80 THEN 'B'

ELSE 'C'

END AS grade

FROM students;2. 空值处理IFNULL() - 处理NULL值

代码语言:javascript复制SELECT IFNULL(NULL, 'Default Value'); -- 输出:Default ValueCOALESCE() - 返回第一个非NULL值

代码语言:javascript复制SELECT COALESCE(NULL, NULL, 'Third', 'Fourth'); -- 输出:Third六、聚合函数聚合函数对一组值执行计算并返回单个值,通常与GROUP BY子句一起使用。

聚合函数在上一篇讲过,这里就将主要的函数再简单的讲解一遍

1. 常用聚合函数COUNT() - 计数

代码语言:javascript复制SELECT COUNT(*) FROM users; -- 返回总行数SUM() - 求和

代码语言:javascript复制SELECT SUM(salary) FROM employees;AVG() - 平均值

代码语言:javascript复制SELECT AVG(score) FROM exams;MAX()/MIN() - 最大/最小值

代码语言:javascript复制SELECT MAX(price), MIN(price) FROM products;2. 分组聚合GROUP_CONCAT() - 将分组值连接成字符串

代码语言:javascript复制SELECT department, GROUP_CONCAT(name)

FROM employees

GROUP BY department;七、系统信息函数系统信息函数提供数据库和服务器相关信息。

1. 数据库信息DATABASE() - 当前数据库名

代码语言:javascript复制SELECT DATABASE();USER()/CURRENT_USER() - 当前用户

代码语言:javascript复制SELECT USER();2. 连接信息CONNECTION_ID() - 连接ID

代码语言:javascript复制SELECT CONNECTION_ID();LAST_INSERT_ID() - 最后插入的ID

代码语言:javascript复制SELECT LAST_INSERT_ID();八、加密函数加密函数用于数据安全处理。

1. 哈希函数MD5() - MD5哈希

代码语言:javascript复制SELECT MD5('password');SHA1()/SHA2() - SHA哈希

代码语言:javascript复制SELECT SHA1('password');

SELECT SHA2('password', 256); -- 256位SHA22. 加密解密AES_ENCRYPT()/AES_DECRYPT() - AES加密解密

代码语言:javascript复制SELECT AES_ENCRYPT('secret', 'key');

SELECT AES_DECRYPT(encrypted_data, 'key');九、JSON函数(MySQL 5.7+)MySQL 5.7及以上版本支持JSON数据类型和相关函数。

1. JSON创建与查询JSON_OBJECT() - 创建JSON对象

代码语言:javascript复制SELECT JSON_OBJECT('name', 'John', 'age', 30);JSON_EXTRACT() - 提取JSON值

代码语言:javascript复制SELECT JSON_EXTRACT('{"name":"John"}', '$.name');2. JSON修改JSON_SET() - 设置JSON值

代码语言:javascript复制SELECT JSON_SET('{"name":"John"}', '$.age', 30);JSON_REMOVE() - 删除JSON属性

代码语言:javascript复制SELECT JSON_REMOVE('{"name":"John","age":30}', '$.age');十、函数使用最佳实践索引与函数:在WHERE条件中对列使用函数会导致索引失效

代码语言:javascript复制-- 不好:无法使用name上的索引

SELECT * FROM users WHERE UPPER(name) = 'JOHN';

-- 更好:使用函数索引或存储计算值函数嵌套:避免过度嵌套函数,影响可读性和性能

代码语言:javascript复制-- 不推荐

SELECT DATE_FORMAT(DATE_ADD(NOW(), INTERVAL 1 DAY), '%Y-%m-%d');

-- 更清晰

SELECT DATE_FORMAT(tomorrow, '%Y-%m-%d')

FROM (SELECT DATE_ADD(NOW(), INTERVAL 1 DAY) AS tomorrow) t;考虑性能:某些函数(如正则表达式)可能性能较差,大数据量时需谨慎使用

兼容性:注意不同MySQL版本的函数差异

结语MySQL内置函数是数据库操作中的强大工具,合理使用可以显著提高开发效率和查询性能。本文涵盖了大多数常用函数,但在实际应用中,还需要根据具体业务场景选择最合适的函数组合。在掌握这些基础知识后,可以进一步研究窗口函数(MySQL 8.0+)等高级特性,以应对更复杂的数据处理需求。

感谢各位大佬观看,创作不易,还望各位大佬点赞支持!!!

相关推荐

葫芦侠被和谐了吗?葫芦侠的大佬们都去哪了,葫芦侠是不是废了
数学学院举办“如何学好高等代数”专题讲座
365bet世界杯欢迎您

数学学院举办“如何学好高等代数”专题讲座

📅 07-12 👁️ 4486
Apple 苹果官方公布16种 iPhone7 拍照秘诀
365信息网

Apple 苹果官方公布16种 iPhone7 拍照秘诀

📅 02-01 👁️ 3635
深州蜜桃成熟时间剖析(探寻深州蜜桃成熟时间)
365bet世界杯欢迎您

深州蜜桃成熟时间剖析(探寻深州蜜桃成熟时间)

📅 01-24 👁️ 214
辭典檢視
365信息网

辭典檢視

📅 10-09 👁️ 9420
2022世界杯阿根廷全赛程及每场比赛比分详细记录汇总
365bet世界杯欢迎您

2022世界杯阿根廷全赛程及每场比赛比分详细记录汇总

📅 07-15 👁️ 1278
八大攝影前必須注意的準備事項 做漏輕則影響心情重則白忙一場!
桌面虚拟化与云桌面、VDI、超融合云桌面有什么区别与关联?
世界ol装备技能合成表大全 世界OL装备合成攻略分享
365bet世界杯欢迎您

世界ol装备技能合成表大全 世界OL装备合成攻略分享

📅 10-04 👁️ 9478