Loading [MathJax]/jax/output/CommonHTML/config.js
前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >专栏 >【MySQL基础篇】七、内置函数

【MySQL基础篇】七、内置函数

作者头像
利刃大大
发布于 2025-05-21 03:53:03
发布于 2025-05-21 03:53:03
6700
代码可运行
举报
文章被收录于专栏:csdn文章搬运csdn文章搬运
运行总次数:0
代码可运行

Ⅰ. 日期函数

​ 上面的操作比较简单,这里就不演示了!

案例一

​ 首先创建一张表,记录生日:

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
create table tmp(
    id int primary key auto_increment,
    birthday date
);

​ 然后添加当前日期:

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
mysql> insert into tmp (birthday) values(current_date());
Query OK, 1 row affected (0.01 sec)

mysql> select * from tmp;
+----+------------+
| id | birthday   |
+----+------------+
|  1 | 2023-08-01 |
|  2 | 2023-08-01 |
+----+------------+
2 rows in set (0.00 sec)
案例二

​ 我们这里创建一张用来记录留言的表:

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
create table msg (
    id int primary key auto_increment,
    content varchar(30) not null,
    sendtime datetime
);

​ 然后插入数据:

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
mysql> insert into msg(content, sendtime) values('hello', now());
Query OK, 1 row affected (0.00 sec)

mysql> insert into msg(content, sendtime) values('bye~', current_timestamp());
Query OK, 1 row affected (0.00 sec)

mysql> select * from msg;
+----+---------+---------------------+
| id | content | sendtime            |
+----+---------+---------------------+
|  1 | hello   | 2023-08-01 15:13:04 |
|  2 | bye~    | 2023-08-01 15:13:28 |
+----+---------+---------------------+
2 rows in set (0.00 sec)

​ 而当我们想要查找特定时间比如五分钟内发布的留言,可以按如下操作使用 date_add() 函数或者 date_sub() 函数都行:

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
mysql> select content, sendtime from msg where date_add(sendtime, interval 5 minute) > now();
+---------+---------------------+
| content | sendtime            |
+---------+---------------------+
| hello   | 2023-08-01 15:13:04 |
| bye~    | 2023-08-01 15:13:28 |
+---------+---------------------+
2 rows in set (0.00 sec)

Ⅱ. 字符串函数

常见字符串函数

​ 下面结合案例来学习这几个函数!并且下面使用的案例表是在表的增删查改那个笔记中设定的。

使用案例

1、显示对应的字符集 – charset
代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
mysql> select charset('s');
+--------------+
| charset('s') |
+--------------+
| utf8         |
+--------------+
1 row in set (0.00 sec)

mysql> select charset('中国');
+-------------------+
| charset('中国')   |
+-------------------+
| utf8              |
+-------------------+
1 row in set (0.00 sec)

mysql> select charset(ename) from emp;
+----------------+
| charset(ename) |
+----------------+
| utf8           |
| utf8           |
| utf8           |
| utf8           |
| utf8           |
+----------------+
14 rows in set (0.00 sec)
2、要求显示 exam_result 表中的信息,显示格式:“XXX 的语文是 XXX 分,数学 XXX 分,英语 XXX 分” – concat
代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
mysql> select concat(name,'的语文是',chinese,'分,数学是',math,'分,英语是',english,'分') 分数 from exam_result;
+--------------------------------------------------------------+
| 分数                                                         |
+--------------------------------------------------------------+
| 唐三藏的语文是67分,数学是98分,英语是56|
| 孙悟空的语文是87分,数学是78分,英语是77|
| 猪悟能的语文是88分,数学是98分,英语是90|
| 曹孟德的语文是82分,数学是84分,英语是67|
| 刘玄德的语文是55分,数学是85分,英语是45|
| 孙权的语文是70分,数学是73分,英语是78|
| 宋公明的语文是75分,数学是65分,英语是30|
+--------------------------------------------------------------+
7 rows in set (0.00 sec)
3、求学生表中学生姓名占用的字节数 – length
代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
mysql> select name,length(name) from exam_result;
+-----------+--------------+
| name      | length(name) |
+-----------+--------------+
| 唐三藏    |            9 |
| 孙悟空    |            9 |
| 猪悟能    |            9 |
| 曹孟德    |            9 |
| 刘玄德    |            9 |
| 孙权      |            6 |
| 宋公明    |            9 |
+-----------+--------------+
7 rows in set (0.00 sec)

