前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >MySQL内置函数

MySQL内置函数

作者头像
每天都要进步呀
发布2023-10-16 11:17:11
1490
发布2023-10-16 11:17:11
举报
文章被收录于专栏:C++/LinuxC++/Linux

一.日期函数

1. 日期函数的介绍及使用

image-20230729145616311
image-20230729145616311
  • current_date()

获得年月日:

image-20230729145710592
image-20230729145710592
  • current_time()

获得时分秒:

image-20230729145756437
image-20230729145756437

将前二者结合:

image-20230729145919680
image-20230729145919680
  • current_timestamp()

获得时间戳:

image-20230729145847795
image-20230729145847795

相同作用的函数还有now():

image-20230729150325747
image-20230729150325747
  • date函数

date(datetime),datetime可以是各种日期,也可以是上述的各类函数,最终得到的是所述内容中的日期部分。

常量

image-20230729150420220
image-20230729150420220

各类函数:

image-20230729150638892
image-20230729150638892
  • date_add(date, interval d_value_type)

在日期的基础上加日期:

interval后面的数值单位可以是:year、month、day。

image-20230729151345553
image-20230729151345553

date也可以是函数的返回值

image-20230729151430988
image-20230729151430988
  • date_add(date, interval d_value_type)

在日期的基础上减日期:

interval后面的数值单位可以是:year、month、day。

image-20230729151610034
image-20230729151610034

date也可以是函数的返回值

image-20230729151647772
image-20230729151647772
  • datediff(date1, date2)

l两个日期的差,即date1-date2,单位是天。

image-20230729152012801
image-20230729152012801

当然,date一样可以是函数的返回值

image-20230729152114239
image-20230729152114239

2. 日期函数样例

案例-1:

  • 创建一张表,记录生日
代码语言:javascript
复制
create table tmp(
id int primary key auto_increment,
birthday date
);
  • 插入数据
代码语言:javascript
复制
insert into tmp(birthday) values(current_date());
insert into tmp(birthday) values(date(current_timestamp()));
image-20230729153029219
image-20230729153029219

案例-2:

  • 创建一个留言表
代码语言:javascript
复制
create table msg (
id int primary key auto_increment,
content varchar(30) not null,
sendtime datetime
);
  • 插入数据
代码语言:javascript
复制
insert into msg(content,sendtime) values('像风一样', now());
insert into msg(content,sendtime) values('致未来的我', now());
  • 显示所有留言信息,发布日期只显示日期,不用显示时间
image-20230729155041919
image-20230729155041919
  • 请查询在2分钟内发布的帖子
image-20230729155308969
image-20230729155308969

有两种方式去查询,即通过date_add()比较,或者通过date_sub比较。但都是一个道理。

代码语言:javascript
复制
select * from msg where date_add(sendtime, interval 2 minute) > now();
image-20230729155625936
image-20230729155625936

或者:

代码语言:javascript
复制
select * from msg where date_sub(now(), interval 2 minute) < sendtime;
image-20230729155736157
image-20230729155736157

二.字符串函数

1. 字符串函数的介绍

image-20230729155814111
image-20230729155814111
  • charset(str)

获取emp表的ename列的字符集

image-20230729163155394
image-20230729163155394
image-20230729163214197
image-20230729163214197
  • concat(string2, […])

连接字符串

image-20230729163404280
image-20230729163404280
  • instr(string,substring)

判断substring是否出现在string中,若找到,则返回匹配的起始位置。找不到则返回0

image-20230729164406324
image-20230729164406324
  • ucase(string)

小写转大写

image-20230729164711619
image-20230729164711619
  • lcase(string)

大写转小写

image-20230729164753493
image-20230729164753493
  • left(string2, length)

从string2的左边起提取length个字符

image-20230729165043975
image-20230729165043975

也有right,即从string2的右边起提取length个字符,就不一一演示了。

  • length(string)

求字符串长度

image-20230729165213303
image-20230729165213303
  • strcmp(string1, string2)

比较string1与string2大小

image-20230729165457439
image-20230729165457439
  • 去除空格

ltrim(string) :去除左空格

rtrim(string): 去除右空格

trim(string):去除字符串的左右空格。

image-20230729174847455
image-20230729174847455

其余的函数就通过下面的具体样例演示:

