一、日期跟时间函数
例题:根据上图中的函数,统计每周的加班情况。
想到用group_by来做,但是每天都是不一样的日期,应该怎么办呢
?用week(date)函数即可。
再套用查询模型:group_by配合sum即可。
二、控制流程函数
例题:现有表中有三个字段0,1,2.(0代表女,1代表男,2代表妖)。想实现一种功能,直接给客户显示出中文。
这里就用到了控制流程函数了。其中的case,when,then就是流程控制函数了。
在查询的时候,即在sql中加入流程控制函数了。
相应的还有ifnull,nullif等函数。
三、系统调试函数
返回当前用户及所在主机。
返回当前操作的数据库
返回当前sql版本
三、使用函数应该注意的地方
问:如果MySQL函数和php函数都实现某个功能,优先使用哪一个?
1:mysql的函数肯定是要影响查询速度的。应该在建表时,通过合理的表结构减少函数的使用,比如上一篇文章中所讲的email按照@前后拆分。
2:如果确实要用函数,比如时间得格式化,在mysql与php中都有,那么应该优先放在业务逻辑层,即php层处理。
3:在查询时使用了函数,最大的一个坏处。
以date_format(A),则A列的索引将无法使用。
如果你针对某列查询,而此列用上了函数来判断,那么此列将不再使用索引。
举例:比如想查询后缀等于“qq.com”的email。
本来,email列是有索引的,可以加快查询速度。但是因为你使用的并不是email列,而是函数处理后的email的返回值。因此,email列的查询就非常缓慢了。
总结:where条件中,对某列使用了函数,那么此列的索引不发挥作用。
再详细点说,比如where id = 5,那么直接索引id=5的值,很快。
如果where条件中加了函数,那么就失去了索引功能,查询就很慢了。