Computer >> 컴퓨터 >  >> 프로그램 작성 >> MySQL

MySQL에서 count(*)와 count(columnName)의 차이점은 무엇입니까?

<시간/>

count(*)는 열에 null 값이 포함되어 있는지 여부에 관계없이 모든 행을 반환하고 count(columnName)는 null 행을 제외한 행 수를 반환합니다.

먼저 테이블을 생성해 보겠습니다.

다음은 쿼리입니다.

mysql> create table ifNotNullDemo
   -> (
   -> Name varchar(20)
   -> );
Query OK, 0 rows affected (0.54 sec)

다음은 삽입 명령을 사용하여 테이블에 일부 레코드를 삽입하는 쿼리입니다.

mysql> insert into ifNotNullDemo values('Chris');
Query OK, 1 row affected (0.15 sec)

mysql> insert into ifNotNullDemo values('');
Query OK, 1 row affected (0.13 sec)

mysql> insert into ifNotNullDemo values('Robert');
Query OK, 1 row affected (0.24 sec)

mysql> insert into ifNotNullDemo values(null);
Query OK, 1 row affected (0.30 sec)

mysql> insert into ifNotNullDemo values(0);
Query OK, 1 row affected (0.16 sec)

다음은 select 문을 사용하여 테이블의 모든 레코드를 표시하는 쿼리입니다.

mysql> select *from ifNotNullDemo;

그러면 다음과 같은 출력이 생성됩니다.

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

사례 1: 다음은 개수에 null도 포함하는 count(*)의 데모입니다.

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)