游乐游手机版
首页/数据库/文章详情

MySQL数据库内置函数原理与实践详解

时间:2026-08-03 20:34
MySQL内置函数涵盖日期、字符串、数学及实用函数,可实现日期时间获取与计算、字符串拼接截取替换、数值取整随机数进制转换等功能,同时支持用户查询、数据库显示、MD5加密及空值判断,简化SQL语句,提升数据处理效率。

开始之前,先明确一下这篇教程的核心内容:

  • 深入理解 MySQL 内置函数的功能与用途,掌握其实际调用方法。
  • 熟练运用常用字符串函数、数值函数、日期函数,实现对数据的快速处理与转换。
  • 掌握聚合函数的使用技巧,完成数据统计与分析任务。
  • 学会条件判断函数,在 SQL 中实现灵活的逻辑判断与分支处理。
  • 最终能够在真实查询场景中灵活组合这些函数,大幅提升数据查询与处理效率。

一.函数

1.日期函数

1.1.介绍与简单使用

函数名称描述
current_date()获取当前系统日期
current_time()获取当前系统时间
current_timestamp()获取当前时间戳(日期+时间)
date(datetime)返回 datetime 参数中的日期部分
date_add(date, interval d_value_type)在指定日期上增加一段时间,interval 后的单位可选:year、month、day、hour、minute、second
date_sub(date, interval d_value_type)在指定日期上减去一段时间,interval 后的单位可选:year、month、day、hour、minute、second
datediff(date1, date2)计算两个日期相差的天数
now()获取当前日期和时间

使用案例:

先看几个基础用法——获取当前日期:

select current_date();

MySQL数据库原理与实践之内置函数详解

获取当前时间(仅显示时分秒):

select current_time();

MySQL数据库原理与实践之内置函数详解

获取时间戳,即完整的日期时间信息:

select current_timestamp();

MySQL数据库原理与实践之内置函数详解

select now();

MySQL数据库原理与实践之内置函数详解

注意:current_timestamp() 和 now() 返回结果几乎相同,区别在于前者是 SQL 标准函数,后者是 MySQL 中更常用、更简洁的写法。

在日期基础上增加一段时间:

select date_add('2017-10-28', interval 10 day);select date_add('2017-10-28', interval 10 year);select date_add('2017-10-28', interval 10 month);

MySQL数据库原理与实践之内置函数详解

减去时间也是同样的操作方式:

select date_sub('2027-10-1', interval 2 day);select date_sub('2027-10-1', interval 2 month);select date_sub('2027-10-1', interval 2 year);

MySQL数据库原理与实践之内置函数详解

计算两个日期之间相差的具体天数:

select datediff('2027-10-10', '2066-9-1');

MySQL数据库原理与实践之内置函数详解

1.2.案例演示

创建一个用于记录生日的表:

create table tmp(id int primary key auto_increment,birthday date);
insert into tmp (birthday) values(current_date());

MySQL数据库原理与实践之内置函数详解

再创建一个留言板表:

create table msg(id int primary key auto_increment,content varchar(30) not null,sendtime datetime);
insert into msg(content,sendtime) values('hello1', now());insert into msg(content,sendtime) values('少偶好甜', now());

MySQL数据库原理与实践之内置函数详解

如果只想显示留言的日期,不显示具体时间,可以使用 date() 提取日期部分:

select content,date(sendtime) from msg;

MySQL数据库原理与实践之内置函数详解

再比如,查询在2分钟内发布的帖子,具体思路如下:

MySQL数据库原理与实践之内置函数详解

insert into msg(content,sendtime) values('少偶99', now());select * from msg where date_add(sendtime, interval 2 minute) > now();

MySQL数据库原理与实践之内置函数详解

2.字符串函数

2.1.介绍

