การเปลี่ยน Collation ของตารางใน MySQL
คุณสามารถใช้คำสั่ง ALTER TABLE เพื่อเปลี่ยน collation ของตารางได้ในบรรทัดเดียว คำสั่งนี้จะเปลี่ยน collation เริ่มต้นของตารางและคอลัมน์ใหม่ที่จะสร้างขึ้นในอนาคต
ไวยากรณ์
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;
ผลลัพธ์ (ตัวอย่าง - collation เริ่มต้นอาจเป็น utf8mb4_0900_ai_ci):
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
เปลี่ยน collation เป็น utf8_general_ci (หรือ utf8_bin ตามต้องการ):
ALTER TABLE CollateDemo COLLATE utf8_general_ci;
ตรวจสอบอีกครั้งหลังเปลี่ยน:
SHOW CREATE TABLE CollateDemo;
ผลลัพธ์จะแสดง collation ใหม่ในระดับตาราง และคอลัมน์ VARCHAR จะมี CHARACTER SET และ COLLATE เฉพาะตัว
หมายเหตุสำคัญ
utf8_bin- เปรียบเทียบแบบ binary (case-sensitive, accent-sensitive)utf8_general_ci- ไม่สนใจ case และ accent (ci = case insensitive)utf8mb4แนะนำให้ใช้แทน utf8 เพรองรองรับอักขระ Unicode เต็มรูปแบบ (รวม emoji)- การเปลี่ยน collation ระดับตารางจะส่งผลต่อคอลัมน์ใหม่เท่านั้น คอลัมน์เก่าอาจยังคง collation เดิมอยู่