MySQL में किसी कॉलम से NOT NULL प्रतिबंध हटाने के लिए ALTER TABLE ... MODIFY COLUMN का उपयोग करें और कॉलम परिभाषा से NOT NULL हटा दें।
सिंटैक्स
ALTER TABLE yourTableName MODIFY COLUMN yourColumnName dataType;
नोट: नई परिभाषा में NOT NULL **नहीं** लिखें।
उदाहरण के साथ समझें
NOT NULL कॉलम के साथ टेबल बनाएं:
CREATE TABLE NotNullDemo (
Id INT NOT NULL AUTO_INCREMENT,
Name VARCHAR(20) NOT NULL,
PRIMARY KEY(Id)
);
NULL डालने का प्रयास (विफल होगा):
INSERT INTO NotNullDemo(Name) VALUES(NULL);
ERROR 1048 (23000): Column 'Name' cannot be null
NOT NULL प्रतिबंध हटाएं
ALTER TABLE NotNullDemo MODIFY COLUMN Name VARCHAR(20);
परिणाम: Query OK, 0 rows affected (1.78 sec)
अब NULL डालें - काम करेगा
INSERT INTO NotNullDemo(Name) VALUES(NULL);
INSERT INTO NotNullDemo(Name) VALUES('Sam');
INSERT INTO NotNullDemo(Name) VALUES('Mike');
INSERT INTO NotNullDemo(Name) VALUES(NULL);
INSERT INTO NotNullDemo(Name) VALUES(NULL);
INSERT INTO NotNullDemo(Name) VALUES('John');
सभी रिकॉर्ड देखें:
SELECT * FROM NotNullDemo;
आउटपुट:
+----+------+
| Id | Name |
+----+------+
| 1 | NULL |
| 2 | Sam |
| 3 | Mike |
| 4 | NULL |
| 5 | NULL |
| 6 | John |
+----+------+
संरचना सत्यापित करें
DESC NotNullDemo;
आउटपुट (Null = YES):
+-------+-------------+------+-----+---------+----------------+
| Field | Type | Null | Key | Default | Extra |
+-------+-------------+------+-----+---------+----------------+
| Id | int(11) | NO | PRI | NULL | auto_increment |
| Name | varchar(20) | YES | | NULL | |
+-------+-------------+------+-----+---------+----------------+
NOT NULL वापस जोड़ने के लिए
ALTER TABLE NotNullDemo MODIFY COLUMN Name VARCHAR(20) NOT NULL;
नोट: यदि टेबल में पहले से NULL मान हैं, तो यह विफल होगा। पहले NULL अपडेट करें।
एक साथ कॉलम टाइप और NULL बदलें
-- VARCHAR(20) NOT NULL → VARCHAR(50) NULL
ALTER TABLE NotNullDemo MODIFY COLUMN Name VARCHAR(50);
-- INT NULL → BIGINT NOT NULL
ALTER TABLE NotNullDemo MODIFY COLUMN Age BIGINT NOT NULL;
महत्वपूर्ण नोट्स
MODIFY COLUMNकॉलम परिभाषा पूरी तरह से बदल देता है- डिफॉल्ट मान, ऑटो_इन्क्रीमेंट, कमेंट भी पुनः निर्दिष्ट करें यदि रखने हों
- बड़े टेबल पर यह ऑपरेशन टेबल लॉक कर सकता है (MySQL 8.0+ में INSTANT DDL कुछ मामलों में)
CHANGE COLUMNनाम भी बदल सकता है,MODIFYकेवल परिभाषा