​ 注意:length() 函数返回字符串长度,以字节为单位。如果是多字节字符则计算多个字节数;如果是单字节字符则算作一个字节。比如:字母,数字算作一个字节,中文表示多个字节数。(这与字符集编码有关)

4、将 emp 表中所有名字中有 S 的替换成 ‘上海’ – replace
代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
mysql> select ename, replace(ename, 'S', '上海') from emp;
+--------+-------------------------------+
| ename  | replace(ename, 'S', '上海')   |
+--------+-------------------------------+
| SMITH  | 上海MITH                      |
| ALLEN  | ALLEN                         |
| WARD   | WARD                          |
| JONES  | JONE上海                      |
| MARTIN | MARTIN                        |
| BLAKE  | BLAKE                         |
| CLARK  | CLARK                         |
| SCOTT  | 上海COTT                      |
| KING   | KING                          |
| TURNER | TURNER                        |
| ADAMS  | ADAM上海                      |
| JAMES  | JAME上海                      |
| FORD   | FORD                          |
| MILLER | MILLER                        |
+--------+-------------------------------+
14 rows in set (0.00 sec)
5、截取 emp 表中 ename 字段的第二个到第三个字符 – substring
代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
mysql> select ename, substring(ename, 2, 2) from emp;
+--------+------------------------+
| ename  | substring(ename, 2, 2) |
+--------+------------------------+
| SMITH  | MI                     |
| ALLEN  | LL                     |
| WARD   | AR                     |
| JONES  | ON                     |
| MARTIN | AR                     |
| BLAKE  | LA                     |
| CLARK  | LA                     |
| SCOTT  | CO                     |
| KING   | IN                     |
| TURNER | UR                     |
| ADAMS  | DA                     |
| JAMES  | AM                     |
| FORD   | OR                     |
| MILLER | IL                     |
+--------+------------------------+
14 rows in set (0.00 sec)
6、以首字母小写的方式显示所有员工的姓名 – lcase

​ 这里的要求是首字母小写而已,所以我们想要做一下截取和拼接,也就是配合前面的 concat()substring()

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
mysql> select ename, concat(lcase(substring(ename, 1, 1)), substring(ename, 2)) from emp;
+--------+------------------------------------------------------------+
| ename  | concat(lcase(substring(ename, 1, 1)), substring(ename, 2)) |
+--------+------------------------------------------------------------+
| SMITH  | sMITH                                                      |
| ALLEN  | aLLEN                                                      |
| WARD   | wARD                                                       |
| JONES  | jONES                                                      |
| MARTIN | mARTIN                                                     |
| BLAKE  | bLAKE                                                      |
| CLARK  | cLARK                                                      |
| SCOTT  | sCOTT                                                      |
| KING   | kING                                                       |
| TURNER | tURNER                                                     |
| ADAMS  | aDAMS                                                      |
| JAMES  | jAMES                                                      |
| FORD   | fORD                                                       |
| MILLER | mILLER                                                     |
+--------+------------------------------------------------------------+
14 rows in set (0.00 sec)

Ⅲ. 数学函数

​ 这里只要举 conv()mod() 函数的使用例子:

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
-- 转化进制函数
mysql> select conv(10, 10, 16);
+------------------+
| conv(10, 10, 16) |
+------------------+
| A                |
+------------------+
1 row in set (0.00 sec)

mysql> select conv(10, 10, 2);
+-----------------+
| conv(10, 10, 2) |
+-----------------+
| 1010            |
+-----------------+
1 row in set (0.00 sec)


