
- SQL 教程
- SQL - 首頁
- SQL - 概述
- SQL - RDBMS 概念
- SQL - 資料庫
- SQL - 語法
- SQL - 資料型別
- SQL - 運算子
- SQL - 表示式
- SQL 資料庫
- SQL - 建立資料庫
- SQL - 刪除資料庫
- SQL - 選擇資料庫
- SQL - 重新命名資料庫
- SQL - 顯示資料庫
- SQL - 備份資料庫
- SQL 表
- SQL - 建立表
- SQL - 顯示錶
- SQL - 重命名錶
- SQL - 截斷表
- SQL - 克隆表
- SQL - 臨時表
- SQL - 修改表
- SQL - 刪除表
- SQL - 刪除表
- SQL - 約束
- SQL 查詢
- SQL - 插入查詢
- SQL - 選擇查詢
- SQL - Select Into
- SQL - Insert Into Select
- SQL - 更新查詢
- SQL - 刪除查詢
- SQL - 排序結果
- SQL 檢視
- SQL - 建立檢視
- SQL - 更新檢視
- SQL - 刪除檢視
- SQL - 重新命名檢視
- SQL 運算子和子句
- SQL - Where 子句
- SQL - Top 子句
- SQL - Distinct 子句
- SQL - Order By 子句
- SQL - Group By 子句
- SQL - Having 子句
- SQL - AND & OR
- SQL - BOOLEAN (BIT) 運算子
- SQL - LIKE 運算子
- SQL - IN 運算子
- SQL - ANY, ALL 運算子
- SQL - EXISTS 運算子
- SQL - CASE
- SQL - NOT 運算子
- SQL - 不等於
- SQL - IS NULL
- SQL - IS NOT NULL
- SQL - NOT NULL
- SQL - BETWEEN 運算子
- SQL - UNION 運算子
- SQL - UNION vs UNION ALL
- SQL - INTERSECT 運算子
- SQL - EXCEPT 運算子
- SQL - 別名
- SQL 連線
- SQL - 使用連線
- SQL - 內連線
- SQL - 左連線
- SQL - 右連線
- SQL - 交叉連線
- SQL - 全連線
- SQL - 自連線
- SQL - 刪除連線
- SQL - 更新連線
- SQL - 左連線 vs 右連線
- SQL - Union vs Join
- SQL 鍵
- SQL - 唯一鍵
- SQL - 主鍵
- SQL - 外部索引鍵
- SQL - 組合鍵
- SQL - 備選鍵
- SQL 索引
- SQL - 索引
- SQL - 建立索引
- SQL - 刪除索引
- SQL - 顯示索引
- SQL - 唯一索引
- SQL - 叢集索引
- SQL - 非叢集索引
- 高階 SQL
- SQL - 萬用字元
- SQL - 註釋
- SQL - 注入
- SQL - 託管
- SQL - Min & Max
- SQL - 空函式
- SQL - 檢查約束
- SQL - 預設約束
- SQL - 儲存過程
- SQL - NULL 值
- SQL - 事務
- SQL - 子查詢
- SQL - 處理重複項
- SQL - 使用序列
- SQL - 自動遞增
- SQL - 日期和時間
- SQL - 遊標
- SQL - 公共表表達式
- SQL - Group By vs Order By
- SQL - IN vs EXISTS
- SQL - 資料庫調優
- SQL 函式參考
- SQL - 日期函式
- SQL - 字串函式
- SQL - 聚合函式
- SQL - 數值函式
- SQL - 文字和影像函式
- SQL - 統計函式
- SQL - 邏輯函式
- SQL - 遊標函式
- SQL - JSON 函式
- SQL - 轉換函式
- SQL - 資料型別函式
- SQL 有用資源
- SQL - 問答
- SQL - 快速指南
- SQL - 有用函式
- SQL - 有用資源
- SQL - 討論
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 |