Hoàn toàn có thể chèn từ khóa NULL làm giá trị trong cột kiểu ký tự có ràng buộc NOT NULL vì bản thân NULL là một giá trị. Ví dụ sau sẽ thể hiện nó -
Ví dụ
Giả sử chúng ta có một bảng test2 có cột kiểu ký tự 'Tên' cùng với ràng buộc NOT NULL trên nó. Nó có thể được kiểm tra từ câu lệnh DESCRIBE như sau -
mysql> Mô tả test2 \ G *************************** 1. hàng *********** **************** Trường:id Loại:int (11) Null:KHÔNG Khoá:Mặc định:NULL Thêm:*************** ************ 2. hàng *************************** Trường:TÊN Loại:varchar (20 ) Null:NO Key:Mặc định:NULL Thêm:2 hàng trong bộ (0,03 giây)
Bây giờ, với sự trợ giúp của truy vấn sau, chúng ta có thể chèn NULL làm giá trị trong cột ‘Tên’.
mysql> Chèn vào giá trị test2 (2, 'NULL'); Truy vấn OK, 1 hàng bị ảnh hưởng (0,06 giây) mysql> chọn * từ test2; + ---- + -------- + | id | TÊN | + ---- + -------- + | 1 | Gaurav || 2 | NULL | + ---- + -------- + 2 hàng trong bộ (0,00 giây)
Để hiểu sự khác biệt giữa ‘NULL’ và ‘NULL dưới dạng giá trị’, chúng ta có thể chạy hai truy vấn sau -
mysql> xóa khỏi test2 trong đó tên LÀ KHÔNG; Truy vấn OK, 0 hàng bị ảnh hưởng (0,00 giây)
Truy vấn trên ảnh hưởng đến 0 hàng, điều đó có nghĩa là không có hàng NULL. Có thể kiểm tra từ truy vấn CHỌN rằng không có hàng nào bị xóa.
mysql> select * from test2; + ---- + -------- + | id | TÊN | + ---- + -------- + | 1 | Gaurav || 2 | NULL | + ---- + -------- + 2 hàng trong bộ (0,00 giây) mysql> xóa khỏi test2 trong đó name ='NULL'; Truy vấn OK, 1 hàng bị ảnh hưởng (0,09 giây)Truy vấn trên ảnh hưởng đến 1 hàng, điều đó có nghĩa là có một hàng có NULL làm giá trị. Có thể kiểm tra từ truy vấn SELECT rằng hàng có NULL làm giá trị trong cột 'NAME' đã bị xóa.
mysql> select * from test2; + ---- + -------- + | id | TÊN | + ---- + -------- + | 1 | Gaurav | + ---- + -------- + 1 hàng trong bộ (0,00 giây)