कॉलम को 'NOT NULL' घोषित करने का मतलब है कि यह कॉलम NULL मान स्वीकार नहीं करेगा लेकिन शून्य (0) और खाली स्ट्रिंग स्वयं एक मान हैं। इसलिए, यदि हम NOT NULL के रूप में परिभाषित MySQL कॉलम में शून्य या खाली स्ट्रिंग डालना चाहते हैं तो कोई समस्या नहीं होगी। 0 और खाली स्ट्रिंग की NULL के साथ निम्न तुलना इसे स्पष्ट करेगी -
mysql> Select 0 IS NULL, 0 IS NOT NULL; +-----------+---------------+ | 0 IS NULL | 0 IS NOT NULL | +-----------+---------------+ | 0 | 1 | +-----------+---------------+ 1 row in set (0.00 sec)
उपरोक्त रिजल्ट सेट दिखाता है कि शून्य (0) NULL नहीं है। इसका मतलब शून्य (0) स्वयं एक मान है क्योंकि हम जानते हैं कि NULL का मतलब NO VALUE है।
mysql> Select '' IS NULL, '' IS NOT NULL; +------------+----------------+ | '' IS NULL | '' IS NOT NULL | +------------+----------------+ | 0 | 1 | +------------+----------------+ 1 row in set (0.00 sec)
उपरोक्त रिजल्ट सेट दिखाता है कि खाली स्ट्रिंग ('') NULL नहीं है। इसका मतलब खाली स्ट्रिंग ('') स्वयं एक मान है क्योंकि हम जानते हैं कि NULL का मतलब NO VALUE है।
उदाहरण
mysql> create table test(id int NOT NULL, Name Varchar(10));
Query OK, 0 rows affected (0.19 sec)
mysql> Insert into test(id, name) values('1', 'Gaurav'),('0','Rahul'),('','Aarav');
Query OK, 3 rows affected, 1 warning (0.08 sec)
Records: 3 Duplicates: 0 Warnings: 1
Warning (Code 1366): Incorrect integer value: '' for column 'id' at row 3
mysql> Select * from test;
+----+--------+
| id | Name |
+----+--------+
| 1 | Gaurav |
| 0 | Rahul |
| 0 | Aarav |
+----+--------+
3 rows in set (0.00 sec)
उपरोक्त रिजल्ट सेट से, यह देखा जा सकता है कि हम NOT NULL घोषित कॉलम में शून्य (0) और खाली स्ट्रिंग ('') डाल सकते हैं।