MySQL中空值Null和空字符‘‘的具體使用

1. 空值 Null 和空字符 ''

日常開發中,一般都會涉及到數據庫增刪改查,那麼不可避免會遇到 MySQL 中的 NULL 和空字符 '',二者表面上看都是空,其實存在一些差異的

  • 空值 NULL 的長度是 NULL,不確定占用瞭多少存儲空間,它是占用存儲空間的
  • 空字符串 '' 的長度是 0,是不占用空間的*

通俗的講:空字符串 '' 就像是一個真空狀態的杯子,什麼都沒有;而空值 NULL 就像是一個裝滿空氣的杯子,是有東西的。二者雖然看起來都是空的、透明的,但是有著本質的區別

2. 空值 Null 和空字符 '' 在查詢方式上的對比

2.1. 創建 SQL 腳本

CREATE TABLE `test_1` (
  `id` int(11) NOT NULL AUTO_INCREMENT,
  `username` varchar(255) DEFAULT NULL,
  `password` varchar(255) NOT NULL,
  PRIMARY KEY (`id`)
) ENGINE=InnoDB AUTO_INCREMENT=5 DEFAULT CHARSET=utf8mb4;

--插入數據
INSERT INTO test_1 VALUES(1,'李斯','111111');
INSERT INTO test_1 VALUES(2,'','');
INSERT INTO test_1 VALUES(3,null,'');
INSERT INTO test_1 VALUES(4,null,1);

表中的數據如下,註意 null 值與 ''

在這裡插入圖片描述

2.2. 查詢 username 列為空字符串 '' 的所有數據

在這裡插入圖片描述

2.3. 查詢 username 列為空值 null 的所有數據

2.3.1. 錯誤 SQL

在這裡插入圖片描述

2.3.2. 正確 SQL

在這裡插入圖片描述

2.4. 查詢 username 列不為空值 null 的所有數據

2.4.1. 錯誤 SQL

在這裡插入圖片描述

2.4.2. 正確 SQL

在這裡插入圖片描述

  • 比較字符 =,>,< ,<>!= 都不能用於查詢比較 null 值,如果需要查詢空值 null,必須使用 is nullis not null
  • 空值 '' 可以使用 =, !=, <, > 等算術運算符來查詢的

3. 空值 Null 和空字符 '' 在 count() 函數查詢的對比

3.1. 查詢 username 列數據總數

在這裡插入圖片描述

使用 count() 的時候,空值 null 並不會被當成有效值去統計的

空字符串 '' 是會被 count() 函數所統計的

4. MySQL 中的比較運算符

運算符 含義
= 等於
<=> 安全等於,可以比較 null
<> 或 != 不等於
>= 大於等於
<= 小於等於
> 大於
< 小於
IS NULL 判斷一個值是否為 null
IS NOT NULL 判斷一個值是否不為 null

到此這篇關於MySQL中空值Null和空字符‘‘的具體使用的文章就介紹到這瞭,更多相關MySQL 空值Null和空字符‘‘內容請搜索WalkonNet以前的文章或繼續瀏覽下面的相關文章希望大傢以後多多支持WalkonNet!

推薦閱讀: