MySQL ENUM डेटा प्रकार: NOT NULL के साथ और बिना व्यवहार का अंतर
ENUM डेटा प्रकार में, यदि आप NOT NULL घोषित नहीं करते हैं, तो डिफ़ॉल्ट मान NULL होता है। लेकिन यदि आप NOT NULL घोषित करते हैं, तो यह ENUM सूची का पहला मान लेता है।
केस 1: NOT NULL के बिना (डिफ़ॉल्ट NULL)
टेबल बनाना
mysql> CREATE TABLE DemoTable1 (isMarried ENUM('YES', 'NO'));
मान डाले बिना रिकॉर्ड डालना
mysql> INSERT INTO DemoTable1 VALUES();
रिकॉर्ड देखना
mysql> SELECT * FROM DemoTable1;
आउटपुट:
+-----------+
| isMarried |
+-----------+
| NULL |
+-----------+
1 row in set (0.00 sec)
केस 2: NOT NULL के साथ (पहला ENUM मान डिफ़ॉल्ट)
टेबल बनाना
mysql> CREATE TABLE DemoTable2 (isMarried ENUM('YES', 'NO') NOT NULL);
मान डाले बिना रिकॉर्ड डालना
mysql> INSERT INTO DemoTable2 VALUES();
रिकॉर्ड देखना
mysql> SELECT * FROM DemoTable2;
आउटपुट:
+-----------+
| isMarried |
+-----------+
| YES |
+-----------+
1 row in set (0.00 sec)
मुख्य अंतर सारांश:
| परिदृश्य | डिफ़ॉल्ट मान | व्यवहार |
|---|---|---|
| ENUM बिना NOT NULL | NULL | स्पष्ट मान न देने पर NULL स्टोर होता है |
| ENUM साथ NOT NULL | पहला ENUM मान | स्पष्ट मान न देने पर पहला मान ('YES') स्टोर होता है |
व्यावहारिक प्रभाव
- NOT NULL के बिना: डेटा अखंडता जांच के लिए NULL की जांच करनी पड़ती है
- NOT NULL के साथ: डिफ़ॉल्ट मान पूर्वानुमानित होता है, लेकिन अनजाने में गलत डेटा दर्ज हो सकता है
- सर्वोत्तम अभ्यास: हमेशा स्पष्ट मान प्रदान करें या डिफ़ॉल्ट को स्पष्ट रूप से सेट करें:
ENUM('YES', 'NO') NOT NULL DEFAULT 'NO'
ENUM आंतरिक संग्रहण
ENUM मान आंतरिक रूप से पूर्णांक के रूप में संग्रहीत होते हैं (1 से शुरू): 'YES'=1, 'NO'=2। NULL मान 0 के रूप में संग्रहीत होता है।