NOT NULL कंस्ट्रेंट हटाने के लिए ALTER TABLE ... MODIFY का उपयोग करें
डिफ़ॉल्ट रूप से, MySQL कॉलम NULL मान अनुमति देते हैं जब तक कि NOT NULL निर्दिष्ट न हो। मौजूदा NOT NULL कंस्ट्रेंट को हटाने के लिए, कॉलम को उसी डेटा प्रकार के साथ MODIFY करें लेकिन NOT NULL के बिना।
चरण-दर-चरण उदाहरण
1. NOT NULL कंस्ट्रेंट के साथ टेबल बनाएं
mysql> CREATE TABLE AllowNullDemo (
-> id INT NOT NULL
-> );
2. रिकॉर्ड डालें (NULL के बिना)
mysql> INSERT INTO AllowNullDemo VALUES(); mysql> INSERT INTO AllowNullDemo VALUES();
नोट: मान प्रदान नहीं करने पर, MySQL संख्यात्मक प्रकारों के लिए 0 डालता है और चेतावनी देता है।
3. वर्तमान डेटा देखें
mysql> SELECT * FROM AllowNullDemo;
+----+ | id | +----+ | 0 | | 0 | +----+
4. कॉलम को NULL अनुमति देने के लिए संशोधित करें
mysql> ALTER TABLE AllowNullDemo MODIFY COLUMN id INT;
5. अब NULL डालें
mysql> INSERT INTO AllowNullDemo VALUES();
6. सत्यापित करें
mysql> SELECT * FROM AllowNullDemo;
+------+ | id | +------+ | 0 | | 0 | | NULL | +------+
सिंटैक्स
ALTER TABLE टेबल_नाम MODIFY COLUMN कॉलम_नाम डेटा_प्रकार;
महत्वपूर्ण विचार
- डेटा प्रकार दोहराएं: आपको पूर्ण डेटा प्रकार निर्दिष्ट करना होगा (सिर्फ
MODIFY COLUMN idकाम नहीं करेगा)। - डेटा हानि नहीं: यह ऑपरेशन मौजूदा डेटा को संरक्षित करता है।
- इंडेक्स प्रभाव: यदि कॉलम इंडेक्स का हिस्सा है, तो इंडेक्स NULL मानों को संभालेगा (InnoDB अनुमति देता है, कुछ स्टोरेज इंजन नहीं)।
- विदेशी कुंजी: यदि यह कॉलम विदेशी कुंजी द्वारा संदर्भित है, तो पहले FK हटाएं।
विपरीत: NULL से NOT NULL में बदलना
-- पहले सुनिश्चित करें कि कोई NULL मान मौजूद नहीं हैं UPDATE टेबल_नाम SET कॉलम_नाम = डिफ़ॉल्ट_मान WHERE कॉलम_नाम IS NULL; -- फिर संशोधित करें ALTER TABLE टेबल_नाम MODIFY COLUMN कॉलम_नाम डेटा_प्रकार NOT NULL;