美文网首页
批量修改MySQL表字符集和排序规则

批量修改MySQL表字符集和排序规则

作者: 万事俱备就差一个程序员了 | 来源:发表于2022-12-30 18:15 被阅读0次

目录

一、问题

二、修改字符集

三、修改库字符集和排序规则

四、修改表和字段字符集以及排序规则

1、查询并生成修改语句

2、生成简洁的修改表以及字段字符集和排序规则的语句

一、问题

        由于建库建表指定的数据库字符集和排序规则,和应用需求不一致,导致系统因字符集不一致异常。

二、修改字符集

        该生产库使用MySQL8.0版本,使用的默认字符集为:utf8mb4 ;使用的排序规则是: utf8mb4_0900_ai_ci。

        通过测试验证和评估,需要修改该生产库库、表和字段的排序规则为utf8mb4_general_ci和自字符集为utf8mb4。

        查看库、表以及字段的字符集和排序规则命令

-- 查看库、表以及字段的字符集和排序规则命令

-- 方法一

-- 1、查看指定库排序规则和字符集

show create database '库名字';

-- 2、查看指定表以及排序规则和字符集

show create table '表明字';

-- 方法二

select * from  information_schema.`TABLES` where TABLE_SCHEMA='库名字' and tables='表名字'

select * from  information_schema.`COLUMNS` where TABLE_SCHEMA='库名字' and tables='表名字'

三、修改库字符集和排序规则

-- 修改库的排序规则和字符集

ALTER database '库名' DEFAULT CHARSET utf8mb4 COLLATE utf8mb4_general_ci;

四、修改表和字段字符集以及排序规则

1、查询并生成修改语句

-- 1、查看需要修改字符集和排序规则的表

SELECT

    TABLE_SCHEMA AS '数据库',

    TABLE_NAME AS '表',

    TABLE_COLLATION AS '原排序规则',

    CONCAT('ALTER TABLE ', TABLE_SCHEMA, '.', TABLE_NAME, ' DEFAULT CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci;') AS '修正SQL'

FROM

    information_schema.`TABLES`

WHERE

    TABLE_COLLATION ='utf8mb4_0900_ai_ci' AND TABLE_SCHEMA = '库名字';

-- 2、查看需要修改字符集和排序规则的字段

SELECT

    TABLE_SCHEMA AS '数据库',

    TABLE_NAME AS '表',

    COLUMN_NAME AS '字段',

    CHARACTER_SET_NAME AS '原字符集',

    COLLATION_NAME AS '原排序规则',

    CONCAT('ALTER TABLE ', TABLE_SCHEMA, '.', TABLE_NAME, ' MODIFY COLUMN `', COLUMN_NAME, '` ', COLUMN_TYPE, ' CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci;') AS '修正SQL'

FROM

    information_schema.`COLUMNS`

WHERE

    CHARACTER_SET_NAME = 'utf8mb4' AND COLLATION_NAME != 'utf8mb4_general_ci' AND TABLE_SCHEMA = '库名字';

2、生成简洁的修改表以及字段字符集和排序规则的语句

-- 1、生成修改表 的字符集和排序规则的SQL语句

SELECT    CONCAT('ALTER TABLE ', TABLE_SCHEMA, '.', TABLE_NAME, ' DEFAULT CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci;') AS '修正SQL'

FROM

    information_schema.`TABLES`

WHERE

    TABLE_COLLATION ='utf8mb4_0900_ai_ci' AND TABLE_SCHEMA = '库名字';

-- 2、生成修改字段 的字符集和排序规则的SQL语句

SELECT    CONCAT('ALTER TABLE ', TABLE_SCHEMA, '.', TABLE_NAME, ' MODIFY COLUMN `', COLUMN_NAME, '` ', COLUMN_TYPE, ' CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci;') AS '修正SQL'

FROM

    information_schema.`COLUMNS`

WHERE

    CHARACTER_SET_NAME = 'utf8mb4' AND COLLATION_NAME != 'utf8mb4_general_ci' AND TABLE_SCHEMA = '库名字';

文章知识

————————————————

版权声明:本文为CSDN博主「@土豆」的原创文章,遵循CC 4.0 BY-SA版权协议,转载请附上原文出处链接及本声明。

原文链接:https://blog.csdn.net/weixin_44770684/article/details/127006877

相关文章

  • 批量修改MySQL表字符集和排序规则

    目录 一、问题 二、修改字符集 三、修改库字符集和排序规则 四、修改表和字段字符集以及排序规则 1、查询并生成修改...

  • 八、MySQL字符集

    字符集和排序规则简介   MySQL提供了多种字符集和排序规则选择,其中字符集设置和数据存储以及客户端与MySQL...

  • MYSQL 表名称操作

    Mysql 批量删除表名 MYSQL批量修改表前缀与表名sql语句

  • 字符集与校对规则

    MySQL字符集及校对规则的理解 阅读目录:MySQL的字符集和校对规则 MySQL的字符集 MySQL与字符集 ...

  • 如何创建MySql数据库

    一般我们创建mysql数据库,首先需要做的事,是选择“字符集”,然后选择“排序规则”。 字符集:utf8排序规则:...

  • MySQL 批量修改库、表、列的排序规则

    一、表字段修复: latin1 是我demo的模糊匹配排序规则,这里需要替换为你数据库中需要替换的字段的排序规则,...

  • MySQL修改字符集

    安装时MySQL默认的字符集是latin1,插入表中的中文会显示异常,所以需要修改字符集。 1、修改Mysql字符...

  • MySQL索引学习

    1. 字符集和比较规则 MySQL有4个级别的字符集和比较规则,分别是: 服务器级别 数据库级别 表级别 列级别 ...

  • 使用Mybatis 对Oracle数据库进行批量新增和批量修改

    使用Mybatis操作Oracle对同一表进行批量新增和批量修改与Mysql是有区别的。 批量新增 SEQ_ANS...

  • mysql

    参考: MySQL查看目前运行状况的两种方法 如何利用MySQL命令查看字符集和校对规则 修改MySQL数据库字符...

网友评论

      本文标题:批量修改MySQL表字符集和排序规则

      本文链接:https://www.haomeiwen.com/subject/ylitcdtx.html