目录
[案例1: 获取emp表的ename列的字符集](#案例1: 获取emp表的ename列的字符集)
案例2:要求显示exam_result表中的信息,显示格式:"XXX的语文是XXX分,数学XXX分,英语XXX分"
函数
日期函数

通常日期就是指的年月日,时间就是指的时分秒,下面是使用案例

now() 和 current_timestamp()的使用是一样的

date()可以用来提前时间的左半部分
里面也可以跟函数

date_add() 同理里面也可以跟着函数
有增加自然就有减去 date_sub()

计算两个年份之间相差多少天数,datediff() ,这个就是前者与后者相减,所以可以为负数

案例1:创建一张表,记录生日
首先创建一张表来进行测试

插入两条数据

使用函数进行插入

使用current_time()也可以插入,不过会警告,因为用错了

当然你去使用current_timestamp()时间戳也行,就像编程那边的隐式类型转换,不过实际使用是不建议这样去插入的
案例2:创建一个留言表
同理我们创建一张表进行测试

插入数据

查看数据,只需要看日期的话,可以使用函数

案例3:请查询在2分钟内发布的帖子

使用上一个案例的表做演示

字符串函数

charset:查看字符集


concat:字符拼接函数

instr:查看目标字符在原字符串中的位置,下标从1开始,没找到就返回0

ucase和lcase:转化大小写

left:提前字符,后者跟着提前长度

当然也有right函数

length:显示字符串的长度

ltrim与rtrim:去除左边\右边的空格
通常用在用户进行输入的时候会不小心输入空格,程序员就可以用这个进行去除

案例1: 获取emp表的ename列的字符集
使用上一篇文章使用的表结构进行演示,使用场景:排查错误乱码,通乱码一般是由于编码格式的不同所造成的,所以排除编码错误通常可以解决此类问题



案例2:要求显示exam_result表中的信息,显示格式:"XXX的语文是XXX分,数学XXX分,英语XXX分"
找到之前文章中所用的一张表结构

利用concat进行拼接

案例3:求学生表中学生姓名占用的字节数

这里也可以看出来一个中文占3个字节,注意不要和字符数搞错了
注意:length函数返回字符串长度,以字节为单位。如果是多字节字符则计算多个字节数;
如果是单字节字符则算作一个字节。比如:字母,数字算作一个字节,中文表示多个字节数
(与字符集编码有关)

案例4:将EMP表中所有名字中有S的替换成'上海'
还是使用这张员工表

我们把查询结果进行了替换,当然这里指的是查询结果,实际上,原表是没有进行修改的
案例5:截取EMP表中ename字段的第二个到第三个字符

案例6:以首字母小写的方式显示所有员工的姓名
第一步:截取左右俩个部分

第二步:将其首字母小写化

第三步:拼接

数学函数

abs:绝对值

bin:转为二进制显示

hex:转为十六进制显示

conv:从一个进制转为另一个进制

format:格式化显示

mod:取模
rand:随机数(0~1浮点数随机)
当然你可以嵌套其他的函数来随机到你想要的数据

ceiling与floor:向上向下取整
补充:向上取整与向下取整的理解

ceiling:向上取整(即向数值变大的方向取整)


这个在银行中就是使用的向上取整
floor:向下取整(即使数值变小的取整)

其他函数
user() 查询当前用户
不过因为还没有配置登入机,没有用户,目前是使用免密码登入的,后序再对这方面进行介绍

database()显示当前正在使用的数据库

md5(str)对一个字符串进行md5摘要,摘要后得到一个32位字符串
就是对数据进行摘要,数据库中保存密码之类的敏感数据是不能直接进行插入保存的,通常需要对其进行加密操作,这里的md5,虽然不是加密,但是也算是第一个防止数据泄露的防范措施了

创建一张表
一般来说都是像第二种插入的方式
我们查询当然也要进行md5摘要操作

password()函数,MySQL数据库使用该函数对用户加密
通常我们在数据库进行加密操作是用这个函数来进行的,同理它加密出来的也是等长的

ifnull(val1, val2) 如果val1为null,返回val2,否则返回val1的值
这个很像C++中 a==b? a : b,三目运算符的作用
