COUNT(*) đếm **tất cả hàng** (kể cả hàng có NULL). COUNT(columnName) chỉ đếm hàng mà cột đó **không phải NULL**.
Ví dụ minh họa
Tạo bảng cho phép NULL:
CREATE TABLE ifNotNullDemo (Name VARCHAR(20));
INSERT INTO ifNotNullDemo VALUES ('Chris'), (''), ('Robert'), (NULL), (0);
Dữ liệu (5 hàng):
+--------+ | Name | +--------+ | Chris | | | -- chuỗi rỗng '' | Robert | | NULL | | 0 | -- chuỗi '0' +--------+
COUNT(*) đếm tất cả 5 hàng:
SELECT COUNT(*) FROM ifNotNullDemo;
+----------+ | COUNT(*) | +----------+ | 5 | +----------+
COUNT(Name) bỏ qua NULL, đếm 4 hàng (kể cả chuỗi rỗng '' và '0'):
SELECT COUNT(Name) FROM ifNotNullDemo;
+-------------+ | COUNT(Name) | +-------------+ | 4 | +-------------+
Tóm tắt:
| Hàm | Đếm NULL? | Đếm chuỗi rỗng ''? |
|---|---|---|
COUNT(*) | Có | Có |
COUNT(col) | Không | Có |
COUNT(DISTINCT col) | Không | Có (1 lần) |
Ứng dụng: Dùng COUNT(*) để đếm tổng số hàng. Dùng COUNT(col) để đếm số hàng có dữ liệu thực tế (not NULL) cho cột đó.