【MySQL】内置函数

文章目录

  • 日期函数
  • 字符串函数
  • 数学函数
  • 其他函数

日期函数

常见的日期函数如下:
【MySQL】内置函数_第1张图片

current_date函数

current_date函数主要用来获取当前日期:

select current_date();

【MySQL】内置函数_第2张图片

current_time函数

current_time函数主要用来获取当前的时间

select current_time();

【MySQL】内置函数_第3张图片

current_time函数

current_timestamp函数用来获取当前的时间戳,并以日期时间的格式进行显示。

select current_timestamp();

【MySQL】内置函数_第4张图片

now函数

now函数用于获取当前的日期时间。

select now();

【MySQL】内置函数_第5张图片

date函数

date函数用于获取当前的日期时间。

select date(now());

【MySQL】内置函数_第6张图片

date_add函数

date_add函数用于在日期的基础上添加日期或时间。

select date_add(current_date(),interval 10 day);

【MySQL】内置函数_第7张图片

date_sub函数

date_sub函数用于在日期的基础上减去日期或时间。

select date_sub(current_date(),interval 10 day);

【MySQL】内置函数_第8张图片

datediff函数

datediff函数用于获取两个日期的差,单位是天。

select datediff(current_date(),'2023-01-01');

【MySQL】内置函数_第9张图片


综合案例

创建一个评论表,表中包含自增长主键id、昵称、评论内容和评论时间。如下:

mysql> create table comment_form(
    -> nickname varchar(20) not null,
    -> content varchar(50) not null,
    -> sendtime datetime
    -> );
Query OK, 0 rows affected (0.01 sec)

向表中插入一些数据,插入时直接通过now函数指明评论时间。

mysql> insert into comment_form (nickname,content,sendtime) values ('张三','2024继续加油!',now());
Query OK, 1 row affected (0.01 sec)

mysql> insert into comment_form (nickname,content,sendtime) values ('李四','新的一年再接再厉哦!',now());
Query OK, 1 row affected (0.01 sec)

【MySQL】内置函数_第10张图片

此时再向表中插入一些新的数据,如下:

【MySQL】内置函数_第11张图片

显示评论信息时,如果只想显示评论的日期而不显示评论时间,可以在查询sendtime字段时,通过date函数截取sendtime的日期部分进行显示。如下:

【MySQL】内置函数_第12张图片

在显示评论时,如果要查询2分钟之内发布的评论信息,实际上就是要筛选出评论时间加上2分钟后大于当前时间的评论,这时需要同时借助date_add和now函数。

【MySQL】内置函数_第13张图片


字符串函数

常见的字符串函数如下:
【MySQL】内置函数_第14张图片

charset 函数

现有如下员工表,要求获取员工表中ename列使用的字符集。如下:

【MySQL】内置函数_第15张图片

在查询员工表的信息时,使用charset函数获取ename列使用的字符集即可。如下:

select ename,charset(ename) from emp;

【MySQL】内置函数_第16张图片

concat 函数

现有如下成绩表,要求以"XXX的语文是XX分,数学是XX分,英语是XX分"的格式显示成绩表中的信息。如下:

【MySQL】内置函数_第17张图片

这时候可以使用concat函数按要求进行字符串连接即可。

select concat(name,'的语文是',chinese,'分,数学是',math,'分,英语是',english,'分') 成绩概览 from exam_result;

【MySQL】内置函数_第18张图片

instr 函数

instr函数用于获取一个字符串在另一个字符串中首次出现的位置,如果没有出现则返回0。

select instr('2024新年快乐','2024');

【MySQL】内置函数_第19张图片

ucase 函数

ucase函数用于获取转换成大写之后的字符串。

select ucase('fdsafdsafdsafdsaAQWERTYUIO');

【MySQL】内置函数_第20张图片

lcase 函数

lcase函数用于获取转换成小写后的字符串。

select lcase('ASDFGGHHJ');

【MySQL】内置函数_第21张图片

left 函数

left函数用于从字符串的左边开始,向后截取指定个数的字符。

select left('123456789',5);

【MySQL】内置函数_第22张图片

length 函数

length函数用于获取字符串占用的字节数。如下:

select name,length(name) from exam_result;

【MySQL】内置函数_第23张图片

说明一下,对于多字节字符来说,不同编码中一个字符所占的字节个数是不同的,比如utf8中一个字符占用3个字节,而gbk中一个字符占用2个字节。

replace 函数

