目录
一、内置函数
mysql中常见的内置函数有如下:

current_date:获取当前的日期。

current_time:获取当前的时间(时分秒)。

current_timestamp:获取当前的时间戳。

now:获取当前的日期时间。

date:获取datetime参数的日期部分。

date_add:在date日期的基础上加 日期或者时间,interval 后面的加数的单位可以是 day/minute/second/year

当然这里加的时候如果加成负数时,就是我们下面要介绍的减了。
date_sub:在date日期的基础上减 去日期或者时间,interval 后面的加数的单位可以是 day/minute/second/year

datediff:获取来两个日期之间的差,单位是天。

案例使用1:
创建一张表记录生日tmp
先创建一张表,里面的字段只有两个id和brithday,其中id是 int 类型设为住键且自增,brithday是date类型即可。

然后插入一批数据进去:

使用案例2:
创建一张留言表msg
字段有id int类型,设为主键且自增,ccontent 为varchar类型且不为空,sendtime 为datetime类型。

插入一批数据

显示所有的信息,发布的日期只显示日期不显示时间。

查询2分钟以内发布的贴子。
实际上就是sendtime+2分钟>当前时间的所有留言消息
二、字符串函数
mysql常见的字符串函数如下:

charset:获取字符串使用的字符集
比如我们可以查看以前员工表的ename字段的字符集:

可以在现实的时候使用charset函数进行处理!

concat:连接字符换

了解了这个我们可以对成绩表进行显示的处理!我们目前的exam_result表中是一列列的显示的

我们可以将他进行使用cancat进行将他的格式进行处理:

instr:返回 substr在string中出现的位置,没有则返回 0

ucase 和 lcase:将str转为大写/小写

left:从字符串str的左边开始获取len个字符
right:从字符串str的右端开始获取len个字符

length:获取字符串str的长度。单位是字节。

介绍了length我们就可以求出exam_result中学生的姓名的所占的字节数了:

**注意:**不同的编码中一个汉字所占的字节是不同的,utf8中一个汉字是占3字节,而gbk中一个汉字占2字节。而我们这里的是 utf8所以三个汉字就是9字节。
replace:将str中的prv被tail替换。

介绍了这个我们就可以将emp表中的所有含有某个字符串的内容替换为特定的内容。例如:将所有的ename中含有S的字符替换为 上海:

strcmp:逐字符比较两个字符串的大小。
和C语言的一样,s1>s2 返回1;s1<s2 返回-1;s1 == s2 返回 0;
strcmp不区分大小写。

strcmp不区分大小写:

substring:从pos位置开始获取len个字符,如果不指定len则从pos开始截取到string结束;
和C++类似。注意:pos的起始是从1开始的,这点与cpp的不同!

我们可以利用这个将员工表中ename的第二个到第三个字符给全部截取出来:

介绍到这里,我们可以结合前面的大小写、字符串拼接、以及子串截取,我们就可以完成将emp表中的员工姓名以首字小写的方式显示:
实现思路:先通过substring将ename的第一个字符截取出来然后转小写,然后再利用substring 将剩下的截取,最后利用concat将他们两个一起拼接显示即可!

trim:去除字符串的前后空格
ltrim:去除字符串的前空格
rtrim:去除字符串的后空格
trim:去除字符串的前后空格

ltrim:去除字符串的前空格

rtrim:去除字符串的后空格

三、数学函数
mysql常见的数学函数如下:

abs:绝对值函数

bin:将十进制转换为二进制

hex:将十进制转换为十六进制

conv:将num从from_base格式转换为to_base格式

ceiling:向上取整

需要注意的是:负数 在向上取整的时候是向数轴的正无穷方向取的。也就是说-3.4向上取整就是-3

floor:向下取整。

注意的是:负数在向下取整的时候,是向数轴的负无穷方向取的。也就是说-3.2向下取整就是-4;

关于向上取整和向下取整的记忆方式就是:
向上取整本质是变大,就是尽可能的取大,始终是向正无穷的方向取的。
向下取整本质是变小,就是尽可能的取小,始终是向负无穷的方向取的。
format:保留数字的前n位小数(四舍五入)

rand:生成随机浮点数,范围在 0.0 -- 1.0 之间

如果我们想生成 0 - 100 之间的随机数呢?其实很简单,我们可以rand() 乘以100 然后在使用一种取整方式即可。

mod:对数x使用n取余;

四、其他函数
use函数:获取当前链接mysql的用户名和主机名

md5(str)函数,对一个字符串进行md5摘要,摘要后得到一个32位的字符串。

拓展:
一般情况下公司内部数据库不会存储用户的明文密码 ,而会将用户密码形成摘要后存储对应的摘要,当用户登录账号时,将用户输入的的密码形成摘要后与数据库中存储的摘要做对比,如果对比成功则允许登录。
这么做的好处主要有两个,第一个好处就是公司内部数据库中存储的不是用户的明文信息,就算用户信息泄露了也不会产生太大影响,第二个好处就是形成的摘要是定长的,这样有利于数据库表结构的设计。
database()函数,显示当前正在使用的数据库;

password()函数,MySQL数据库使用该函数对用户进行加密。

ifnull(val1,val2)函数,如果第一个参数不为空,则返回val1否则返回val2。