2. 字符串函数样例

  • 获取emp表的ename列的字符集
image-20230729171630452
image-20230729171630452
  • 要求显示exam_result表中的信息,显示格式:“XXX的语文是XXX分,数学XXX分,英语XXX分”
image-20230729171933059
image-20230729171933059
  • 求学生表中学生姓名占用的字节数
image-20230729172400951
image-20230729172400951

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

  • 将EMP表中所有名字中有S的替换成’上海’
image-20230729173510010
image-20230729173510010

这种改变是在select时的改变,其并不会改变数据库的数据,仅仅是显示时的替换。

  • 截取EMP表中name字段的第二个到第三个字符
image-20230729173735053
image-20230729173735053
  • 以首字母小写的方式显示所有员工的姓名

先显示

image-20230729174357459
image-20230729174357459

再拼接

image-20230729174443109
image-20230729174443109

三.数学函数

image-20230729175434855
image-20230729175434855
  • 绝对值
代码语言:javascript
复制
select abs(-100.2);
image-20230729175650248
image-20230729175650248
  • 十进制转换二进制
代码语言:javascript
复制
select bin(100);
image-20230729175807865
image-20230729175807865
  • 十进制转换十六进制
代码语言:javascript
复制
select hex(100);
image-20230729175856776
image-20230729175856776
  • 任意进制之间转换

例如:将100从10进制转换成2进制

代码语言:javascript
复制
select conv(100, 10, 2);
image-20230729180010267
image-20230729180010267
  • 向上取整
代码语言:javascript
复制
select ceiling(100.5);
image-20230729180138024
image-20230729180138024
  • 向下取整
代码语言:javascript
复制
select floor(23.7);
image-20230729180223127
image-20230729180223127
  • 格式化,保留小数位数

比如将3.1415926保留两位小数:

代码语言:javascript
复制
select format(3.1415926, 2);
image-20230729180439693
image-20230729180439693
  • 产生随机数
代码语言:javascript
复制
select rand();
image-20230729180539103
image-20230729180539103
  • 取模,求余
代码语言:javascript
复制
select mod(10, 3);
image-20230729180742429
image-20230729180742429

ps:关于负数取模,这里不演示。

以上的函数都可以嵌套,即任意一个函数的返回值可以充当另一个函数的参数,如果这个函数存在参数,并且类型满足的话。

四.其他函数

  • user() 查询当前用户
代码语言:javascript
复制
select user();
image-20230729194732055
image-20230729194732055
  • md5(str)对一个字符串进行md5摘要,摘要后得到一个32位字符串
代码语言:javascript
复制
select md5('admin');
image-20230729194901301
image-20230729194901301
image-20230729195120963
image-20230729195120963

产生的子串是等长的,这也就意味着,在select按照密码匹配的时候,就需要根据md5(‘密码’)映射出对应的32位字符,才可以匹配成功。

  • database()显示当前正在使用的数据库
代码语言:javascript
复制
select database();
image-20230729195259459
image-20230729195259459
  • password()函数,MySQL数据库使用该函数对用户加密
代码语言:javascript
复制
select password('123');

相比md5,此函数更普遍受用。

image-20230729195602475
image-20230729195602475
  • ifnull(val1, val2) 如果val1为null,返回val2,否则返回val1的值
image-20230729195809802
image-20230729195809802

扩展:

若数据库执行语句字段包含password字段,则我们在上翻下翻时就查不到历史对应的语句。

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

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

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

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

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • 一.日期函数
    • 1. 日期函数的介绍及使用
      • 2. 日期函数样例
      • 二.字符串函数
        • 1. 字符串函数的介绍
          • 2. 字符串函数样例
          • 三.数学函数
          • 四.其他函数
          相关产品与服务
          云数据库 MySQL
          腾讯云数据库 MySQL(TencentDB for MySQL)为用户提供安全可靠,性能卓越、易于维护的企业级云数据库服务。其具备6大企业级特性,包括企业级定制内核、企业级高可用、企业级高可靠、企业级安全、企业级扩展以及企业级智能运维。通过使用腾讯云数据库 MySQL,可实现分钟级别的数据库部署、弹性扩展以及全自动化的运维管理,不仅经济实惠,而且稳定可靠,易于运维。
          领券
          问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档