MySQL批量修改表及表内字段排序规则举例详解

 更新时间:2024年05月25日 16:13:07   作者:LukeGLY  
在MySQL中字段排序规则(也称为字符集和排序规则)用于确定如何比较和排序字符串,下面这篇文章主要给大家介绍了关于MySQL批量修改表及表内字段排序规则的相关资料,需要的朋友可以参考下

Mysql向TiDB迁移时发现不支持 'utf8mb4_german2_ci'排序规则,为解决此问题需修改Mysql表及表内字段排序规则,具体操作如下:

一、表排序规则修改

1、生成修改表排序规则的SQL语句

SELECT CONCAT('ALTER TABLE ', TABLE_SCHEMA, '.', TABLE_NAME,
              ' COLLATE utf8mb4_general_ci;') AS '修正SQL'
from information_schema.tables
where TABLE_SCHEMA = '数据库名'
  and TABLE_COLLATION = 'utf8mb4_german2_ci';

2、生成的 SQL 语句如下:

ALTER TABLE 数据库名.表名 COLLATE utf8mb4_general_ci;

3、复制执行即可;

二、表内字段排序规则修改

1、生成修改字段排序规则的SQL语句

SELECT
    CONCAT('ALTER TABLE `', table_name, '` MODIFY `', column_name, '` ', DATA_TYPE,
        '(', CHARACTER_MAXIMUM_LENGTH, ') CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci',
        (CASE WHEN IS_NULLABLE = 'NO' THEN ' NOT NULL' ELSE '' END),
        (case when IFNULL(column_comment,'')='' then '' else concat(' COMMENT \'' , column_comment ,'\'') end),
        ';') AS `修正SQL`
FROM information_schema.COLUMNS
WHERE 1=1
    and TABLE_SCHEMA = '数据库名' #要修改的数据库名称
    and DATA_TYPE IN ('varchar','char')
    and COLLATION_NAME='utf8mb4_german2_ci'

2、生成的 SQL 语句如下:

ALTER TABLE `t_categories` MODIFY `code` varchar(100) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NOT NULL COMMENT '标识';

3、复制执行即可;

补充:MySQL批量修改库、表、列的排序规则

1、表字段修改

SELECT
    TABLE_SCHEMA '数据库',
    TABLE_NAME '表',
    COLUMN_NAME '字段',
    CHARACTER_SET_NAME '原字符集',
    COLLATION_NAME '原排序规则',
    CONCAT( 'ALTER TABLE ', TABLE_SCHEMA, '.', TABLE_NAME, ' MODIFY COLUMN ', COLUMN_NAME, ' ', COLUMN_TYPE, ' CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci;' ) '修正SQL' 
FROM
    information_schema.`COLUMNS` 
WHERE
    COLLATION_NAME RLIKE 'utf8';

utf8 是模糊匹配排序规则,这里需要替换为你数据库中需要替换的字段的排序规则,

utf8mb4设置的是替换的字符集,

utf8mb4_general_ci设置的是替换的排序规则,

上述语句可以增加TABLE_SCHEMA='数据库名',来限定数据库。

 把修正SQL复制出来直接运行即可。

2、表修改

SELECT
    TABLE_SCHEMA '数据库',
    TABLE_NAME '表',
    TABLE_COLLATION '原排序规则',
    CONCAT( 'ALTER TABLE ', TABLE_SCHEMA, '.', TABLE_NAME, ' COLLATE=utf8mb4_general_ci;' ) '修正SQL' 
FROM
    information_schema.`TABLES` 
WHERE
    TABLE_COLLATION RLIKE 'utf8';

把修正SQL 复制出来直接运行即可。

3、数据库修改

#修改数据库
SELECT
    SCHEMA_NAME '数据库',
    DEFAULT_CHARACTER_SET_NAME '原字符集',
    DEFAULT_COLLATION_NAME '原排序规则',
    CONCAT( 'ALTER DATABASE ', SCHEMA_NAME, ' CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci;' ) '修正SQL' 
FROM
    information_schema.`SCHEMATA` 
WHERE
    DEFAULT_CHARACTER_SET_NAME RLIKE 'utf8';

把修正SQL 复制出来直接运行即可。

总结

到此这篇关于MySQL批量修改表及表内字段排序规则的文章就介绍到这了,更多相关MySQL批量修改表及字段排序规则内容请搜索脚本之家以前的文章或继续浏览下面的相关文章希望大家以后多多支持脚本之家!

相关文章

  • MySql中modify、rename、change的使用及区别

    MySql中modify、rename、change的使用及区别

    这篇文章主要介绍了MySql中modify、rename、change的使用及区别,具有很好的参考价值,希望对大家有所帮助,如有错误或未考虑完全的地方,望不吝赐教
    2024-06-06
  • DataGrip连接Mysql并创建数据库的方法实现

    DataGrip连接Mysql并创建数据库的方法实现

    本文主要介绍了DataGrip连接Mysql并创建数据库的方法实现,文中通过示例代码介绍的非常详细,具有一定的参考价值,感兴趣的小伙伴们可以参考一下
    2022-02-02
  • 安装mysql noinstall zip版

    安装mysql noinstall zip版

    没用过mysql, 这几天折腾django ,发现连接mssql好像还是有些小bug,为了防止日后项目有些莫名的db故障,故选择django推荐之一的mysql
    2011-12-12
  • 解决Navicat for Mysql连接报错1251的问题(连接失败)

    解决Navicat for Mysql连接报错1251的问题(连接失败)

    记得在之前给大家介绍过Navicat for Mysql连接报错的问题,可能写的不够详细,今天在稍作修改补充下,对Navicat for Mysql连接报错1251问题感兴趣的朋友跟随小编一起看看吧
    2021-05-05
  • Mysql按特定符号分割成多行和多列的示例

    Mysql按特定符号分割成多行和多列的示例

    本文主要介绍了Mysql 按特定符号分割成多行和多列,文中通过示例代码介绍的非常详细,具有一定的参考价值,感兴趣的小伙伴们可以参考一下
    2021-09-09
  • 记录无法安装mysql-Invalid GPG Key from file:/etc/pki/rpm-gpg/RPM-GPG-KEY-mysql的解决办法

    记录无法安装mysql-Invalid GPG Key from file:/etc/pki/rpm-gpg/RPM-G

    在aliyun上安装MySQL时由于上次错误卸载mysql 导致校验文件出问题。下面小编给大家分享记录无法安装mysql-Invalid GPG Key from file:/etc/pki/rpm-gpg/RPM-GPG-KEY-mysql的解决方法,需要的朋友参考下吧
    2017-01-01
  • mysql优化之路----hash索引优化

    mysql优化之路----hash索引优化

    本文是笔者自己做的关于mysql的优化方面的小测试,暂时仅仅做了hash索引优化的测试,以后会做更多方面,希望能够给您带来收获,祝您工作愉快。
    2014-08-08
  • Mysql表创建外键报错解决方案

    Mysql表创建外键报错解决方案

    这篇文章主要介绍了Mysql表创建外键报错解决方案,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友可以参考下
    2020-09-09
  • MySql存储过程与函数详解

    MySql存储过程与函数详解

    这篇文章主要为大家详细介绍了MySql存储过程与函数,文中示例代码介绍的非常详细,具有一定的参考价值,感兴趣的小伙伴们可以参考一下
    2015-08-08
  • mysql解压包的安装基础教程

    mysql解压包的安装基础教程

    这篇文章主要为大家详细介绍了mysql解压包的安装基础教程,具有一定的参考价值,感兴趣的小伙伴们可以参考一下
    2017-08-08

最新评论