Để thay đổi collation của bảng trong MySQL, bạn sử dụng lệnh ALTER TABLE với mệnh đề COLLATE.
Cú pháp
ALTER TABLE ten_bang COLLATE utf8_bin;
Lưu ý quan trọng: Ví dụ gốc sử dụng utf8_general_ci nhưng tiêu đề đề cập đến utf8_bin. Dưới đây là cả hai tùy chọn:
utf8_bin: So sánh nhị phân, phân biệt chữ hoa/thường và dấuutf8_general_ci: Không phân biệt chữ hoa/thường (case-insensitive)
Ví dụ minh họa
1. Tạo bảng kiểm thử
CREATE TABLE CollateDemo (
Id INT NOT NULL AUTO_INCREMENT,
Name VARCHAR(20),
Age INT,
PRIMARY KEY(Id)
);
2. Kiểm tra collation hiện tại
SHOW CREATE TABLE CollateDemo;
Kết quả mẫu:
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
3. Thay đổi collation
-- Thay đổi sang utf8_bin (phân biệt chữ hoa/thường, dấu)
ALTER TABLE CollateDemo COLLATE utf8_bin;
-- Hoặc utf8_general_ci (không phân biệt chữ hoa/thường)
ALTER TABLE CollateDemo COLLATE utf8_general_ci;
4. Kiểm tra lại sau khi thay đổi
SHOW CREATE TABLE CollateDemo;
Kết quả sau khi đổi sang utf8_general_ci:
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
Lưu ý quan trọng
- Lệnh
ALTER TABLE ... COLLATEchỉ thay đổi collation mặc định của bảng cho các cột mới được tạo sau này - Để thay đổi collation của các cột hiện có, cần dùng:
ALTER TABLE ten_bang MODIFY ten_cot VARCHAR(20) COLLATE utf8_bin; - MySQL 8.0+ khuyến nghị sử dụng
utf8mb4thay vìutf8để hỗ trợ đầy đủ Unicode (kể cả emoji)