数据库
首页 > 数据库> > mysql学习小贴士

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