TECH NOTES / 中间件与数据
MySQL 修改库、表与字段的字符集
原笔记 2022-09-07 · 整理于 2026-10-05
MySQL 库、表、字段字符集修改语句,以及默认字符集和数据转换的区别。
以下是语法模板:
character_name、column_definition和方括号部分需要替换,不能原样执行。改变默认字符集不等于转换已有列;修改列时还要保留长度、空值、默认值等完整定义。转换前备份,并核对索引长度和目标字符集的可表示范围。
# 修改数据库字符集
ALTER DATABASE db_name DEFAULT CHARACTER SET character_name [COLLATE ...];
# 把表默认的字符集和所有字符列(CHAR,VARCHAR,TEXT)改为新的字符集:
ALTER TABLE tbl_name CONVERT TO CHARACTER SET character_name [COLLATE ...];
# 如:ALTER TABLE logtest CONVERT TO CHARACTER SET utf8 COLLATE utf8_general_ci;
# 只是修改表的默认字符集:
ALTER TABLE tbl_name DEFAULT CHARACTER SET character_name [COLLATE...];
# 如:ALTER TABLE logtest DEFAULT CHARACTER SET utf8 COLLATE utf8_general_ci;
# 修改字段的字符集:
ALTER TABLE tbl_name CHANGE c_name c_name column_definition CHARACTER SET character_name [COLLATE ...];
# 如:ALTER TABLE logtest CHANGE title title VARCHAR(100) CHARACTER SET utf8 COLLATE utf8_general_ci;
# 查看数据库编码:
SHOW CREATE DATABASE db_name;
# 查看表编码:
SHOW CREATE TABLE tbl_name;
# 查看字段编码:
SHOW FULL COLUMNS FROM tbl_name;