当前位置: 首页 > news >正文

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

MySQL学习:

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

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

目录

一、MySQL函数概述

二、字符串函数

1. 常用字符串函数

2. 字符串搜索与替换

三、数值函数

1. 基本数学函数

2. 高级数学运算

四、日期和时间函数

1. 获取当前日期时间

2. 日期时间计算

五、流程控制函数

1. 条件判断

2. 空值处理

六、聚合函数

1. 常用聚合函数

2. 分组聚合

七、系统信息函数

1. 数据库信息

2. 连接信息

八、加密函数

1. 哈希函数

2. 加密解密

九、JSON函数(MySQL 5.7+)

1. JSON创建与查询

2. JSON修改

十、函数使用最佳实践

结语


一、MySQL函数概述

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

  1. 简化复杂的数据操作

  2. 减少应用程序代码量

  3. 提高查询效率

  4. 保证数据处理的一致性

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

  • 字符串函数

  • 数值函数

  • 日期和时间函数

  • 流程控制函数

  • 系统信息函数

  • 聚合函数

  • 加密函数

二、字符串函数

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

1. 常用字符串函数

CONCAT() - 连接字符串

SELECT CONCAT('Hello', ' ', 'World'); -- 输出:Hello World

SUBSTRING()/SUBSTR() - 提取子字符串

SELECT SUBSTRING('MySQL Functions', 1, 5); -- 输出:MySQL

LENGTH()/CHAR_LENGTH() - 获取字符串长度

SELECT LENGTH('数据库'); -- 返回字节数(UTF-8中可能是9)
SELECT CHAR_LENGTH('数据库'); -- 返回字符数:3

TRIM() - 去除空格

SELECT TRIM('  MySQL  '); -- 输出:MySQL
SELECT LTRIM('  MySQL'); -- 仅去除左边空格
SELECT RTRIM('MySQL  '); -- 仅去除右边空格

UPPER()/LOWER() - 大小写转换

SELECT UPPER('mysql'); -- 输出:MYSQL
SELECT LOWER('MySQL'); -- 输出:mysql

2. 字符串搜索与替换

LOCATE() - 查找子字符串位置

SELECT LOCATE('SQL', 'MySQL SQL'); -- 返回3

REPLACE() - 替换字符串

SELECT REPLACE('MySQL is great', 'great', 'awesome');
-- 输出:MySQL is awesome

这个替换函数会将原字符串中所有符合目标的子字符串都进行替换

REGEXP - 正则表达式匹配

SELECT 'MySQL' REGEXP '^My'; -- 返回1(true)

三、数值函数

数值函数用于执行数学运算和数值处理。

1. 基本数学函数

ROUND() - 四舍五入

SELECT ROUND(3.14159, 2); -- 输出:3.14

CEIL()/FLOOR() - 向上/向下取整

SELECT CEIL(3.14); -- 输出:4
SELECT FLOOR(3.99); -- 输出:3

ABS() - 绝对值

SELECT ABS(-10); -- 输出:10

RAND() - 随机数

SELECT RAND(); -- 返回0-1之间的随机浮点数

2. 高级数学运算

POWER() - 幂运算

SELECT POWER(2, 3); -- 输出:8

SQRT() - 平方根

SELECT SQRT(16); -- 输出:4

MOD() - 取模

SELECT MOD(10, 3); -- 输出:1

四、日期和时间函数

日期时间函数用于处理日期和时间值,是业务系统中不可或缺的部分。

1. 获取当前日期时间

NOW() - 当前日期和时间

SELECT NOW(); -- 比如输出:2023-08-20 14:30:45

CURDATE() - 当前日期

SELECT CURDATE(); -- 比如输出:2023-08-20

CURTIME() - 当前时间

SELECT CURTIME(); -- 比如输出:14:30:45

2. 日期时间计算

DATE_ADD()/DATE_SUB() - 日期加减

SELECT DATE_ADD(NOW(), INTERVAL 1 DAY); -- 加1天
SELECT DATE_SUB(NOW(), INTERVAL 1 MONTH); -- 减1个月

DATEDIFF() - 计算日期差

SELECT DATEDIFF('2023-08-25', '2023-08-20'); -- 输出:5

DATE_FORMAT() - 格式化日期

SELECT DATE_FORMAT(NOW(), '%Y年%m月%d日 %H:%i:%s');
-- 比如输出:2023年08月20日 14:30:45

五、流程控制函数

流程控制函数允许在SQL中实现条件逻辑。

1. 条件判断

IF() - 简单条件判断

SELECT IF(1 > 0, 'True', 'False'); -- 输出:True

CASE WHEN - 多条件判断

SELECT CASE WHEN score >= 90 THEN 'A'WHEN score >= 80 THEN 'B'ELSE 'C'END AS grade
FROM students;

2. 空值处理

IFNULL() - 处理NULL值

SELECT IFNULL(NULL, 'Default Value'); -- 输出:Default Value

COALESCE() - 返回第一个非NULL值

