如何在具有NOT NULL約束的MySQL表中的字元型別列中插入NULL關鍵字作為值?


完全可以將NULL關鍵字作為值插入到具有NOT NULL約束的字元型別列中,因為NULL本身就是一個值。以下示例將展示這一點:

示例

假設我們有一個名為test2的表,它有一個字元型別列'Name',並且在其上具有NOT NULL約束。可以使用DESCRIBE語句檢查這一點:

mysql> Describe test2\G
*************************** 1. row ***************************
  Field: id
   Type: int(11)
   Null: NO
    Key:
Default: NULL
  Extra:
*************************** 2. row ***************************
  Field: NAME
   Type: varchar(20)
   Null: NO
    Key:
Default: NULL
  Extra:
2 rows in set (0.03 sec) 

現在,藉助以下查詢,我們可以將NULL作為值插入到'Name'列中。

mysql> Insert into test2 values(2, 'NULL');
Query OK, 1 row affected (0.06 sec)

mysql> select * from test2;
+----+--------+
| id | NAME   |
+----+--------+
|  1 | Gaurav |
|  2 | NULL   |
+----+--------+
2 rows in set (0.00 sec) 

為了理解'NULL'和'NULL作為值'之間的區別,我們可以執行以下兩個查詢:

mysql> delete from test2 where name IS NULL;
Query OK, 0 rows affected (0.00 sec) 

上述查詢影響0行,這意味著沒有NULL行。可以從SELECT查詢中檢查沒有刪除任何行。

mysql> select * from test2;
+----+--------+
| id | NAME   |
+----+--------+
|  1 | Gaurav |
|  2 | NULL   |
+----+--------+
2 rows in set (0.00 sec)

mysql> delete from test2 where name = 'NULL';
Query OK, 1 row affected (0.09 sec) 

上述查詢影響1行,這意味著有一行具有NULL作為值。可以從SELECT查詢中檢查到在'NAME'列中具有NULL值的行的確已被刪除。

mysql> select * from test2;
+----+--------+
| id | NAME   |
+----+--------+
|  1 | Gaurav |
+----+--------+
1 row in set (0.00 sec)

更新於:2020年6月19日

瀏覽量:175

開啟你的職業生涯

完成課程獲得認證

開始學習
廣告