Computer >> Máy Tính >  >> Lập trình >> MySQL

Cái nào tốt hơn để chèn NULL hoặc chuỗi trống trong MySQL?

Trong innoDB, NULL chiếm ít không gian hơn so với chuỗi trống. Ngoài ra, độ dài NULL không bằng rỗng trong khi độ dài của chuỗi trống là 0.

Để hiểu điều này, một bảng được tạo với sự trợ giúp của lệnh create được cung cấp asfollows -

mysql> CREATE table DemoEmptyAndNULL
-> (
-> Message varchar(100)
-> );
Query OK, 0 rows affected (0.49 sec)

Sau khi tạo bảng thành công, một bản ghi trống sẽ được chèn vào bảng với sự trợ giúp của lệnh chèn như sau -

mysql> INSERT into DemoEmptyAndNULL values(' ');
Query OK, 1 row affected (0.17 sec)

Sau khi chèn bản ghi, chúng ta có thể hiển thị tất cả các bản ghi với sự trợ giúp của lệnh select như sau -

mysql> SELECT * from DemoEmptyAndNULL;

Sau khi thực hiện truy vấn trên, kết quả sau sẽ nhận được -

+---------+
| Message |
+---------+
|         |
+---------+
1 row in set (0.00 sec)

Cú pháp để kiểm tra độ dài của một chuỗi trống với sự trợ giúp của hàm đếm được tích hợp sẵn là asfollow -

select count(column_name) from yourTableName;

Cú pháp trên được sử dụng để lấy độ dài của một chuỗi trống được đưa ra như sau -

mysql> select count(message) from DemoEmptyAndNULL;

Sau khi thực hiện truy vấn trên, sau đây là kết quả -

+----------------+
| count(message) |
+----------------+
| 1              |
+----------------+
1 row in set (0.06 sec)

Từ kết quả trên, rõ ràng là độ dài của chuỗi rỗng là 1.

Bây giờ chúng ta sẽ kiểm tra độ dài của NULL. Đầu tiên, bản ghi đã được chèn vào bảng sẽ bị xóa bằng lệnh xóa như sau -

mysql> delete from DemoEmptyAndNULL where message=' ';
Query OK, 1 row affected (0.19 sec)

Truy vấn sau được sử dụng để kiểm tra xem hiện không có bản ghi nào trong bảng

mysql> SELECT * from DemoEmptyAndNULL;
Empty set (0.00 sec)

Bây giờ, bản ghi có giá trị null được chèn vào bảng như sau -

mysql> INSERT into DemoEmptyAndNULL values();
Query OK, 1 row affected (0.18 sec)

Bản ghi được hiển thị bằng lệnh select và kết quả thu được như sau -

+---------+
| Message |
+---------+
| NULL    |
+---------+
1 row in set (0.00 sec)

Bây giờ, chỉ có một bản ghi có giá trị null trong bảng. Để tìm độ dài của nó, sau khi truy vấn được sử dụng -

mysql> select count(message) from DemoEmptyAndNULL;

Sau đây là kết quả của truy vấn trên -

+----------------+
| count(message) |
+----------------+
| 0              |
+----------------+
1 row in set (0.00 sec)

Kết quả ở trên có nghĩa là số đếm là 0 cho giá trị null.

Hãy để chúng tôi kiểm tra phiên bản MySQL.

mysql> select version();
+-----------+
| version() |
+-----------+
| 8.0.12    |
+-----------+
1 row in set (0.06 sec)

Vì vậy, tốt hơn là sử dụng chuỗi trống cho cơ sở dữ liệu vì cho phép giá trị NULL buộc hệ thống phải hoạt động và không cung cấp dữ liệu mà bạn đang tìm kiếm. Tuy nhiên, NULL không ném ra bất kỳ ngoại lệ nào khi hàm count () được thực thi.