函数名称描述
charset(str)返回字符串的字符集名称
concat(string1 [, string2, ...])连接多个字符串为一个整体
instr(string, substring)返回 substring 在 string 中首次出现的位置,未找到时返回 0
ucase(string)将字符串转换为全大写
lcase(string)将字符串转换为全小写
left(string, length)从字符串左侧截取指定长度的字符
length(string)返回字符串的长度(以字节为单位)
replace(str, search_str, replace_str)将字符串 str 中的 search_str 替换为 replace_str
strcmp(string1, string2)逐字符比较两个字符串大小
substring(str, position [, length])从 str 的指定位置开始截取指定长度的字符(省略 length 时截取到末尾)
ltrim(string)去除字符串左侧的空格
rtrim(string)去除字符串右侧的空格
trim(string)去除字符串两端的空格

2.2.使用实例

注意:下面用到的表是之前已经创建好的。

获取 emp 表中 ename 列的字符集:

select charset(ename) from emp;

MySQL数据库原理与实践之内置函数详解

要求显示 exam_result 表中的信息,格式为“XXX的语文是XX分,数学XX分,英语XX分”:

select concat(name, '的语文是',chinese,'分,数学是',math,'分') as '分数' from exam_result;

MySQL数据库原理与实践之内置函数详解

求学生姓名占用的字节数(注意:length 返回的是字节数,多字节字符如中文会占用多个字节):

select length(name), name from exam_result;

MySQL数据库原理与实践之内置函数详解

举个例子,字母和数字各占一个字节,而中文则根据字符集编码可能占用多个字节:

MySQL数据库原理与实践之内置函数详解

将 emp 表中所有名字里的 'S' 替换成 '上海':

select replace(ename, 's', '上海') ,ename from emp;

MySQL数据库原理与实践之内置函数详解

字符串大小写转换:

select ucase('ASDddf');select ucase('aaaddf');select lcase('ASDFGH');select lcase('ASsdgsGH');

MySQL数据库原理与实践之内置函数详解

截取 emp 表中 ename 字段的第二个到第三个字符:

select substring(ename, 2, 2), ename from emp;

MySQL数据库原理与实践之内置函数详解

以首字母小写的方式显示所有员工姓名:

MySQL数据库原理与实践之内置函数详解

去除字符串空格:

select ltrim('  sdssf');select rtrim('sdssf   ');select rtrim('    sdssf   ');

MySQL数据库原理与实践之内置函数详解

逐字符比较两个字符串的大小:

 select strcmp('fgdsf','dsdsd');

MySQL数据库原理与实践之内置函数详解

3.数学函数

1.介绍

函数名称描述
abs(number)返回数值的绝对值
bin(decimal_number)将十进制数转换为二进制字符串
hex(decimal_number)将十进制数转换为十六进制字符串
conv(number, from_base, to_base)在不同进制之间进行转换
ceiling(number)向上取整(返回不小于该数的最小整数)
floor(number)向下取整(返回不大于该数的最大整数)
format(number, decimal_places)格式化数字,保留指定小数位数(四舍五入)
rand()返回 [0.0, 1.0) 范围内的随机浮点数
mod(number, denominator)取模运算,返回余数

2.使用案例

绝对值:

select abs(-1);select abs(-100);

MySQL数据库原理与实践之内置函数详解

进制转换:

select bin(10);select bin(100);

MySQL数据库原理与实践之内置函数详解

select hex(16);select hex(160);

MySQL数据库原理与实践之内置函数详解

select conv(10,10,2);            //10进制到二进制的转换select conv(10,10,3);            //10进制到三进制的转换select conv(10,10,16);          //10进制到十六进制的转换

MySQL数据库原理与实践之内置函数详解

取整:

select ceiling(23.04);select floor(23.04);

MySQL数据库原理与实践之内置函数详解

保留指定小数位数(四舍五入):

select format(12.3456, 2);select format(3.1415926, 2);select format(3.1415926, 10);

MySQL数据库原理与实践之内置函数详解

生成随机数:

 select rand(); select rand();

MySQL数据库原理与实践之内置函数详解

想要范围更大,直接乘以对应倍数即可:

select rand()*1000;

MySQL数据库原理与实践之内置函数详解

取模(求余数):

select mod(10,2);select mod(10,3);select mod(100,5.6);

