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

07-MySQL内置函数

💬 :如果你在阅读过程中有任何疑问或想要进一步探讨的内容,欢迎在评论区畅所欲言!我们一起学习、共同成长~!

👍 :如果你觉得这篇文章还不错,不妨顺手点个赞、加入收藏,并分享给更多的朋友噢~!


1. 日期函数(笔试高频:时间筛选/计算)

1.1 常用日期函数

函数名称核心描述
current_date()返回当前日期(格式:YYYY-MM-DD)
current_time()返回当前时间(格式:HH:MM:SS)
current_timestamp()返回当前时间戳(格式:YYYY-MM-DD HH:MM:SS)
now()返回当前日期时间(与 current_timestamp () 等效,笔试更常用 now ()
date(datetime)提取 datetime 参数的 “日期部分”(去除时间)
date_add ('date', interval 值 单位)给日期 / 时间加指定值(单位:year/minute/second/day,笔试常考 day/minute
date_sub ('date', interval 值 单位)给日期 / 时间减指定值(单位同 date_add)
datediff('date1', 'date2')计算两个日期的差值(单位:天),结果 = date1 - date2

1.1.1 必掌握案例代码

(1)基础时间获取
  • 依次获取当前日期、当前时间、当前时间戳

(2)日期增减操作
  • 计算10天后的日期

  • 计算2天前的日期

(3)日期差计算

-- 1. 计算两个日期相差的天数(比如:用户注册到现在的天数)
select datediff('2017-10-10', '2016-09-01'); 
-- 结果:404(2017-10-10 减 2016-09-01 的天数)-- 2. 业务场景:查询“2分钟内发布的留言”(笔试高频题)
-- 思路:给留言时间加2分钟,若仍大于当前时间,说明在2分钟内
create table msg (id int primary key auto_increment,content varchar(30) not null,sendtime datetime  -- 留言发布时间
);
-- 插入测试数据
insert into msg(content, sendtime) values('hello1', now()), ('hello2', now());
-- 核心查询:2分钟内的留言
select * from msg where date_add(sendtime, interval 2 minute) > now();
(4)业务场景:查询“2分钟内发布的留言”
create table msg(id int primary key auto_increment,content varchar(30) not null,sendtime datetime);insert into msg(content,sendtime) values('hello',now()),('baby',now());select * from msg;select * from msg where date_add(sendtime,interval 2 minute)>now();
-- 给每条留言的sendtime加2分钟,若结果 > 当前时间,说明发布时间 < 2分钟


2. 字符串函数(面试重点:数据格式化 / 处理)

2.1 常用字符串函数

函数名称核心描述
concat(str1, str2, ...)连接多个字符串(笔试高频:格式化输出,如 “XXX 的分数是 XXX”)
length(str)计算字符串长度(单位:字节,注意:中文占多字节,与字符集相关)
replace (str, 旧字符,新字符)替换字符串中的指定字符
substring (str, 起始位置,长度)截取字符串(起始位置从 1 开始,笔试常考 “截取第 N 到第 M 个字符”)
lcase(str)/ucase(str)转换字符串为小写 / 大写
trim(str)/ltrim(str)/rtrim(str)去除字符串两端空格 / 左空格 / 右空格(数据清洗常用)
instr (str, 子串)查找子串在字符串中的位置(无则返回 0,类似 C++ 的 find ())

2.1.1 必掌握案例代码

(1)字符串连接与格式化(高频:业务数据展示)

场景:展示学生分数,格式为“XXX语文XXX分,数学XXX分”

(2)求字符串长度(字符集与字节认知)

(面试常考 “中文长度计算”)

计算表中 name 与 info 字段的字节长度:

utf8 / utf8mb4 编码下的字节规则:

  • 中文——1个字符占3个字节;
  • 英文/数字/符号——1个字符占1个字节。

(3)字符替代(数据清洗)

将表中 info 字段的 Stu 替换为 Student :

(4)字符串截取
  • substring() 起始位置从1开始。

截取 info 字段第1~第12个字符,以及第5位起的10个字符:

(5)大小写转换


3. 数学函数(基础考点:数值计算)

3.1 常用数学函数

函数名称核心描述
abs (数值)计算绝对值
ceiling (数值)向上取整(如 ceiling (23.04) → 24,ceiling (23.9) → 24)
floor (数值)向下取整(如 floor (23.7) → 23,floor (23.1) → 23)
format (数值,小数位数)格式化数值(保留指定小数位,四舍五入,如 format (12.3456, 2) → 12.35)
rand()生成随机浮点数(范围 [0.0, 1.0),笔试常考 “生成随机数”)
mod (数值,除数)取模(求余,如 mod (10, 3) → 1,与 C++ 的 % 运算符一致)

3.1.1 必掌握案例代码

-- 1. 绝对值
select abs(-100.2);  -- 结果:100.2-- 2. 取整
select ceiling(23.04);  -- 结果:24(向上取整)
select floor(23.7);     -- 结果:23(向下取整)-- 3. 数值格式化(保留2位小数,四舍五入)
select format(12.3456, 2);  -- 结果:12.35-- 4. 生成随机数(如:生成1-100的随机整数)
select floor(rand() * 100 + 1);  
-- 思路:rand()→[0,1) → ×100→[0,100) → +1→[1,101) → 向下取整→1-100


4. 其它实用函数

4.1 常用工具函数

函数名称核心描述
user()查询当前登录 MySQL 的用户(如:root@localhost)
database()查询当前正在使用的数据库(避免 “use 数据库” 后遗忘的场景)
md5(str)
  1. 对字符串进行 MD5 加密,返回 32 位字符串,常用于密码存储与验证,面试高频
  2. 特性:(1)单向不可逆——只能对字符串进行 “加密”,无法从加密后的结果反向解密出原字符串;
    (2)输入相同则输出固定——相同的原字符串,每次用 MD5 加密结果都完全一致
ifnull(val1, val2)处理 null 值:若 val1 为 null 则返回 val2,否则返回 val1(避免 null 影响计算)

4.1.1 必掌握案例代码

(1)查询当前用户与数据库
select user();         -- 结果示例:root@localhost
select database();     -- 结果示例:test3(当前使用的数据库)

(2)md5 加密
select md5('admin');   -- 结果:21232f297a57a5a743894a0e4a801fc3(固定32位)

场景 1:创建用户表,存储 MD5 加密后的密码

create table user(username varchar(20) primary key,  password varchar(32) not null      
);-- 密码'123456'先加密再存储
insert into user values('zhangsan', md5('123456'));

场景 2:用户登录时,验证密码

-- 假设用户输入:用户名'zhangsan',密码'123456'
-- 验证逻辑:将输入的密码md5加密后,与表中password字段对比
select * from user 
where username = 'zhangsan' and password = md5('123456');  
-- 若查询出结果,说明密码正确;无结果则密码错误

(3)处理null值
select ifnull('abc', '123');  -- val1='abc'非null,返回'abc'
select ifnull(null, '123');   -- val1=null,返回'123'
-- 场景:计算学生平均分,若某科分数为null,按0计算
select name, (chinese + ifnull(math, 0))/2 as 平均分 from student;

5. 实战 OJ 题(笔试场景:字符串统计)

查找字符串 '10,A,B' 中逗号出现的次数笔试常见小题,需掌握“替换 + 长度差”的核心思路,可直接套用在类似题目(如 “统计空格次数”“统计指定字符次数”)中。

5.1 解题思路

核心原理:逗号次数 = 原字符串长度 - 去掉所有逗号后的字符串长度

步骤拆解

第一步:计算原字符串的长度(length ());

第二步:将原字符串中的所有逗号替换为空(replace (str, ',', ''));

第三步:计算替换后字符串的长度(length ());

第四步:用原长度减替换后长度,得到逗号次数。

5.2 代码实现

http://www.dtcms.com/a/533534.html

相关文章:

  • H7-TOOL的SWD接口读取固件bin保存,SPI读取外置Flash,I2C读取EEPROM和离线固件读取方法,含1拖4和1拖16
  • SZU大学物理1实验报告|磁特性综合实验
  • 顺德装修网站建设物联网 网站开发
  • 数据主站+副站做的设置
  • 网络哪里能接活做网站淘宝接网站开发的活
  • 关键词免费网站wordpress建设网站的方法
  • 2.数字证书的分类
  • 网站建设市场调研字节跳动员工数量
  • 互联网行业简介手机网站seo教程下载
  • 期现交易员岗位剖析
  • 网站建设方案选公司网站开发网站
  • 取名算命网站的源代码asp+access基本建筑网站
  • h5游戏免费下载:堆木头
  • 封面免费制作网站美业推广平台
  • 建设营销型网站的原因开发手机网站教程
  • 007-Spring AI Alibaba Agent 功能完整案例
  • app定制开发商城长春seo培训
  • Boost.Iostreams 简介
  • S4.2.6.9 LTSSM 之 Disabled 状态
  • Rag优化 - 如何提升首字响应速度
  • 甘肃省建设厅质量投诉网站wordpress 没有注册
  • 怎么建立自己的网站?调用wordpress评论框
  • 外贸建站的公司京东网站注册
  • 用php做网站用到的工具app软件开发课程
  • 做的最好的微电影网站wordpress v电影
  • 整体设计 全面梳理复盘 之8 元数据标准库 + 原始模板设计与程序联动闭环(豆包助手)
  • 国内最大的开源网站wordpress友情联机
  • 中国flash网站模板中心中国网站名
  • SpringBoot的搭建方式
  • 【每天一个知识点】负二项分布(Negative Binomial Distribution, NB分布)