SQL - NULL 值



SQL 使用術語NULL表示資料庫中不存在的資料值。這些值與空字串或零不同。它們在資料庫中不佔用任何空間,用於表示值不存在或資料欄位中的未知值。

值可能為 NULL 的一些常見原因 -

  • 在資料輸入期間可能未提供該值。

  • 該值尚不清楚。

由於 NULL 值基本上是不存在的,因此您不能使用諸如=<>之類的比較運算子。但是,您可以使用 IS NULL、"NOT NULL" 或 IS NOT NULL 運算子檢查值是否為 NULL。

建立沒有 NULL 值的表

NULL 值可以插入表的任何列中,因為它們與任何特定資料型別無關。但是,當列使用 "NOT NULL" 關鍵字定義時,每當您嘗試將 NULL 值插入該特定列時,都會引發錯誤。

語法

建立表時NOT NULL的基本語法如下 -

CREATE TABLE table-name (
   column1 datatype NOT NULL,
   column2 datatype NOT NULL,
   ...
   columnN datatype
);

這裡,NOT NULL 表示列應始終接受給定資料型別的顯式值。您可以將 NULL 值插入我們未使用 NOT NULL 的列中。

示例

讓我們使用 CREATE 語句在 SQL 資料庫中建立一個名為CUSTOMERS的表,如下面的查詢所示 -

CREATE TABLE CUSTOMERS(
   ID INT NOT NULL,
   NAME VARCHAR (20) NOT NULL,
   AGE INT NOT NULL,
   ADDRESS CHAR (25) ,
   SALARY DECIMAL (18, 2),
   PRIMARY KEY (ID)
);

讓我們使用以下查詢將一些值插入到上面建立的表中 -

INSERT INTO CUSTOMERS VALUES 
(1, 'Ramesh', 32, 'Ahmedabad', 2000.00),
(2, 'Khilan', 25, 'Delhi', 1500.00),
(3, 'Kaushik', 23, 'Kota', 2000.00),
(4, 'Chaitali', 25, 'Mumbai', 6500.00),
(5, 'Hardik', 27, 'Bhopal', 8500.00),
(6, 'Komal', 22, 'Hyderabad', NULL),
(7, 'Muffy', 24, 'Indore', NULL);

表已成功建立在資料庫中。

ID 姓名 年齡 地址 薪資
1 Ramesh 32 Ahmedabad 2000.00
2 Khilan 25 Delhi 1500.00
3 Kaushik 23 Kota 2000.00
4 Chaitali 25 Mumbai 6500.00
5 Hardik 27 Bhopal 8500.00
6 Komal 22 Hyderabad NULL
7 Muffy 24 Indore NULL

現在,讓我們檢索表中不為 null 的記錄,使用IS NOT NULL運算子 -

SELECT ID, NAME, AGE, ADDRESS, SALARY 
FROM CUSTOMERS 
WHERE SALARY IS NOT NULL;

以上查詢將產生以下結果 -

ID 姓名 年齡 地址 薪資
1 Ramesh 32 Ahmedabad 2000.00
2 Khilan 25 Delhi 1500.00
3 Kaushik 23 Kota 2000.00
4 Chaitali 25 Mumbai 6500.00
5 Hardik 27 Bhopal 8500.00

您還可以使用 SELECT 查詢中的IS NULL運算子檢索表中存在的 NULL 記錄,如下所示 -

SELECT ID, NAME, AGE, ADDRESS, SALARY 
FROM CUSTOMERS 
WHERE SALARY IS NULL;

以上查詢將產生以下結果 -

ID 姓名 年齡 地址 薪資
6 Komal 22 Hyderabad NULL
7 Muffy 24 Indore NULL

更新表中的 NULL 值

您可以使用 SQL 中的UPDATE語句更新表中存在的 NULL 值。為此,您可以在 WHERE 子句中使用 IS NULL 運算子過濾包含 NULL 值的行,然後使用 SET 關鍵字設定新值。

示例

考慮前面建立的表並使用UPDATE語句更新表中存在的 NULL 值,如下所示 -

UPDATE CUSTOMERS SET SALARY = 9000 WHERE SALARY IS NULL;

輸出

執行上述查詢時,將獲得如下輸出 -

Query OK, 2 rows affected (0.01 sec)
Rows matched: 2  Changed: 2  Warnings: 0

驗證

讓我們使用以下查詢驗證表中指定的記錄是否已更新 -

SELECT * FROM CUSTOMERS;

執行上述查詢後,將顯示如下輸出 -

ID 姓名 年齡 地址 薪資
1 Ramesh 32 Ahmedabad 2000.00
2 Khilan 25 Delhi 1500.00
3 Kaushik 23 Kota 2000.00
4 Chaitali 25 Mumbai 6500.00
5 Hardik 27 Bhopal 8500.00
6 Komal 22 Hyderabad 9000.00
7 Muffy 24 Indore 9000.00

刪除具有 NULL 值的記錄

您可以使用 DELETE FROM 語句從表中刪除包含 NULL 值的記錄。您首先使用 WHERE 子句中的 IS NULL 運算子檢查表中是否存在 NULL 值,然後刪除篩選的記錄。

示例

考慮前面建立的 CUSTOMERS 表並使用DELETE語句刪除表中存在的 NULL 值,如下所示 -

DELETE FROM CUSTOMERS WHERE SALARY IS NULL;

輸出

執行上述查詢時,將獲得如下輸出 -

Query OK, 2 rows affected (0.01 sec)

驗證

讓我們透過使用 SELECT 語句顯示錶來驗證表中篩選的記錄是否已刪除。

SELECT * FROM CUSTOMERS;

表將顯示為 -

ID 姓名 年齡 地址 薪資
1 Ramesh 32 Ahmedabad 2000.00
2 Khilan 25 Delhi 1500.00
3 Kaushik 23 Kota 2000.00
4 Chaitali 25 Mumbai 6500.00
5 Hardik 27 Bhopal 8500.00
廣告