库一级的更改:

-- 单个库字符集更改
ALTER DATABASE `ymcd_aisw` CHARACTER SET 'utf8' COLLATE 'utf8_general_ci';
ALTER DATABASE `ymcd_aisw` CHARACTER SET 'utf8mb4' COLLATE 'utf8mb4_general_ci'; -- 批量修改库的字符集
SELECT CONCAT('ALTER DATABASE `', `SCHEMA_NAME`, '` CHARACTER SET \'utf8\' COLLATE \'utf8_general_ci\'; ') AS `批量改库字符集SQL`
FROM information_schema.`SCHEMATA`
WHERE `SCHEMA_NAME` NOT IN ('information_schema', 'mysql', 'performance_schema', 'sys') -- 排除系统库,可以再添加自己需要排除的库
-- `SCHEMA_NAME` IN('SASAD', 'ASDASD', ...) -- 或者指定哪些库要改

表一级的更改:

-- 批量改表的字符集
SELECT CONCAT('ALTER TABLE `', TABLE_SCHEMA, '`.`', TABLE_NAME, '` CHARACTER SET = utf8, COLLATE = utf8_general_ci;')
FROM information_schema.`TABLES`
WHERE `TABLE_SCHEMA` = 'ymcd_aisw' -- 指定单库
-- `TABLE_SCHEMA` IN ('x111', 'xaaaq') -- 指定多库

字段一级的更改:

-- 批量改字段
-- 主键字符字段不涉及索引问题,联合主键也是一样 SELECT CONCAT(
-- 指定的库和表名
'ALTER TABLE `', TABLE_SCHEMA, '`.`', TABLE_NAME, '` ',
-- 指定的字段和数据类型
'MODIFY COLUMN `', COLUMN_NAME, '` ', COLUMN_TYPE,
-- 指定的字符集和对应的排序规则
' CHARACTER SET utf8 COLLATE utf8_general_ci ',
-- 是否非空和默认值的组合
(CASE
WHEN IS_NULLABLE = 'NO' AND COLUMN_DEFAULT IS NULL THEN 'NOT NULL '
WHEN IS_NULLABLE = 'NO' AND COLUMN_DEFAULT IS NOT NULL THEN CONCAT('NOT NULL DEFAULT "', COLUMN_DEFAULT, '" ')
WHEN IS_NULLABLE = 'YES' AND COLUMN_DEFAULT IS NULL THEN 'NULL DEFAULT NULL '
WHEN IS_NULLABLE = 'YES' AND COLUMN_DEFAULT IS NOT NULL THEN CONCAT('NULL DEFAULT "', COLUMN_DEFAULT, '" ')
END),
-- 保留原始注释信息
'COMMENT "', COLUMN_COMMENT, '";'
)
FROM information_schema.`COLUMNS`
WHERE
CHARACTER_SET_NAME = 'utf8mb4' -- 根据原字符集来筛选
AND `TABLE_SCHEMA` = 'ymcd_aisw' -- 指定单库
-- `TABLE_SCHEMA` IN('') -- 指定多库