replace函数用于将字符串中的指定子字符串替换成另一个字符串,例如将员工表中所有名字中的"S"替换成"上海"。

【MySQL】内置函数_第24张图片

strcmp 函数

strcmp函数用于逐字符按照ASCII码比较两个字符串的大小,两个字符串大小相等返回0,前者大返回1,后者大返回-1.

【MySQL】内置函数_第25张图片

substring 函数

substring函数用于从字符串的指定位置开始,向后截取指定个数的字符。如果没有指定要截取的字符个数,则默认从指定位置开始截取到最后。

select substring('123456',2,3);

【MySQL】内置函数_第26张图片

ltrimrtrimtrim 函数

trim函数用于去除字符串前后空格。

select traim('        星河万里          ') 去除结果;

【MySQL】内置函数_第27张图片

ltrim和rtrim函数分别用于去除字符串的前空格和后空格。

select ltrim('        星河万里          ') 去除结果;
select rtrim('        星河万里          ') 去除结果;

【MySQL】内置函数_第28张图片

综合案例

要求以首字母小写的方式显示员工表中所有员工的姓名,思路如下:

  • 使用substring函数,截取员工姓名的第一个字符,然后使用lcase将其转换成小写。
  • 使用substring函数,截取员工姓名的第二个字符及其后续字符。
  • 使用concat函数,将第一次截取并转换成小写的首字母,和第二次截取的字符串进行连接。

最终concat函数连接后得到的字符串便是首字母小写的员工姓名。如下:

select ename,concat(lcase(substring(ename,1,1)),substring(ename,2)) 首字母小写 from emp;

【MySQL】内置函数_第29张图片


数学函数

常用的数学函数如下:

【MySQL】内置函数_第30张图片

abs 函数

abs函数用于获取一个数的绝对值。

select abs(-1024);

【MySQL】内置函数_第31张图片

bin 函数

bin函数用于将一个十进制数转换成二进制。

select bin(10);

【MySQL】内置函数_第32张图片

hex 函数

hex函数用于将一个十进制数转换成十六进制。

select hex(10);

【MySQL】内置函数_第33张图片

conv 函数

conv函数用于将一个数从一个进制转换成另一个进制。

select conv('A',16,10);

【MySQL】内置函数_第34张图片

ceiling 函数

ceiling函数用于对一个数进行向上取整。

select ceiling(3.3);

【MySQL】内置函数_第35张图片

需要注意的是,向上取整本质是向正无穷方向取整,因此负数向上取整后得到的是第一个大于等于该数的整数。

【MySQL】内置函数_第36张图片

floor 函数

floor函数用于对一个数进行向下取整。

select floor(3.3);

【MySQL】内置函数_第37张图片

format 函数

format函数用于对数值进行格式化,以四舍五入的方式保留指定位数的小数。

select format(3.1415926,2);

【MySQL】内置函数_第38张图片

rand 函数

rand函数用于生成 0.0到1.0 的随机浮点数。如果想要生成0到100的随机数,可以用生成随机浮点数乘以100,然后再以某种取整的方式进行取整。

【MySQL】内置函数_第39张图片

mod 函数

mod函数用于对数值进行求余运算。

【MySQL】内置函数_第40张图片


其他函数

user 函数

user函数用于获取MySQL连接的当前用户名和主机名。

select user();

【MySQL】内置函数_第41张图片

md5 函数

md5函数用于对一个字符串进行md5摘要,摘要后得到一个32字符串。

select md5('xinghewangli');

【MySQL】内置函数_第42张图片

拓展:

  • 一般情况下公司内部数据库不会存储用户的明文密码,而会将用户密码形成摘要后存储对应的摘要,当用户输入的密码形成摘要后与数据库中存储的摘要做对比,如果对比成功则允许登录。
  • 这么做的目的主要有两个:一是公司内部数据库中存储的不是用户的明文信息,就算用户信息泄露了也不会产生太大的影响,二是形成的摘要是定长的,这样有利于数据库表结构的设计。

database函数

database函数用于显示当前正在使用的数据库。

select database();

【MySQL】内置函数_第43张图片

password函数

password函数用于对用户数据进行加密。

select password('Cjl12345@');

【MySQL】内置函数_第44张图片

ifnull函数

ifnull函数接受两个参数,如果第一个参数不为null,则返回第一个参数,否则返回第二个参数。

select ifnull('a','b');

【MySQL】内置函数_第45张图片


你可能感兴趣的:(MySQL,mysql,数据库)