Mysql表字符集更换

Mysql表字符集更换

字符集

1.系统默认设置字符集为 utf8mb4,校验规则为 utf8mb4_bin,但可根据应用需要在申请时选
择其他字符集。
2.绝大多数数据库产品 UTF8 字符集存储汉字占用 3 个字节(部分特殊汉字占用 4 个字节),存
储英文字符占用 1 个字节。而 MYSQL 默认按字符方式存储数据,对于汉字,例如 varchar(10)
可以存 10 个汉字。
在从其它数据库产品迁移到 MYSQL 数据库(UTF8 字符集)的情况下,无需担心字符集转
换问题。因为 utf8mb4 完全兼容 utf8,且支持 emoji 表情及更多的字符,唯一不足的是,
utf8mb4 会占用更多的空间,一个字符最多占用 4 个字节(部分特殊汉字,emoji 表情),存储
普通汉字和存储英文字符占用的字节和 UTF8 一样。

校验规则

字符集校验规则校验规则说明
utf8mb4utf8mb4_bin将字符串每个字符用二进制数据编译存储,区分大小写,而且可以存二进制的内容
utf8mb4utf8mb4_general_ ci不区分大小写。没有实现 Unicode 校验规则,在遇到某些特殊语言或者字符集,排序结果可能不一致,但是,在绝大多数情况下,这些特殊字符的顺序并不需要那么精确。
utf8mb4utf8mb4_general_ cs区分大小写
utf8mb4utf8mb4_unicode_ ci是基于标准的 Unicode 来排序和比较,能够在各种语言之间精确排序,Unicode 校验规则为了能够处理特殊字符的情况,实现了略微复杂的排序算法,仅部分支持 Unicode 校对规则算法,一些字符还是不能支持。

字符集级别

mysql数据库包含四种级别的字符集,分别是库实例,数据库、表、表字段,执行的优先级是从低到高,意思就是实例优先级低于数据库,数据库低于表,表低于表字段

查看方式

实例:show variables like ‘%char%’
数据库:show create database groupdb
表:show create table groupdb.gp_contact
表字段:show full columns from groupdb.gp_contact

小数据量表更换字符集

alter table `table_name` CONVERT TO CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci;

注意:命令只会对后续插入的数据生效。这意味着在执行此命令之前插入的所有数据都将保持原字符集,而新插入的数据将使用utf8mb4字符集。

大数据量表更换字符集

-- 建表
CREATE TABLE `table_name_20230605` (
    `id` CHAR(32)  NOT NULL,
    `name` CHAR(32)  NOT NULL,
    PRIMARY KEY (`id`)
) ENGINE=INNODB DEFAULT CHARSET=utf8mb4 COLLATE utf8mb4_general_ci

-- 替换
RENAME TABLE table_name to table_name_backup_20230605, table_name_20230605 to table_name;

-- 插入热点数据
INSERT INTO table_name (SELECT * FROM table_name_backup_20230605 WHERE createtime >= '2023-06-05 19:30:00');
  • 7
    点赞
  • 7
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值