【MySQL的内置函数】



一、日期函数

在这里插入图片描述

1.current_date()

这是一个日期函数,表示当前的日期。

在这里插入图片描述

2.current_time()

这是一个时间函数,表示当前时间。
在这里插入图片描述
注意区分两个概念:日期和时间。

一般情况下:日期指的是,年月日。
时间指的是,时分秒。

3.current_timestamp

时间戳。
获取日期和时间,也就是详细到年月日,时分秒。
在这里插入图片描述

4. date_add 穿越未来

在日期的基础上,加上一个日期。
interval:时间间隔。

mysql> select date_add(‘2024-5-11’,interval 100 day);
在这里插入图片描述
还可以获取当前时间,然后添加上year/month/day/hour/minute/second
在这里插入图片描述

5.date_sub 回到过去

在日期的基础上,减去一个日期。
interval:时间间隔。

mysql> select date_sub(‘2024-5-11’,interval 100 day);

在这里插入图片描述
还可以获取当前时间,然后添加上year/month/day/hour/minute/second。
在这里插入图片描述

6.datediff

计算两个日期之间相差多少天。在这里插入图片描述

案例

创建一张表,记录生日
mysql> create table tmp(
-> id bigint primary key auto_increment,
-> birthday date
-> );

向表中插入一些数据:

mysql> insert into tmp(birthday) values(current_date());
mysql> insert into tmp(birthday) values(‘1949-10-01’);
mysql> insert into tmp(birthday) values(‘2049-10-01’);
mysql> insert into tmp(birthday) values(current_time());
mysql> insert into tmp(birthday) values(date(current_time()));

在这里插入图片描述
可以看到,就算插入的是当前时间,显示时仍然是以日期的方式显示的。
此时可以认为:

  • 1.所有的函数,底层都是用同一个日期函数。
  • 2.MySQL有一点小bug,时间能插入日期类型的数据中。

案例2:

创建一个留言表
mysql> create table msg(
id int primary key auto_increment,
content varchar(100) not null, senddtime datetime
);

插入数据:
在这里插入图片描述

现在有一个要求,请查询20分钟内发布过的消息。

在这里插入图片描述

mysql> select id,content,sendtime from msg where sendtime > date_sub(now(),interval 30 minute);
在这里插入图片描述
另一种查询方法也可以:
mysql> select id,content,sendtime from msg where now() < date_add(sendtime,interval 30 minute);

二、字符串函数

在这里插入图片描述

2.1charset

获取msp表的content列的字符集.

mysql> select charset(content) from msg;

在这里插入图片描述

2.2 concat ——拼接字符串

这个函数就像c语言学过的strcat函数,将字符串拼接。
在这里插入图片描述

2.3 ucase——转化成大写

mysql> select ucase(‘hello,你好,worldasddd’);
在这里插入图片描述

2.4 lcase——转化成小写

mysql> select lcase(‘hello,你好,BBBBBBBBBBd’);

在这里插入图片描述

2.5 left()

left(string, length);
从string左边开始提取length个字符。

在这里插入图片描述

2.6replace()

replace(string,src,dst);

在string字符串中,查找src字符串,找到并替换成dst字符串。

2.7substring()

在这里插入图片描述

substring(str,position,length);
从str的position位置开始,取length个字符。

2.8 ltrim 和rtrim

ltrim去除字符串左边的空格
rtrim去除右边的空格。

trim去除左右两边的空格。

但是不去除中间的空格。

使用案例

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

mysql> select concat(‘考生姓名:’, name, ‘恭喜你,你的总分是:’,chinese+math+english,’ 语文成绩:‘,chinese, ’ 数学成绩:’ ,math,’ 英语成绩: ',english) as 分数 from exam_result;

求学生表中学生姓名占用的字节数.

mysql> select name,length(name) from exam_result;

在这里插入图片描述
原因是,使用的字符编码默认是utf8的。
一个汉字占3个字节。

注意:字符和数字占1字节。

mysql> select length(‘abc123’);

在这里插入图片描述

将EMP表中所有名字中有S的替换成’上海’
mysql> select ename,replace(ename,‘S’,‘上海’) from emp;

在这里插入图片描述

截取EMP表中ename字段的第二个到第三个字符。
mysql> select substring(ename,2,2) from emp;
在这里插入图片描述

以首字母小写的方式显示所有员工的姓名
mysql> select ename, concat( substring(lcase(ename),1,1), substring(ename,2)) from emp ;
在这里插入图片描述

注意:上面的案例,都没有修改表格本身,而是将满足条件的表内容提取出来并修改,再聚合展现出来。
对表格本身的内容没有修改。
想要修改表格本身的内容,一般用update才会修改。

三、数学函数

在这里插入图片描述
三个取整方式:
向上取整,向下取整,0向取整。

在这里插入图片描述

ceiling函数:向上取整。ceiling翻译:天花板。
floor函数:向下取整。floor翻译:地板。
在这里插入图片描述
在这里插入图片描述

四、其他函数

user()

当前用户。

md5()

语法:md5(str)对一个字符串进行md5摘要,摘要后得到一个32位字符串。

形成一个摘要,产生等长字符串。

在这里插入图片描述

不管这个参数str有多短多长,都会形成一个固定的摘要。
在这里插入图片描述

ifnull(val1,val2)

判断第一个val1是不是null,如果第一个是null,返回val2。
如果第一个不是null,返回val1。

  • 32
    点赞
  • 22
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 1
    评论
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

邓富民

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值