如何在具有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)
廣告