Computer >> Hướng Dẫn Máy Tính >  >> Lập Trình >> MySQL

Cách thay đổi collation thành utf8_bin trong MySQL một dòng lệnh

Để 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ấu
  • utf8_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 ... COLLATE chỉ 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 utf8mb4 thay vì utf8 để hỗ trợ đầy đủ Unicode (kể cả emoji)