【MySQL】 批量更改库,表,字段的字符集的更多相关文章

  1. MySQL数据库的库表迁移

    最近在研究MySQL数据库的库表迁移问题,主要分为两种情况,一种情况是迁移数据库的表的全部字段,另一种是迁移数据库的表的部分字段.前一种情况是直接使用mysqldump命令来实现,后一种情况则是采用数 ...

  2. 批量更改数据库表架构(生成sql后直接执行!)

    批量更改数据库表架构(生成sql后直接执行!) use my_test; --当前数据库 ), ), ), @NewSql VARCHAR(max), @Index INT; SET @SchemaO ...

  3. Mysql数据库 的库表简易操作

    一. 库的操作 1.创建数据库 创建数据库: create database 库名 charset utf8;   charset uft8  可选项 1.2 数据库命名规范: 可以由字母.数字.下划 ...

  4. MySQL查看某库表大小及锁表情况

    查询所有数据库占用磁盘空间大小的SQL语句: 语句如下: select TABLE_SCHEMA, concat(truncate(sum(data_length)/1024/1024,2),' MB ...

  5. Oracle批量更改所有表的字段取值_类型_原字段名

    CREATE PROCEDURE 存储过程名称 is cursor c_tab is select * from user_tab_columns t r_tab user_tab_columns%r ...

  6. MySQL数据库的库表基本操作

    一.库操作 1.创建业务数据库 DDL 数据库命名规则:区分大小写.唯一性.不能使用关键字如 create select.不能单独使用数字 语法:CREATE DATABASE 数据库名; CREAT ...

  7. mysql批量生成修改表和列注释语句

    当我们在一个数据库修改完备注后,需要将其导致另一个服务器上的数据库中,需要生成批量执行语句,方便操作,注意用change 或modified 进行列的属性修改时,没有写全的话会造成其它属性的丢失,如 ...

  8. mysql 修改 添加 删除 表字段

    添加表的字段    alter table 表名  add  字段名  字段的类型 例子:        alter table table1 add transactor varchar(10) n ...

  9. mysql: 查看某库表大小

    查询所有数据库占用磁盘空间大小的SQL语句: 语句如下 1 2 3 4 5 select TABLE_SCHEMA, concat(truncate(sum(data_length)/1024/102 ...

  10. mysql查看某库表大小

    查询所有数据库占用磁盘空间大小的SQL语句: 语句如下 select TABLE_SCHEMA, concat(truncate(sum(data_length)/1024/1024,2),' MB' ...

随机推荐

  1. mvn 打包报错:no compiler is provided in this environment

    最近公司换了电脑,系统也从 win7 升级到 win11,开发环境都重新安装了一遍,然后在 idea 用mvn 执行打包命令 mvn clean package 报错: no compiler is ...

  2. 终于搞懂了!原来vue3中template使用ref无需.value是因为这个

    前言 众所周知,vue3的template中使用ref变量无需使用.value.还可以在事件处理器中进行赋值操作时,无需使用.value就可以直接修改ref变量的值,比如:<button @cl ...

  3. pandas、spark计算相关性系数速度对比

    pandas.spark计算相关性系数速度对比 相关性计算有三种算法:pearson.spearman,kenall. 在pandas库中,对一个Dataframe,可以直接计算这三个算法的相关系数c ...

  4. RSA算法中,为什么需要的是两个素数?

    PrimiHub一款由密码学专家团队打造的开源隐私计算平台,专注于分享数据安全.密码学.联邦学习.同态加密等隐私计算领域的技术和内容. RSA算法中,为什么需要的是两个素数? RSA算法是一种广泛使用 ...

  5. Scrapy框架(四)--五大核心组件

    scrapy的基本使用我们已经掌握,但是各位心中一定会有些许的疑问,我们在编写scrapy工程的时候,我们只是在定义相关类中的属性或者方法, 但是我们并没有手动的对类进行实例化或者手动调用过相关的方法 ...

  6. Kafka多维度调优

    优化金字塔 应用程序层面 框架层面(Broker层面) JVM层面 操作系统层面 应用程序层面:应当优化业务代码合理使用kafka,合理规划主题,合理规划分区,合理设计数据结构: 框架层面:在不改动源 ...

  7. Linux使用docker搭建maven私有仓库

    引言 在实际开发工作中,通常需要搭建maven私有仓库,今天就教大家如何搭建一套maven的私有仓库 Nexus介绍 Nexus 是Maven仓库管理器,如果你使用Maven,你可以从Maven中央仓 ...

  8. 06-Linux用户和组管理

    关于用户和组的知识 家目录 用户都有家目录:root用户家目录为/root.其他用户的家目录在/home/,如user1的家目录为/home/user1 当我们创建用户时,系统就会自动创建该用户的家目 ...

  9. 实验2.ARP实验

    # 实验2.ARP实验 本实验用于验证arp以及arp表,arp缓存的使用,测试ping包时arp表的更新机制. 实验组 PC1 10.68.57.10 255.255.255.0 00-00-00- ...

  10. Spark Structured Streaming(二)实战

    5. 实战Structured Streaming 5.1. Static版本 先读一份static 数据: val static = spark.read.json("s3://xxx/d ...