มีความเป็นไปได้ค่อนข้างมากที่จะแทรกคีย์เวิร์ด NULL เป็นค่าในคอลัมน์ประเภทอักขระที่มีข้อจำกัด NOT NULL เนื่องจาก NULL เป็นค่าในตัวเอง ตัวอย่างต่อไปนี้จะแสดงให้เห็น -
ตัวอย่าง
สมมติว่าเรามีตาราง test2 ที่มีคอลัมน์ประเภทอักขระ 'ชื่อ' พร้อมกับข้อ จำกัด ไม่ใช่ 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 เป็นค่าในคอลัมน์ 'ชื่อ'
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 ว่าแถวที่มี NULL เป็นค่าในคอลัมน์ 'NAME' ถูกลบไปแล้ว
mysql> select * from test2; +----+--------+ | id | NAME | +----+--------+ | 1 | Gaurav | +----+--------+ 1 row in set (0.00 sec)