-- 求余数函数
mysql> select mod(10, 2);
+------------+
| mod(10, 2) |
+------------+
|          0 |
+------------+
1 row in set (0.00 sec)

mysql> select mod(10, 3);
+------------+
| mod(10, 3) |
+------------+
|          1 |
+------------+
1 row in set (0.00 sec)

Ⅳ. 其它常见函数

1、user()

​ 用于查询当前的用户:

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
mysql> select user();
+--------+
| user() |
+--------+
| root@  |
+--------+
1 row in set (0.00 sec)
2、md5(str)

​ 这个函数是一个常见的哈希函数,用于将输入字符串转换为 128 位的哈希值,也就是对一个字符串进行 md5 摘要,摘要后得到一个 32 位字符串,这是一种加密方式!相同的字符串,其 md5 编码是一样的

MD5 算法是单向的,不可逆的,这意味着 无法通过哈希值还原原始字符串。在 mysql 中,MD5() 函数可以用于加密字符串,但它 不是专门用于密码加密的函数

​ 需要注意的是,使用 MD5() 函数加密密码并不是一种安全的做法,因为 MD5 算法已经被证明存在一些弱点,容易受到暴力破解和彩虹表攻击。为了更好地保护密码,推荐使用更安全的哈希算法,如 SHA-256,并结合使用盐值来增加密码的复杂性和安全性。

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
mysql> select md5('liren');
+----------------------------------+
| md5('liren')                     |
+----------------------------------+
| c9ad4aedb509ccd1d92931ef904c88b4 |
+----------------------------------+
1 row in set (0.00 sec)

mysql> select md5('liren');
+----------------------------------+
| md5('liren')                     |
+----------------------------------+
| c9ad4aedb509ccd1d92931ef904c88b4 |
+----------------------------------+
1 row in set (0.00 sec)

mysql> select md5('中国');
+----------------------------------+
| md5('中国')                      |
+----------------------------------+
| c13dceabcb143acd6c9298265d618a9f |
+----------------------------------+
1 row in set (0.00 sec)
3、database()

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

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
mysql> select database();
+------------+
| database() |
+------------+
| scott      |
+------------+
1 row in set (0.00 sec)
4、password()

mysql 数据库通常使用该函数对用户加密,只有相同的字符串,它们加密后的编码才是一样的!

​ 它使用了一个特定的算法,称为 mysql加密算法该算法是不可逆的,这意味着无法通过解密函数来还原原始密码。PASSWORD() 函数在 MySQL 4.1 版本之前是默认的密码加密函数,但在之后的版本中被弃用,不再是默认的加密方式。

password() 函数是 mysql 特有的密码加密函数,而 MD5() 函数是一个常见的哈希函数,可以用于加密字符串,但不推荐用于密码加密。

​ 此外还有一个细节,我们使用了 password 字眼的时候,在 mysql 中再使用上方向键回滚的时候会发现找不到刚才的带有 password 字眼的语句,说明 mysql 其实对我们输入的指令做了一些优化,涉及到例如 password 等敏感字眼,那么我们在回滚的时候是看不到该语句的

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
mysql> select password('liren');
+-------------------------------------------+
| password('liren')                         |
+-------------------------------------------+
| *A56DBAEC100FD8FCBB73DF6C44002D472C047746 |
+-------------------------------------------+
1 row in set, 1 warning (0.00 sec)

mysql> select password('liren');
+-------------------------------------------+
| password('liren')                         |
+-------------------------------------------+
| *A56DBAEC100FD8FCBB73DF6C44002D472C047746 |
+-------------------------------------------+
1 row in set, 1 warning (0.00 sec)
5、ifnull(val1, val2)

​ 如果 val1null,则返回 val2,否则返回 val1 的值:

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
mysql> select ifnull(1, 2);
+--------------+
| ifnull(1, 2) |
+--------------+
|            1 |
+--------------+
1 row in set (0.00 sec)

mysql> select ifnull(null, 2);
+-----------------+
| ifnull(null, 2) |
+-----------------+
|               2 |
+-----------------+
1 row in set (0.00 sec)

