MySQL में ALTER TABLE ... MODIFY कमांड का उपयोग करके आप किसी मौजूदा कॉलम का डेटा प्रकार बदल सकते हैं। यह स्कीमा विकास, डेटा प्रकार सुधार, या भंडारण अनुकूलन के लिए आवश्यक है।
उदाहरण तालिका बनाना
mysql> CREATE TABLE DemoTable (
StudentId VARCHAR(200) NOT NULL,
StudentName VARCHAR(20),
StudentAge INT,
StudentAddress VARCHAR(20),
StudentCountryName VARCHAR(20)
);
वर्तमान संरचना देखना
mysql> DESC DemoTable;
आउटपुट:
+--------------------+--------------+------+-----+---------+-------+ | Field | Type | Null | Key | Default | Extra | +--------------------+--------------+------+-----+---------+-------+ | StudentId | varchar(200) | NO | | NULL | | | StudentName | varchar(20) | YES | | NULL | | | StudentAge | int(11) | YES | | NULL | | | StudentAddress | varchar(20) | YES | | NULL | | | StudentCountryName | varchar(20) | YES | | NULL | | +--------------------+--------------+------+-----+---------+-------+
StudentId को VARCHAR से BIGINT में बदलना
mysql> ALTER TABLE DemoTable
-> MODIFY StudentId BIGINT(10) UNSIGNED NOT NULL DEFAULT 0;
आउटपुट: Query OK, 0 rows affected (1.51 sec)
बदली हुई संरचना सत्यापित करना
mysql> DESC DemoTable;
आउटपुट:
+--------------------+---------------------+------+-----+---------+-------+ | Field | Type | Null | Key | Default | Extra | +--------------------+---------------------+------+-----+---------+-------+ | StudentId | bigint(10) unsigned | NO | | 0 | | | StudentName | varchar(20) | YES | | NULL | | | StudentAge | int(11) | YES | | NULL | | | StudentAddress | varchar(20) | YES | | NULL | | | StudentCountryName | varchar(20) | YES | | NULL | | +--------------------+---------------------+------+-----+---------+-------+
महत्वपूर्ण विचार:
- डेटा संगतता: मौजूदा डेटा नए प्रकार के साथ संगत होना चाहिए। अमान्य डेटा त्रुटि या डेटा हानि का कारण बनेगा।
- डिफ़ॉल्ट मान:
NOT NULLकॉलम के लिए डिफ़ॉल्ट मान निर्दिष्ट करना आवश्यक हो सकता है। - इंडेक्स/विदेशी कुंजी: इंडेक्स या विदेशी कुंजी वाले कॉलम को बदलने के लिए उन्हें पहले ड्रॉप करना पड़ सकता है।
- प्रदर्शन: बड़ी तालिकाओं पर यह ऑपरेशन लॉकिंग और पुनर्निर्माण के कारण धीमा हो सकता है।