目录
一 日期函数
主要实现的功能:
主要函数:
示例:
应用
二 字符串函数
主要实现的功能
1转换或者显示相关
2切割,插入,替换,连接,比较等功能性质的
3 其他
三 数学函数
1 运算
2 显示相关
3 向上取整或者向下取整
4进制转换
四 其它函数
加密
查询相关
其他
有时候我们实现一些特定的功能的时候,mysql会给我们提供一批内置的函数方便我们使用,这一批函数既可以作为select后面查找的条件,又可以作为where筛选的条件进行使用。
一般来说,主要是有以下几个种类的函数
一 日期函数
主要实现的功能:
1 获取对应的 日期,时间,时间戳,当前时间
2 计算:时间间隔,距离这一天之前或者之后(单位可以是:年分秒天),或者两个时间的差
3 显示相关:返回参数的日期部分
主要函数:
示例:
注意:不同的日期是有不同的类型的,日期的获取是有对应的函数的
先测试获取不同的时间
对日期进行计算(用不同的单位验证)
加日期
date_sub也是同理,测试减去日期
也可以和其他的函数搭配使用
对于date_diff是计算两个日期的差,前面的日期的部分提取转换成对应的天数-后面的日期的部分转换成的对应的天数
应用
创建一个留言板,记录每一条评论发送的时间,之后查询在两分钟内发布的帖子
思路:
记录每一条评论发送的时间需要用now()函数来获取,查询两分钟内发布的帖子需要这样计算:如果发送评论的时间+2min>当前时间的话,那么就说明之前发送时间的间隔到现在小于两分钟
先创建一个表,用来保存用户的id,评论,发送时间
之后插入评论的时候带上对应的时间
查找两分钟内发送的信息(注意,时间的比较可以用><等)
二 字符串函数
主要实现的功能
一般来说就是对字符串进行操作,归类一下的的话,一般来说是有以下几种情况的
1转换或者显示相关
转换成大写
ucase() (upper)
转换成小写
lcase() (low)
去除空格
一般来说,从网络中接收到的报文带有空格,如果用这个的话,就可以去除对应的空格,拿到相应的内容
trim()是去除所有空格 ltrim 去除左空格 rtrim 去除右空格
中间部分的空格不会被清除掉
计算长度
length() 单位是字节 这个与编码有关,不同的编码对应的字节不一样
也可以查找对应列的
对于汉字的gbk编码来说,一个字符就是三个字节,默认是以字节的方式来进行显示的
2切割,插入,替换,连接,比较等功能性质的
查找
instr()
查找子串是否出现在string中,如果出现的话就返回出现的第一个位置
如果找不到的话就返回0
切割
这些是以字符为基本单位的
left()从字符串最左边开始
right()总字符串最右边开始
substring() 从字符串任意位置开始,如果不指定个数的话,默认就是取到末尾
对于汉字来说,以一个字为单位;对于字符来说,一个字母为单位截取
下标是从1开始计算的
替换
replace() 这个会对默认的范围内的数据进行全部的替换
比较
strcmp()
比较两个字符串,如果是前者小的话,返回-1;如果是前者大的话,返回1;如果后者和前者相等的话就返回0
连接
concat()
这个的作用和C语言中的strcat的作用是一致的,整数和浮点数和字符串都是可以进行拼接的,内部使用单引号或者双引号都是没有问题的
一般来说可以用来调整对应的显示
3 其他
charset()
查看对应字符编码。如果数据库中出现了乱码的现象,我们可以查看对应的存取字符编码是否一致,不一致的话,就进行调整。
这里是之前的评论文字,显示的是gbk编码
这种来说默认就是utf8了(配置文件中设置过)
一般来说,
字符是utf8类型的编码
整数等bin存储
汉字gbk
三 数学函数
1 运算
绝对值abs()
只能对整数浮点数等数值类型的使用
应用:比如可以计算财政情况:盈余还是赤字,计算员工工资差距
取模,求余mod()
可以对正数或者负数使用
rand() 求随机数
默认是[0.0,1.0)之间的小数,如果进行相应的运算可以改变范围
2 显示相关
格式化 format(),传入格式化的数据和对应的精度保留的位数,会进行取整的
3 向上取整或者向下取整
从数轴上看,不管是正数还是负数,往无穷大的方向取整就是向上取整;反之就是向下取整
ceiling() 向上取整
floor()向下取整
4进制转换
都是以十进制为基本转换单位的
bin()--->十进制转换成二进制
hex()--->十进制转换成十六进制
conv()--->自己指定转化规则
conv只能输入数字,后面规则指定也是以数字的形式指定的
四 其它函数
加密
md5
形成摘要
为什么要形成摘要:我们可以对大文本构建整数来形成摘要,以对称密钥的方式形成签名。形成摘要之后基本上得不到原来的数据,但是底层进行比较的时候直接通过加密算法比较摘要即可(密码验证本质上就是比较存储的摘要)
他是一个定长的数据
应用:对于密码这种保密性比较高的数据,就可以用md5的方式进行加密。当然了,在涉及这些数据的时候,mysql是会去过滤掉的,因为mysql的语句是可以查找的,这样的话就可以防止找到对应的密码等信息
密码加密
对于密码的处理,mysql中也有一个password来进行加密,这一种密码安全强度比md5的强度更高一点
查询相关
查看用户信息
mysql中一些相关的配置是以数据库存储的,也是以表的形式呈现的。与用户相关的信息保存在mysql的user表中。我们用user()查询当前的用户,本质上就是在对应的数据库文件中查找相关信息
记录了对应的用户和权限
其他
判断是否为空
ifnull
相当于一种三目运算符,如果第一个字符不为空就返回第一个;如果第一个为空但是第二个不为空的话,就返回第二个;否则两个都为空就返回null