24、MySQL日期时间函数与控制流程函数

一、日期跟时间函数

例题:根据上图中的函数,统计每周的加班情况。

想到用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条件中加了函数,那么就失去了索引功能,查询就很慢了。

你可能感兴趣的:(24、MySQL日期时间函数与控制流程函数)