【数据库】Mysql 批量变更所有字段类型为varchar的字符集

生成变更语句

sql 复制代码
SELECT 
	CONCAT(
		'ALTER TABLE ', TABLE_NAME, 
		' MODIFY ', COLUMN_NAME, 
		' ', COLUMN_TYPE, ' ',
		' CHARACTER SET utf8 COLLATE utf8_general_ci ', 
		CASE 
			WHEN IS_NULLABLE = 'YES' THEN ' NULL DEFAULT NULL '
			WHEN IS_NULLABLE = 'NO' AND ISNULL(COLUMN_DEFAULT) THEN 'NOT NULL '
			ELSE  CONCAT("NOT NULL DEFAULT '",COLUMN_DEFAULT,"'") 
		END,
		"COMMENT '",
		COLUMN_COMMENT,
		"';"
	) AS alter_statement
FROM 
	INFORMATION_SCHEMA.`COLUMNS`
WHERE 
	TABLE_SCHEMA = '你的数据库名称'
AND 
	CHARACTER_SET_NAME = 'gbk' 
AND 
	TABLE_NAME IN (
  		SELECT 
  			TABLE_NAME 
  		FROM 
  			information_schema.`TABLES` 
  		WHERE 
  			TABLE_SCHEMA = '你的数据库名称' 
  		AND 
  			TABLE_TYPE = 'BASE TABLE'
	);

如下图所示,修改语句中的你的数据库名称,放到查询页面,运行后自动生成变更语句!

运行查询结果

将上一步骤生成的变更语句复制到新的查询页面运行,即可完成所有varchar字符集的变更。

注意:一定要在修改字符集数据库下运行,否则可能会报如下错误:

sql 复制代码
Err] 1044 - Access denied for user 'rdis'@'%' to database 'information_schema'
相关推荐
专注仿真3 小时前
从「能跑通」到「能交付」:一套可直接落地的电商用户行为分析平台(Python + SQLite/MySQL + Streamlit 全栈源码与部署文档)
python·mysql·sqlite
笃行3504 小时前
列存储这条线,我顺着 KingbaseES 的文档摸了一遍
数据库
Navicat中国4 小时前
Navicat 18 支持 Azure OpenAI 接入,合规 AI 赋能 SQL 开发
数据库·人工智能·microsoft·ai·azure·navicat·数据
1024奇点4 小时前
【仓颉语言入门 · 第二篇 第 10 课】
开发语言·数据库·ide·mysql·开源
数据狐(Datafox)4 小时前
一文读懂京东商品详情API:返回字段解读与 JSON 样例
java·开发语言·数据库·windows·json
SelectDB4 小时前
从实时入库到实时可用:Apache Doris 5.0 增量计算场景与实践
大数据·数据库·开源
IvorySQL4 小时前
PostgreSQL 18 性能与执行计划新特性实测
数据库·postgresql
赵渝强老师5 小时前
【赵渝强老师】高斯数据库(openGauss)的服务器日志文件
数据库·opengauss·国产数据库·高斯数据库
SelectDB5 小时前
以实时驱动智能:Apache Doris Summit 2026 盛大落幕,开启 Agentic AI 时代数据新范式
数据库·程序员·agent
Source.Liu5 小时前
【A11】服务器数据库结构笔记
服务器·数据库·笔记