MySQL——count()
count():用于统计数据库表中数据的函数
常见的使用方式:count(*)、count(1)、count(列名)、count(distinct 列名)
函数 | 统计 | 统计结果时 |
---|---|---|
count(*) | 包括所有列,相当于行数 | 不会忽略列值为NULL的记录 |
count(1) | 忽略所有列,1代表代码行,可以用2、 3等数字代替 | 不会忽略列值为NULL的记录 |
count(列名) | 只包括列名指定列,返回指定列的记录数 | 会忽略列值为NULL的记录 |
count(distinct 列名) | 只包括列名指定列,返回指定列的记录数,并去重 | 会忽略列值为NULL的记录 |
使用效果
基于表tb_sutdent
count(*)
SELECT COUNT(*) FROM tb_student;
count(1)
SELECT COUNT(1) FROM tb_student;
count(列名)
SELECT COUNT(列名) FROM tb_student;
count(distinct 列名)
SELECT COUNT(DISTINCT 列名) FROM tb_student;
当统计的是具体的列的时候,此时,会忽略null,但不会忽略空字符和0
如图,使用COUNT(列名)查询时,stuResume的统计数据为0,但实际上,由原表可以看出,stuResume列有17行,但这17行都是null,这就是因为COUNT(列名)不会对null进行统计。
而count(distinct 列名)和count(列名)相似,只是相比count(列名)多了关键字distinct,以方便在统计时进行去重
count(*)&count(1)&count(列名)执行效率比较:
(1)如果列为主键,count(列名)效率优于count(1)
(2)如果列不为主键,count(1)效率优于count(列名)
(3)如果表中存在主键,count(主键列名)效率最优
(4)如果表中只有一列,则count(*)效率最优
(5)如果表有多列,且不存在主键,则count(1)效率优于count(*)
(4)如果表中只有一列,则count(*)效率最优
(5)如果表有多列,且不存在主键,则count(1)效率优于count(*)