mysql学习小贴士
作者:互联网
一.count(*)、count(列)、count(1)的区别
count(1)会统计表中的所有记录数,包含字段为null的记录
count(列)会统计该字段在表中出现的次数,忽略字段为null的情况,即不统计字段为null的记录
执行效果上:
count(*)包含了所有的列,相当于行数,在统计结果的时候,不会忽略列值为null
count(1)包含了忽略所有列,用1代表代码行,在统计结果的时候,不会忽略列值为null
count(列)只包括列名那一列,在统计结果的时候,会忽略列值为null的计数,即某个字段值为null时,不统计
执行效率上:
count(列)会比count(1)快
列名不为主键,count(1)会比count(列)快
如果表多个列并且没有主键,则count(1)执行优于count(*)
如果有主键,则select count(主键列)的效率是最快的
如果表只有一个字段,则select count(*)最快
二.where、having、on的区别
数据库执行顺序
(8)select (9)distinct (11)top num(select list) (1)from (3)<join_type>join (2)on (4)where (5)group by
(6)with (7)having (10)order by
where是在group by之前执行的,所以where后面不能使用聚合函数来进行数据过滤
只能使用from表里的字段来进行数据过滤
having是在group by 之后执行的,那么这些数据是已经分过组的了,可以使用聚合函数来进行数据的分组过滤
举例说明一下
三.空字符串和空的区别
空字符串表现为"",占用内存空间
空表现为null,不占用内存空间
标签:count,忽略,小贴士,学习,mysql,null,where,主键,select 来源: https://blog.csdn.net/u013161892/article/details/117910174