MySQL中count(*)和count(columnName)之间的区别?

无论列是否包含空值,count(*)返回所有行,而count(columnName)返回除空行之外的行数。

让我们首先创建一个表。

以下是查询

mysql> create table ifNotNullDemo
   -> (
   -> Name varchar(20)
   -> );

以下是使用insert命令在表中插入一些记录的查询:

mysql> insert into ifNotNullDemo values('Chris');

mysql> insert into ifNotNullDemo values('');

mysql> insert into ifNotNullDemo values('Robert');

mysql> insert into ifNotNullDemo values(null);

mysql> insert into ifNotNullDemo values(0);

以下是使用select语句显示表中所有记录的查询:

mysql> select *from ifNotNullDemo;

这将产生以下输出

+--------+
| Name   |
+--------+
| Chris  |
|        |
| Robert |
| NULL   |
| 0      |
+--------+
5 rows in set (0.00 sec)

情况1:以下是count(*)的演示,其中的count也包含null:

mysql> select count(*) from ifNotNullDemo;

这将产生以下输出

+----------+
| count(*) |
+----------+
| 5        |
+----------+
1 row in set (0.02 sec)

情况2:以下是对count(columnName)的查询。

mysql> select count(Name) from ifNotNullDemo;

这将产生以下输出

+-------------+
| count(Name) |
+-------------+
| 4           |
+-------------+
1 row in set (0.00 sec)