MySQL数据库原理与实践之内置函数详解

4.其它函数

查询当前登录用户:

select user();

MySQL数据库原理与实践之内置函数详解

MD5 摘要,对一个字符串进行 MD5 加密,得到 32 位十六进制字符串:

select md5('admin');

MySQL数据库原理与实践之内置函数详解

显示当前正在使用的数据库名称:

 select database();

MySQL数据库原理与实践之内置函数详解

MySQL 的 password() 函数用于对用户密码进行加密处理:

 select password('root');

MySQL数据库原理与实践之内置函数详解

ifnull(val1, val2):如果 val1 为 null,则返回 val2,否则返回 val1:

select ifnull('abc', '123');select ifnull(null, '123');

MySQL数据库原理与实践之内置函数详解

总结:本文系统介绍了 MySQL 中常用的内置函数,涵盖日期函数、字符串函数、数学函数以及其他实用函数。日期函数用于获取和处理日期时间数据,能方便地进行时间计算与日期格式化;字符串函数支持拼接、截取、替换、大小写转换等操作;数学函数提供绝对值、取整、随机数、进制转换等常见运算;此外还学习了 user()、database()、md5()、ifnull() 等实用工具。熟练掌握这些内置函数,不仅可以简化 SQL 编写、提升开发效率,还能减少应用层代码的负担,使数据处理更加灵活高效,为后续学习高级查询、视图、存储过程等知识打下坚实基础。

来源:https://www.jb51.net/database/368541540.htm
上一篇Navicat连接MySQL中文乱码完整解决方案 下一篇SQL中PARTITION BY用法详解与总结
本站内容用于信息整理与展示,如有侵权或内容问题请及时联系处理。

相关推荐

补充同频道和同主题内容,方便继续浏览更多相关内容。

同类最新

继续查看同栏目最近更新的文章。

更多
Redis是什么:核心特性、架构与应用场景解析
数据库 · 2026-09-01

Redis是什么:核心特性、架构与应用场景解析

Redis是一款基于内存的键值型NoSQL数据库,以超高读写速度和丰富的数据结构著称。本文系统梳理Redis的核心特性、架构组成、性能优势及典型应用场景,并通过与Memcached、MySQL、MongoDB的对比,帮助开发者快速判断Redis是否适合当前业务需求。

Windows 安装 MongoDB 完整图文教程
数据库 · 2026-09-01

Windows 安装 MongoDB 完整图文教程

本文详细介绍在 Windows 系统上安装 MongoDB 的完整流程。从官网下载 MSI 安装包开始,逐步演示自定义安装路径、配置 Windows 服务、跳过 MongoDB Compass 等关键选项,并提供通过系统服务列表验证安装是否成功的方法,帮助开发者快速搭建本地 MongoDB 环境。

Linux 安装 MongoDB 完整指南:依赖配置、环境变量与服务启动
数据库 · 2026-09-01

Linux 安装 MongoDB 完整指南:依赖配置、环境变量与服务启动

本文详解在 Linux 系统下安装 MongoDB 的完整流程,涵盖依赖包安装、二进制包下载解压、环境变量配置、数据与日志目录创建及服务启动验证。通过标准化命令与路径说明,帮助开发者快速完成部署并确认服务状态。

MacOS安装MongoDB完整教程
数据库 · 2026-09-01

MacOS安装MongoDB完整教程

本文介绍在MacOS系统下安装MongoDB的完整流程,涵盖下载、解压、目录配置、环境变量设置及服务启动。通过明确的命令与参数说明,帮助开发者快速完成环境搭建并验证安装结果。

Ubuntu系统安装与配置Redis完整指南
数据库 · 2026-09-01

Ubuntu系统安装与配置Redis完整指南

本文详解在Ubuntu系统中安装Redis的两种主流方式:apt在线安装与源码编译安装。涵盖版本选择逻辑、服务启停与状态检查、连接验证方法,以及在线练习工具与桌面GUI客户端的对比与使用建议,帮助开发者快速搭建并验证Redis运行环境。