ALTER TABLE ... MODIFY COLUMN कमांड का उपयोग करके किसी कॉलम का डेटा प्रकार बदल सकते हैं।
मूल टेबल संरचना:
mysql> DESCRIBE Student;
+--------+-------------+------+-----+---------+-------+
| Field | Type | Null | Key | Default | Extra |
+--------+-------------+------+-----+---------+-------+
| Name | varchar(20) | YES | | NULL | |
| RollNo | int(11) | YES | | NULL | |
| Grade | varchar(50) | YES | | NULL | |
+--------+-------------+------+-----+---------+-------+
RollNo को INT से VARCHAR(10) में बदलना:
mysql> Alter Table student Modify column RollNo Varchar(10);
Query OK, 3 rows affected (0.25 sec)
Records: 3 Duplicates: 0 Warnings: 0
mysql> Desc Student;
+--------+-------------+------+-----+---------+-------+
| Field | Type | Null | Key | Default | Extra |
+--------+-------------+------+-----+---------+-------+
| Name | varchar(20) | YES | | NULL | |
| RollNo | varchar(10) | YES | | NULL | |
| Grade | varchar(10) | YES | | NULL | |
+--------+-------------+------+-----+---------+-------+
महत्वपूर्ण विचार:
- डेटा हानि: छोटे आकार में बदलने पर डेटा कट सकता है
- असंगत डेटा: स्ट्रिंग को नंबर में बदलने पर अमान्य मान एरर देंगे या 0 बन जाएंगे
- इंडेक्स प्रभाव: इंडेक्स वाले कॉलम का प्रकार बदलने पर इंडेक्स पुनर्निर्मित होता है
- विदेशी कुंजी: FK कॉलम का प्रकार बदलने पर संबंधित टेबल भी बदलनी पड़ सकती है
सुरक्षित दृष्टिकोण:
- नया कॉलम सही प्रकार का जोड़ें
- डेटा नए कॉलम में कॉपी/कन्वर्ट करें
- पुराना कॉलम ड्रॉप करें
- नए कॉलम का नाम बदलें