在 MySQL 中插入 NULL 還是空字串哪個更好?
在 InnoDB 中,NULL 佔用的空間比空字串小。此外,NULL 的長度為 null,而空字串的長度為 0。
為了理解這一點,我們將使用 create 命令建立一個表,如下所示:
mysql> CREATE table DemoEmptyAndNULL -> ( -> Message varchar(100) -> ); Query OK, 0 rows affected (0.49 sec)
成功建立表後,我們將使用 insert 命令向表中插入一條空記錄,如下所示:
mysql> INSERT into DemoEmptyAndNULL values(' ');
Query OK, 1 row affected (0.17 sec)插入記錄後,我們可以使用 select 命令顯示所有記錄,如下所示:
mysql> SELECT * from DemoEmptyAndNULL;
執行上述查詢後,將獲得以下輸出:
+---------+ | Message | +---------+ | | +---------+ 1 row in set (0.00 sec)
使用內建函式 count 檢查空字串長度的語法如下:
select count(column_name) from yourTableName;
上述語法用於獲取空字串的長度,如下所示:
mysql> select count(message) from DemoEmptyAndNULL;
執行上述查詢後,輸出如下:
+----------------+ | count(message) | +----------------+ | 1 | +----------------+ 1 row in set (0.06 sec)
從以上輸出可以看出,空字串的長度為 1。
現在我們將檢查 NULL 的長度。首先,我們將使用 delete 命令刪除插入到表中的記錄,如下所示:
mysql> delete from DemoEmptyAndNULL where message=' '; Query OK, 1 row affected (0.19 sec)
以下查詢用於檢查表中當前是否沒有記錄
mysql> SELECT * from DemoEmptyAndNULL; Empty set (0.00 sec)
現在,我們將帶有 null 值的記錄插入到表中,如下所示:
mysql> INSERT into DemoEmptyAndNULL values(); Query OK, 1 row affected (0.18 sec)
使用 select 命令顯示記錄,獲得的輸出如下:
+---------+ | Message | +---------+ | NULL | +---------+ 1 row in set (0.00 sec)
現在,表中只有一條帶有 null 值的記錄。要查詢其長度,我們將使用以下查詢:
mysql> select count(message) from DemoEmptyAndNULL;
以下是上述查詢的輸出:
+----------------+ | count(message) | +----------------+ | 0 | +----------------+ 1 row in set (0.00 sec)
上述輸出表示 null 值的 count 為 0。
讓我們檢查 MySQL 版本。
mysql> select version(); +-----------+ | version() | +-----------+ | 8.0.12 | +-----------+ 1 row in set (0.06 sec)
因此,最好對資料庫使用空字串,因為允許 NULL 值會強制系統執行額外的工作,並且不會提供您正在查詢的資料。但是,當執行 count() 函式時,NULL 不會丟擲任何異常。
廣告
資料結構
網路
關係型資料庫管理系統
作業系統
Java
iOS
HTML
CSS
Android
Python
C 程式設計
C++
C#
MongoDB
MySQL
Javascript
PHP