前言继上次《十个非常实用MySQL命令》之后,今天给大家介绍十个MySQL实用函数。下面是一些常用的和简单的功能,在工作中也是很常用的。函数0.显示当前时间命令:selectnow()。功能:显示当前时间。应用场景:创建时间、修改时间等默认值。示例:mysql>selectnow();+--------------------+|now()|+------------------+|2017-12-2720:14:56|+--------------------+1rowinset(0.00sec)1。字符长度命令:selectchar_length('andyqan')。功能:显示指定的字符长度。应用场景:校验字符长度时。例子:mysql>selectchar_length('andyqian');+------------------------+|char_length('andyqian')|+-----------------------+|8|+-----------------------+1rowinset(0.00sec)2。日期格式化命令:selectdate_format(now(),'%y-%m-%d)。作用:格式化日期。应用场景:格式化日期时。示例:mysql>selectdate_format(now(),'%y-%m-%d');+-----------------------------+|date_format(now(),'%y-%m-%d')|+-------------------------------+|17-12-28|+--------------------------------+1rowinset(0.00sec)这里支持的格式有:%y:表示年份(两位数),例如:17年。%Y:以4位数字表示年份,例如:2017%m:表示月份(1-12)%d:表示月份中的第几天%H:小时(0-23)%i:分钟(0-59)%s:秒(0-59)年月日时分秒:%y-%m-%d%H:%i:%s,如下:mysql>selectDATE_FORMAT(now(),'%y-%m-%d%H:%i:%s');+----------------------------------------+|DATE_FORMAT(now(),'%y-%m-%d%H:%i:%s')|+--------------------------------------+|17-12-2720:28:54|+-------------------------------------+1rowinset(0.00sec)3.增加/减少日期时间命令:DATE_ADD(date,intervalexprunit)DATE_SUB(date,intervalexprunit)功能:增加/减少日期时间应用场景:当前时间的前一天,几分钟前。常用于统计。示例:mysql>selectdate_add(now(),interval1day);+----------------------------+|date_add(now(),interval1day)|+--------------------------------+|2017-12-2820:10:17|+--------------------------------+1rowinset(0.00sec)其中Date表示日期格式,包括:如2017-12-27、now()等格式。expr:表示数量。unit:表示单位,支持millisecond(微秒)、second(秒)、hour(小时)、day(天)、week(周)、year(年)等。4、类型转换命令:CAST(exprAStype)功能:主要用于显示类型转换应用场景:显示类型转换示例:mysql>selectcast(18700000000aschar);+-----------------------------+|cast(18700000000aschar)|+------------------------+|18700000000|+----------------------------+1rowinset(0.00sec)需要注意的是type并不支持所有的基本数据类型,详细支持的类型可以参考之前的文章《谈谈MySQL显示类型转换》。5.加密功能命令:md5(data)功能:用于对数据进行加密应用场景:加密,一些隐私数据,比如银行卡号,身份证等需要存储密文,(当然不建议使用数据库层加密,应该是层加密)例子:mysql>selectmd5("andyqian");+------------------------------+|md5("andyqian")|+---------------------------------+|8a6f60827608e7f1ae29d1abcecffc3a|+--------------------------------+1rowinset(0.00sec)注意事项:如果你数据库中的数据还是明文的,此时可以使用数据库加密算法进行加密。例如:(仅用于演示):update_base_usersetname=md5(name),updated_time=now()whereid=1;支持的加密函数有:md5()des_encrypt(加密)/des_decrypt(解密);sha1()password()等,这里就不一一介绍了,感兴趣的同学可以移步官网了解。6、字符串拼接命令:concat(str,str2,str3)功能:拼接字符串应用场景:拼接字符串,例如在某些字段中添加指定的字符串。示例:mysql>selectconcat("andy","qian");+------------------------+|concat("andy","qian")")|+--------------------+|andyqian|+--------------------+|andyqian|+------------------------+1rowinset(0.00sec)这个函数平时用的比较多。基本场景是向某些数据添加特定字符串。方法如下:7.JSON函数(5.7版本才支持)命令:json_object(function)功能:转换json字符串应用场景:指定数据转换为json字符串示例:mysql>selectjson_object("name","andyqian""数据库","MySQL");+-----------------------------------------------+|json_object("name","andyqian","database","MySQL")|+-----------------------------------------------+|{"name":"andyqian","database":“MySQL”}|+--------------------------------------------------+1rowinset(0.00sec)includingjson_array:mysql>selectjson_array("name","andyqian","database","MySQL");+--------------------------------------------------+|json_array("name","andyqian""数据库","MySQL")|+-----------------------------------------------+|["名称","andyqian","数据库","MySQL"]|+--------------------------------------------+1rowinset(0.00sec)json_valid()判断是否为json字符串:selectjson_valid('{"name":"andyqian","database":"MySQL"}');如果它是一个有效的json字符串,它是1,如果它是一个无效的json字符串,它是0。方法有很多,就不一一演示了。8、聚合函数命令:sum()、count()、avg()、max()、min()功能:统计、平均值、最大值、最小值应用场景:这类函数很常见,主要用于数据统计,在SQL优化方面,同样适用。示例:mysql>selectmax(id)fromt_base_user;+--------+|max(id)|+--------+|2|+----------+1rowinset(0.00sec)这里有个小技巧。如果主键是按顺序递增的,当你需要多少用户时,你可以使用max(id)而不是count(*)函数。9、distinct()命令:distinct功能:去重应用场景:需要统计类型、状态、判别时。示例:mysql>selectcount(distinct(name))/count(*)fromt_base_user;+---------------------------------+|count(distinct(name))/count(*)|+---------------------------------+|0.6667|+--------------------------------+1rowinset(0.00sec)以上是计算的例子辨别度,不明白的可以参考之前的文章?
