SQL NULL
1. 定義
維基百科:
空值
(null 或 NULL)是結(jié)構(gòu)化查詢語言中使用的特殊標記,是對屬性未知或缺失的一種標識。
慕課解釋:空值常用于表示某個字段為空;一般地,如果某個字段可以為空,該字段默認為
NULL
。
2. 前言
本小節(jié),我們將一起學習 SQL NULL
。
NULL 是 SQL 中一個頗為特殊的值,它是所有可以為空字段的默認值,它只能由一個運算符 IS
來比較。
3. 介紹
NULL 常出現(xiàn)在以下兩種情況:
- 如字段是可以為空,且未被插入和更新,則該字段默認為 NULL。
- 顯式的設(shè)置字段為 NULL。
3.1 實例
我們以一個例子來說明 NULL:
新建imooc_user
表,并向其中插入一些數(shù)據(jù),如下:
DROP TABLE IF EXISTS imooc_user;
CREATE TABLE imooc_user
(
username varchar(20),
age int
);
INSERT INTO imooc_user(username) VALUES('jerry');
INSERT INTO imooc_user(username,age)
VALUES('pedro', 23), ('mike', NULL);
操作成功后結(jié)果如下:
+----------+--------+
| username | age |
+----------+--------+
| jerry | <null> |
| pedro | 23 |
| mike | <null> |
+----------+--------+
從結(jié)果中可以得到:
- jerry 在插入時,并未顯式指定 age 的值,插入后 age 值為NULL。
- mike 在插入時,顯式的指定 age 值為NULL,插入后 age 值也為NULL。
4. NULL比較
NULL 比較特殊,無法跟其他值一樣通過 =、> 等運算符進行比較;NULL 必須使用IS
和IS NOT
進行比較。
IS NULL
表示字段為空。
IS NOT NULL
表示字段非空。
4.1 例1 查詢 age 非空
請書寫 SQL 語句,查詢imooc_user
表中age
字段非空的用戶名。
分析:
使用 Select 搭配 Where,且查詢條件為 age 非空,即age IS NOT NULL
。
語句:
整理可得語句如下:
SELECT username FROM imooc_user WHERE age IS NOT NULL;
結(jié)果如下:
+----------+
| username |
+----------+
| pedro |
+----------+
4.2 例2 查詢 age 為空
請書寫 SQL 語句,查詢imooc_user
表中age
字段為空的用戶名。
分析:
使用 Select 搭配 Where,且查詢條件為 age 為空,即age IS NULL
。
語句:
整理可得語句如下:
SELECT username FROM imooc_user WHERE age IS NULL;
結(jié)果如下:
+----------+
| username |
+----------+
| jerry |
| mike |
+----------+
5. 小結(jié)
- NULL與其它值不同,因此處理方式也不同,需要搭配
IS
使用。 - NULL與
0
值也不是等價的,它們無法比較。