ALTER TABLE ... MODIFY COLUMN स्टेटमेंट का उपयोग करके किसी कॉलम के डेटा प्रकार का आकार (लंबाई) बदल सकते हैं।
मूल टेबल संरचना (Student):
mysql> DESCRIBE Student;
+--------+-------------+------+-----+---------+-------+
| Field | Type | Null | Key | Default | Extra |
+--------+-------------+------+-----+---------+-------+
| Name | varchar(20) | YES | | NULL | |
| RollNo | int(11) | YES | | NULL | |
| Grade | varchar(10) | YES | | NULL | |
+--------+-------------+------+-----+---------+-------+
Name कॉलम को VARCHAR(20) से VARCHAR(50) में बढ़ाना:
mysql> ALTER TABLE Student MODIFY column Name Varchar(50);
Query OK, 3 rows affected (0.85 sec)
Records: 3 Duplicates: 0 Warnings: 0
mysql> DESCRIBE Student;
+--------+-------------+------+-----+---------+-------+
| Field | Type | Null | Key | Default | Extra |
+--------+-------------+------+-----+---------+-------+
| Name | varchar(50) | YES | | NULL | |
| RollNo | int(11) | YES | | NULL | |
| Grade | varchar(10) | YES | | NULL | |
+--------+-------------+------+-----+---------+-------+
परिणाम: Name कॉलम का आकार 20 से 50 हो गया।
आकार घटाने पर सावधानी:
-- यदि सभी मौजूदा नाम 15 कैरेक्टर से कम हैं
ALTER TABLE Student MODIFY column Name Varchar(15);
- Strict Mode (डिफ़ॉल्ट MySQL 5.7+) में: यदि कोई मान नई सीमा से बड़ा है → एरर, कोई बदलाव नहीं
- Non-Strict Mode में: डेटा काट दिया जाता है (ट्रंकेट), वार्निंग के साथ
प्रदर्शन नोट:
- बड़ी टेबल पर आकार बदलना टेबल पुनर्निर्माण करता है (धीमा, लॉक)
ALGORITHM=INPLACE(MySQL 5.6+) कुछ मामलों में लॉक कम करता है- इंडेक्स वाले कॉलम पर आकार बदलने से इंडेक्स पुनर्निर्मित होता है
सर्वोत्तम अभ्यास:
- भविष्य की आवश्यकताओं को ध्यान में रखकर पर्याप्त आकार दें
- अनिश्चित लंबाई के लिए
TEXTयाVARCHAR(255)+ उपयोग करें - उत्पादन पर आकार घटाने से पहले बैकअप लें और टेस्ट करें