MySQL में टेबल का कॉलेशन बदलने के लिए ALTER TABLE कमांड का उपयोग करें। ध्यान दें: शीर्षक में utf8_bin लिखा है लेकिन उदाहरण में utf8_general_ci उपयोग किया गया है। यहां दोनों विकल्प दिखाए गए हैं।
सिंटैक्स
-- utf8_general_ci के लिए
ALTER TABLE yourTableName COLLATE utf8_general_ci;
-- utf8_bin के लिए (केस-सेंसिटिव)
ALTER TABLE yourTableName COLLATE utf8_bin;
उदाहरण के साथ समझें
पहले एक टेबल बनाते हैं:
CREATE TABLE CollateDemo (
Id INT NOT NULL AUTO_INCREMENT,
Name VARCHAR(20),
Age INT,
PRIMARY KEY(Id)
);
टेबल की वर्तमान संरचना देखें:
SHOW CREATE TABLE CollateDemo;
आउटपुट (डिफॉल्ट कॉलेशन):
CREATE TABLE `collatedemo` (
`Id` int(11) NOT NULL AUTO_INCREMENT,
`Name` varchar(20) DEFAULT NULL,
`Age` int(11) DEFAULT NULL,
PRIMARY KEY (`Id`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_0900_ai_ci
कॉलेशन बदलें
ALTER TABLE CollateDemo COLLATE utf8_general_ci;
फिर से संरचना जांचें:
SHOW CREATE TABLE CollateDemo;
आउटपुट (बदला हुआ कॉलेशन):
CREATE TABLE `collatedemo` (
`Id` int(11) NOT NULL AUTO_INCREMENT,
`Name` varchar(20) CHARACTER SET utf8mb4 COLLATE utf8mb4_0900_ai_ci DEFAULT NULL,
`Age` int(11) DEFAULT NULL,
PRIMARY KEY (`Id`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8 COLLATE=utf8_general_ci
महत्वपूर्ण नोट्स
utf8_general_ci- केस-इनसेंसिटिव तुलना के लिए (डिफॉल्ट)utf8_bin- केस-सेंसिटिव बाइनरी तुलना के लिए- कॉलेशन बदलने से मौजूदा डेटा प्रभावित नहीं होता, केवल नई तुलनाओं पर लागू होता है
- कॉलम-स्तर पर कॉलेशन टेबल डिफॉल्ट को ओवरराइड करता है