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

MySQL COUNT() 함수와 NULL 값: 열에 NULL이 저장되어 있을 때 반환되는 결과

MySQL에서 COUNT() 함수를 사용해 특정 열에 저장된 값을 셀 때, 해당 열에 NULL 값이 포함되어 있다면 MySQL은 NULL을 무시하고 NULL이 아닌(non-NULL) 값만 계산하여 결과를 반환합니다.

예제 데이터 확인

이를 이해하기 위해 다음과 같은 데이터가 저장된 'Employee' 테이블을 사용해 보겠습니다.

mysql> Select * from Employee;
+----+--------+--------+
| ID | Name   | Salary |
+----+--------+--------+
| 1  | Gaurav | 50000  |
| 2  | Rahul  | 20000  |
| 3  | Advik  | 25000  |
| 4  | Aarav  | 65000  |
| 5  | Ram    | 20000  |
| 6  | Mohan  | 30000  |
| 7  | Aryan  | NULL   |
| 8  | Vinay  | NULL   |
+----+--------+--------+
8 rows in set (0.00 sec)

위 테이블에는 총 8개의 행이 있으며, 그중 'Salary' 열의 7번(Aryan)과 8번(Vinay) 행에는 NULL 값이 저장되어 있습니다.

COUNT() 함수 적용하기

이제 'Salary' 열에 COUNT() 함수를 적용하는 다음 쿼리를 실행해 보겠습니다.

mysql> Select COUNT(salary) from Employee;
+---------------+
| COUNT(salary) |
+---------------+
| 6             |
+---------------+
1 row in set (0.15 sec)

결과 분석

위 결과 집합에서 알 수 있듯이, 전체 행은 8개이지만 COUNT(salary)는 6을 반환했습니다. 이는 MySQL이 NULL 값을 무시하고 NULL이 아닌 값만 계산했기 때문입니다.

COUNT(*)와의 차이점

참고로, NULL 값까지 포함한 전체 행 수를 구하려면 COUNT(*)를 사용하면 됩니다. COUNT(*)는 특정 열의 값과 관계없이 테이블의 모든 행을 계산합니다.

mysql> Select COUNT(*) from Employee;
+----------+
| COUNT(*) |
+----------+
| 8        |
+----------+
1 row in set (0.00 sec)

정리하면, COUNT(열 이름)은 해당 열에서 NULL이 아닌 값의 개수만 반환하고, COUNT(*)는 NULL 여부와 상관없이 테이블의 전체 행 수를 반환합니다. 두 함수의 차이를 정확히 이해하면 데이터 집계 시 실수를 줄일 수 있습니다.