实战OJ

本文参与 腾讯云自媒体同步曝光计划,分享自作者个人站点/博客。
原始发表:2025-01-05,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 作者个人站点/博客 前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
暂无评论
推荐阅读
编辑精选文章
换一批
【愚公系列】2022年09月 微信小程序-webview内嵌网页的授权认证
随着微信小程序的广泛应用,小程序的用户越来越多,但受其小程序体积限制的影响,不能够完全满足用户的要求,应运而生的web-view组件很好的解决的这一问题。
愚公搬代码
2022/09/28
9200
【愚公系列】2022年09月 微信小程序-webview内嵌网页的授权认证
小程序webview组件,小程序内联h5页面,webview实现微信支付
先说下实现原理吧,实现原理就是我们在webview的h5页面里实现下单功能,然后点击支付按钮,我们点击支付按钮的时候会跳转到小程序页面,把订单号,订单总金额,传递到小程序里,然后小程序里使用订单号和订单金额去调起微信支付,实现付款,付款成功或者失败时都会有回调。我们再把对应的回调传递给webview,刷新webview里的订单和支付状态。
编程小石头
2019/08/15
4.9K1
小程序webview组件,小程序内联h5页面,webview实现微信支付
『uni-app』web-view 大量数据通信
该组件是一个浏览器组件,可以承载网页的内容。而且该组件是全屏的,会覆盖该组件之外的其他内容。
德育处主任
2022/09/23
1.3K0
『uni-app』web-view 大量数据通信
小程序之首页搭建——Flex布局
布局的传统解决方案,基于盒状模型,依赖 display属性 + position属性 + float属性
用户10196776
2023/10/17
5270
小程序之首页搭建——Flex布局
【uniapp】H5向uniapp通信存储数据——H5如何传递数据到uniapp方法的解决方案
最近在做H5号码认证无感登录,发现市场上的H5登录文档不健全,没有适合uniapp的,综合对比了多家,找了一家个推的接入,由于SDK、demo都是H5,精力有限,于是打算通过H5完成认证,通过回调数据发送给Uniapp进行验证
德宏大魔王
2024/05/25
4790
【uniapp】H5向uniapp通信存储数据——H5如何传递数据到uniapp方法的解决方案
关于 uni-app 使用 web-view 页面之间互相跳转、通信等问题的解决方案
最近开发小程序的时候、需要嵌入一个第三方网站、并且和第三方网站有些交互。这个第三方页面本身就是一个 HTML 页面、想着把它给嵌入到 uni-app 中,结果没实现......(很多的 js 代码在小程序中不识别)。
hedeqiang
2019/12/17
13K0
微信小程序WebView与H5 通信方式
leader755
2024/01/25
2.4K0
微信小程序webview保存图片
在小程序的 webview 里保存图片. 因为微信的 js-sdk 没有提供 saveImageToPhotosAlbum 方法
chuchur
2022/10/25
3.6K0
基于微信小程序云开发(校园许愿墙app)妄想替代学校的表白墙
随着移动端的不断发展,人们大部分的办公及生活应用都开始趋向于移动端。然而在2017年“微信之父”张小龙带领团队,开发了一款叫做微信小程序的东西,它的出现打破了人们认识移动端的隔膜,由以前的需要先下载app然后在开始工作的老式模式,逐渐的趋向于小程序app(无需下载)的形式。
淼学派对
2022/11/20
1.7K0
基于微信小程序云开发(校园许愿墙app)妄想替代学校的表白墙
『UniApp』核心语法
下载地址:https://www.dcloud.io/hbuilderx.html
程序员NEO
2023/12/26
5922
『UniApp』核心语法
小程序打开h5页面,并实现H5与小程序的通信
web-view组件是承载网页的容器。会自动铺满整个小程序页面,个人类型的小程序暂不支持使用。
拿我格子衫来
2022/01/24
2.9K0
【小程序项目开发-- 京东商城】uni-app之商品列表页面 (上)
🤵‍♂️ 个人主页: @计算机魔术师 👨‍💻 作者简介:CSDN内容合伙人,全栈领域优质创作者。 🌐 推荐一款找工作神器网站: 宝藏网站 |笔试题库|面试经验|实习招聘内推| 该文章收录专栏 ✨ 2022微信小程序京东商城实战 ✨ 文章目录 一、前言介绍 二、创建goodlist 分支(选读*) 三、商品列表搜索数据请求 四、调取接口获取列表数据 五、渲染商品列表页面 六、将商品item组件封装为自定义组件 七、使用过滤器处理商品价格 一、前言介绍 主要是有三种方式进入到商品页面 商
计算机魔术师
2022/08/23
8110
【小程序项目开发-- 京东商城】uni-app之商品列表页面 (上)
『教程』微信小程序webview的使用
小程序 微信小程序是一种全新的连接用户与服务的方式,它可以在微信内被便捷地获取和传播,同时具有出色的使用体验。同时提供一系列工具帮助开发者快速接入并完成小程序开发。 关于如何注册配置就不多言了,本文主要还是体验了下web-view的功能。 web-view详解 有了这个组件之后,小程序可以很好的嵌入一些页面,可以环境小程序size告急的问题,同样也使开发更加便捷,毕竟小程序开发者基本都对前端开发较为了解。 web-view能力 说再多还是需要去看官方文档,web-view文档, 兼容 首先就需要注意:兼
极乐君
2018/02/05
5.3K0
uniapp在web-view加载的本地及远程HTML中调用uni的API及网页和vue页面通讯
uni-app的web-view组件,支持加载远程网页,在app环境下,还支持加载本地HTML页面。
高久峰
2023/12/17
3.8K0
微信小程序(逻辑层的全部知识点)保姆级讲解
小程序开发框架的逻辑层使用 JavaScript 引擎为小程序提供开发者 JavaScript 代码的运行环境以及微信小程序的特有功能。
淼学派对
2022/11/20
1.4K0
微信小程序(逻辑层的全部知识点)保姆级讲解
微信小程序和web之间的交互
通常我们写了一套自适应的 web 程序,想在多种环境中使用.比如 app 里,微信小程序里,各种 app 分享中, 假如只是能使用 app 浏览,问题不大,但是要在被嵌入 app 里面和 app 本身交互,就要做各种折腾, 如是就有了本文.
chuchur
2022/10/25
1.4K0
微信小程序实现各种特效实例
写在前面 最近在负责一个微信小程序的前端以及前后端接口的对接的项目,整体上所有页面的布局我都已经搭建完成,里面有一些常用的特效,总结一下,希望对大家和我都能有所帮助 实例1:滚动tab选项卡 先看一下
okaychen
2018/01/05
4.2K3
微信小程序实现各种特效实例
小程序搜索弹出搜索内容功能(模糊查询)
功能:在搜索界面,搜索输入的字符,如果有匹配,就会显示出来。 wxml <view class="page"> <view class="page__bd"> <view class="w
王小婷
2019/02/21
6.6K0
小程序搜索弹出搜索内容功能(模糊查询)
基于微信小程序云开(统计学生信息并导出excel)4.0版(稳定版)
一、微信小程序是什么? 微信小程序是一种不需要下载安装即可使用的应用,它实现了应用的随开随用,用户只需要用微信扫一扫或者通过微信搜一下即可打开应用,使用完即可关闭,还可以把小程序添加到桌面,真正的做到了便捷方便,用完就走。
淼学派对
2022/11/20
6890
基于微信小程序云开(统计学生信息并导出excel)4.0版(稳定版)
微信小程序中 web-view 组件渲染外部 h5页面如何使用?
客户端 6.7.2 版本开始,navigationStyle: custom 对 web-view 组件无效
跟着飞哥学编程
2022/12/02
2.2K0
推荐阅读
相关推荐
【愚公系列】2022年09月 微信小程序-webview内嵌网页的授权认证
更多 >
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档
本文部分代码块支持一键运行,欢迎体验
本文部分代码块支持一键运行,欢迎体验