1. 程式人生 > SQL入門教學 >11 SQL NULL

11 SQL NULL

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 必須使用ISIS 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值也不是等價的,它們無法比較。