龙空技术网

mysql字符集如何选择?

alantop 105

前言:

如今兄弟们对“mysql字符集选什么”大体比较关切,看官们都想要学习一些“mysql字符集选什么”的相关内容。那么小编同时在网摘上收集了一些关于“mysql字符集选什么””的相关知识,希望你们能喜欢,各位老铁们快快来学习一下吧!

mysql 8 字符集如何选择

MySQL 8 默认使用的字符编码是 utf8mb4 。utf8mb4是 utf8 的超集,比以前的字符集多一些 emoji 表情符。utf8mb4 使用四个字节储存码位,而 utf8 只使用三个字节。

使用MySQL 8.0.19 之前的版本,一般使用 utf8mb4_unicode_ci 或 utf8mb4_general_ci 作为排序规则。但是,从 MySQL 8.0.19 开始,推荐使用 utf8mb4_0900_ai_ci 作为排序规则。utf8mb4_0900_ai_ci 在 sorting 和 comparison 的速度上都有更好的表现。

总之,mysql8.0.19 以后的版本,建议使用 utf8mb4 字符编码,排序规则选择utf8mb4_0900_ai_ci 。

创建表指定字符集的方法,在创建表时,通过添加 CHARSET 参数指定默认编码。

CREATE TABLE example ( id INT NOT NULL, name VARCHAR(50) NOT NULL, emoji TEXT ) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4;

如果已经有数据库或表,修改字符集的方法。

使用ALTER DATABASE或ALTER TABLE语句更改字符编码。

ALTER TABLE table_name CONVERT TO CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci;

修改mysql8数据库中所有表的字符集的方法:(用数据库拼接函数生成修改所有表的语句,再执行)

ALTER DATABASE 数据库名称 DEFAULT CHARACTER SET 编码名称 [COLLATE ...];

SELECT

CONCAT("ALTER TABLE ",TABLE_SCHEMA,'.',TABLE_NAME," CONVERT TO CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci;")

AS target_tables

FROM INFORMATION_SCHEMA.TABLES

WHERE TABLE_SCHEMA IN('数据库名称','数据库名称')

AND TABLE_TYPE="BASE TABLE";

生成修改表的语句,拷贝下来执行即可。

标签: #mysql字符集选什么