Computer >> 컴퓨터 >  >> 프로그래밍 >> MySQL

MySQL에서 COUNT(*)와 COUNT(컬럼명)의 차이점 완벽 정리

MySQL COUNT(*)와 COUNT(컬럼명)의 차이란?

MySQL에서 COUNT(*)는 해당 컬럼에 NULL 값이 포함되어 있더라도 테이블의 모든 행 개수를 반환합니다. 반면 COUNT(컬럼명)은 지정한 컬럼의 값이 NULL인 행을 제외하고, 실제 값이 존재하는 행의 개수만 반환합니다.

즉, NULL 처리 여부가 두 함수의 핵심적인 차이점입니다. 이 차이를 실제 예제를 통해 자세히 살펴보겠습니다.

1. 예제 테이블 생성

먼저 아래 쿼리로 테스트용 테이블을 생성합니다.

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

2. 데이터 삽입

INSERT 명령어를 사용해 다양한 형태의 값을 가진 레코드를 삽입합니다. 일반 문자열뿐 아니라 빈 문자열(''), NULL, 숫자 0도 함께 넣어 차이를 확인합니다.

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)

3. 전체 데이터 조회

SELECT 문으로 테이블의 모든 레코드를 조회해 보겠습니다.

mysql> select * from ifNotNullDemo;

실행 결과는 다음과 같습니다. 총 5개의 행이 존재하며, 그중 하나는 NULL 값입니다.

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

Case 1: COUNT(*) 사용 시

COUNT(*)는 NULL 값을 포함하여 테이블의 전체 행 개수를 계산합니다.

mysql> select count(*) from ifNotNullDemo;

결과는 NULL까지 포함된 5가 반환됩니다.

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

Case 2: COUNT(Name) 사용 시

COUNT(컬럼명)은 해당 컬럼 값이 NULL인 행을 제외하고 개수를 계산합니다.

mysql> select count(Name) from ifNotNullDemo;

NULL인 행 하나가 제외되어 결과는 4가 반환됩니다.

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

정리

두 함수의 차이를 요약하면 다음과 같습니다.

  • COUNT(*): NULL 여부와 관계없이 테이블의 모든 행 개수를 반환
  • COUNT(컬럼명): 해당 컬럼이 NULL인 행을 제외한 개수만 반환

참고로 빈 문자열('')이나 숫자 0은 NULL이 아니기 때문에 COUNT(컬럼명)에서도 정상적으로 개수에 포함됩니다. 따라서 NULL만 제외된다는 점을 기억하면 됩니다.