SELECT COALESCE(NULL, NULL, 'Third', 'Fourth'); -- 输出:Third

六、聚合函数

聚合函数对一组值执行计算并返回单个值,通常与GROUP BY子句一起使用。

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

1. 常用聚合函数

COUNT() - 计数

SELECT COUNT(*) FROM users; -- 返回总行数

SUM() - 求和

SELECT SUM(salary) FROM employees;

AVG() - 平均值

SELECT AVG(score) FROM exams;

MAX()/MIN() - 最大/最小值

SELECT MAX(price), MIN(price) FROM products;

2. 分组聚合

GROUP_CONCAT() - 将分组值连接成字符串

SELECT department, GROUP_CONCAT(name) 
FROM employees 
GROUP BY department;

七、系统信息函数

系统信息函数提供数据库和服务器相关信息。

1. 数据库信息

DATABASE() - 当前数据库名

SELECT DATABASE();

USER()/CURRENT_USER() - 当前用户

SELECT USER();

2. 连接信息

CONNECTION_ID() - 连接ID

SELECT CONNECTION_ID();

LAST_INSERT_ID() - 最后插入的ID

SELECT LAST_INSERT_ID();

八、加密函数

加密函数用于数据安全处理。

1. 哈希函数

MD5() - MD5哈希

SELECT MD5('password');

SHA1()/SHA2() - SHA哈希

SELECT SHA1('password');
SELECT SHA2('password', 256); -- 256位SHA2

2. 加密解密

AES_ENCRYPT()/AES_DECRYPT() - AES加密解密

SELECT AES_ENCRYPT('secret', 'key');
SELECT AES_DECRYPT(encrypted_data, 'key');

九、JSON函数(MySQL 5.7+)

MySQL 5.7及以上版本支持JSON数据类型和相关函数。

1. JSON创建与查询

JSON_OBJECT() - 创建JSON对象

SELECT JSON_OBJECT('name', 'John', 'age', 30);

JSON_EXTRACT() - 提取JSON值

SELECT JSON_EXTRACT('{"name":"John"}', '$.name');

2. JSON修改

JSON_SET() - 设置JSON值

SELECT JSON_SET('{"name":"John"}', '$.age', 30);

JSON_REMOVE() - 删除JSON属性

SELECT JSON_REMOVE('{"name":"John","age":30}', '$.age');

十、函数使用最佳实践

  1. 索引与函数:在WHERE条件中对列使用函数会导致索引失效

    -- 不好:无法使用name上的索引
    SELECT * FROM users WHERE UPPER(name) = 'JOHN';-- 更好:使用函数索引或存储计算值
  2. 函数嵌套:避免过度嵌套函数,影响可读性和性能

    -- 不推荐
    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;
  3. 考虑性能:某些函数(如正则表达式)可能性能较差,大数据量时需谨慎使用

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

结语

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


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

http://www.xdnf.cn/news/1060219.html

相关文章:

  • AWK在网络安全中的高效应用:从日志分析到威胁狩猎
  • 苍穹外卖-2025 完成基础配置环节(详细图解)
  • 【嵌入式硬件实例】-555定时器控制舵机/伺服电机
  • 力扣网C语言编程题:接雨水(动态规划实现)
  • SCRM软件数据分析功能使用指南:从数据挖掘到商业决策
  • 什么是Nacos
  • TDengine 集群超能力:超越 InfluxDB 的水平扩展与开源优势
  • jquery 赋值时不触发change事件解决——仙盟创梦IDE
  • repo 工具
  • 动态规划笔记
  • FastMCP框架进行MCP开发:(一)基础环境搭建及测试
  • 云XR(AR/VR)算力底座关键特征与技术路径
  • 颈部不自主偏移现象解析
  • systemverilog中关于多线程的若干思考
  • SAP LPD(launchpad)配置使用手册
  • C#学习13——正则表达式
  • 计算机网络学习笔记:TCP可靠传输实现、超时重传时间选择
  • leetcode 2294. 划分数组使最大差为 K 中等
  • Kernel K-means:让K-means在非线性空间“大显身手”
  • 机器学习×第十二卷:回归树与剪枝策略——她剪去多余的分支,只保留想靠近你的那一层
  • Arduino Nano 33 BLE Sense Rev 2开发板使用指南之【环境搭建 / 点灯】
  • 基于微信小程序和深度学习的宠物照片拍摄指导平台的设计与实现
  • 【AI编程】第3期,针对AI生成的改枪码列表创建对应的数据库表
  • 主成分分析(PCA)例题——给定协方差矩阵
  • 关于嵌入式编译工具链与游戏移植的学习
  • 【图论 DFS搜索树】P10298 [CCC 2024 S4] Painting Roads|普及+
  • threejs 实现720°全景图,;两种方式:环境贴图、CSS3DRenderer渲染
  • 问题排查之nginx请求日志
  • 火山引擎TTS使用体验
  • FPGA基础 -- Verilog 行为级建模之条件语句