mysql修改数据库表和表中的字段的编码格式的修改

本文介绍了一种有效的方法来批量更改MySQL数据库表及其字段的字符编码格式,避免了逐一手动调整字段编码的繁琐过程。

建数据库的时候,已经选择了编码格式为UTF-8

但是用PDM生成的脚本导进去的时候却奇怪的发现表和表的字段的编码格式却是GBK,一个一个却又觉得麻烦,在网上找了一下办法

一个是修改表的编码格式的

ALTER TABLE `table` DEFAULT CHARACTER SET utf8;
但是虽然修改了表的编码格式,但是字段的编码格式并没有修改过来,没有什么卵用

又发现一条语句,作用是修改字段的编码格式

ALTER TABLE `tablename` CHANGE `字段名1` `字段名2` VARCHAR(36) CHARACTER SET utf8 NOT NULL;
但是一次只能修改一个字段,还是很麻烦,不方便。

最后找到这么一条语句

alter table `tablename` convert to character set utf8;
它可以修改一张表的所有字段的编码格式,顿时方便多了


可以按以下步骤将 MySQL 数据库中所有字段编码统一改为 `utf8mb4_unicode_ci`: 1. **修改数据库编码** 使用以下 SQL 语句将数据库的默认字符集排序规则修改为 `utf8mb4_unicode_ci`: ```sql ALTER DATABASE your_database_name CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci; ``` 请将 `your_database_name` 替换为你实际的数据库名称。 2. **修改编码** 可以通过以下 SQL 语句查询出非 `utf8mb4_unicode_ci` 编码,并生成修改编码的 SQL 语句: ```sql SELECT * FROM ( SELECT TABLE_SCHEMA '数据库', TABLE_NAME '', TABLE_COLLATION '原排序规则', CONCAT('ALTER TABLE ', TABLE_SCHEMA, '.', TABLE_NAME, ' CONVERT TO CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci;') '修正SQL' FROM information_schema.`TABLES` WHERE TABLE_SCHEMA = 'your_database_name' AND TABLE_COLLATION NOT RLIKE 'utf8mb4_unicode_ci' ) AS tab; ``` 同样,将 `your_database_name` 替换为你实际的数据库名称。执行上述 SQL 语句后,会得到一个结果集,其中最后一列是修正编码的 SQL 语句,将这些 SQL 语句复制出来并执行,就可以将对应的修改为 `utf8mb4_unicode_ci` 编码 [^2]。 3. **修改字段编码** 可以使用以下 SQL 语句查询出非 `utf8mb4_unicode_ci` 编码字段,并生成修改字段编码的 SQL 语句: ```sql SELECT TABLE_NAME, COLUMN_NAME, COLUMN_COLLATION, CONCAT('ALTER TABLE ', TABLE_SCHEMA, '.', TABLE_NAME, ' MODIFY ', COLUMN_NAME, ' ', COLUMN_TYPE, ' CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci;') AS '修正SQL' FROM information_schema.COLUMNS WHERE TABLE_SCHEMA = 'your_database_name' AND COLUMN_COLLATION NOT RLIKE 'utf8mb4_unicode_ci'; ``` 将 `your_database_name` 替换为你实际的数据库名称。执行上述 SQL 语句后,会得到一个结果集,其中最后一列是修正字段编码的 SQL 语句,将这些 SQL 语句复制出来并执行,就可以将对应的字段修改为 `utf8mb4_unicode_ci` 编码
评论 7
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值