Computer >> Hướng Dẫn Máy Tính >  >> Lập Trình >> MySQL

Nên chèn NULL hay chuỗi rỗng (empty string) trong MySQL?

Trong InnoDB:

  • NULL chiếm ít dung lượng hơn, độ dài NULL là NULL.
  • Chuỗi rỗng ('') chiếm dung lượng, độ dài = 0 (nhưng COUNT(cot) đếm = 1).

Minh họa

Tạo bảng DemoEmptyAndNULL:

mysql> CREATE TABLE DemoEmptyAndNULL (Message VARCHAR(100));

Chèn chuỗi rỗng

mysql> INSERT INTO DemoEmptyAndNULL VALUES(' ');
mysql> SELECT COUNT(message) FROM DemoEmptyAndNULL;
+----------------+
| COUNT(message) |
+----------------+
| 1              |
+----------------+

COUNT trả về 1 (có 1 hàng không NULL).

Chèn NULL

mysql> DELETE FROM DemoEmptyAndNULL WHERE message = ' ';
mysql> INSERT INTO DemoEmptyAndNULL VALUES();  -- NULL
mysql> SELECT COUNT(message) FROM DemoEmptyAndNULL;
+----------------+
| COUNT(message) |
+----------------+
| 0              |
+----------------+

COUNT trả về 0 vì bỏ qua NULL.

Kết luận

Dù NULL tiết kiệm không gian và COUNT không gây ngoại lệ, nhưng chuỗi rỗng thường tốt hơn vì:

  • Tránh logic phức tạp xử lý NULL (IS NULL/IS NOT NULL).
  • Một số hàm/ORMapping hoạt động nhất quán hơn với chuỗi rỗng.
  • NULL ép hệ thống làm thêm việc (kiểm tra bitmap NULL).

Tuy nhiên, chọn tùy theo ngữ nghĩa nghiệp vụ: NULL = "chưa biết/không áp dụng", '' = "biết rõ là rỗng".