11 SQL NULL
阿新 • • 發佈:2020-06-25
1. 定義
維基百科:
空值
(null 或 NULL)是結構化查詢語言中使用的特殊標記,是對屬性未知或缺失的一種標識。
解釋:空值常用於表示某個欄位為空;一般地,如果某個欄位可以為空,該欄位預設為
NULL
。
2. 前言
本小節,我們將一起學習 SQL NULL
。
NULL 是 SQL 中一個頗為特殊的值,它是所有可以為空欄位的預設值,它只能由一個運算子 IS
來比較。
3. 介紹
NULL 常出現在以下兩種情況:
- 如欄位是可以為空,且未被插入和更新,則該欄位預設為 NULL。
- 顯式的設定欄位為 NULL。
3.1 例項
我們以一個例子來說明 NULL:
新建imooc_user
表,並向其中插入一些資料,如下:
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);
操作成功後結果如下:
+----------+--------+ | username | age | +----------+--------+ | jerry | <null> | | pedro | 23 | | mike | <null> | +----------+--------+
從結果中可以得到:
- 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;
結果如下:
+----------+
| 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;
結果如下:
+----------+
| username |
+----------+
| jerry |
| mike |
+----------+
5. 小結
- NULL與其它值不同,因此處理方式也不同,需要搭配
IS
使用。 - NULL與
0
值也不是等價的,它們無法比較。