MySQL中通过ALTER TABLE语句SQL用法,通过查询INFORMATION_SCHEMA生成批量修改SQL,适用于业务变更、字段优化和数据迁移等场景。
目录
[1、ALTER TABLE 用法](#1、ALTER TABLE 用法)
运行环境:
- Windows-10-BusinessEditions-22h2-x64、CentOS-7.9.2009-x64
- MySQL-5.7.44
1、ALTER TABLE 用法
官方关于ALTER TABLE语句的用法举例,供参考。

2、生成批量修改SQL
对于MySQL数据库中常见的情况需要批量修改字段:
- 业务需求变化:比如,某字段长度不够用,需要扩展。
- 字段可读性:比如,同名字段的意义一致,但字段备注不一致,对字段备注进行优化。
- 数据迁移:在数据迁移时,f需统一字段类型、默认值。
如下SQL语句 生成批量修改SQL:
sql
SELECT
-- /*
a.TABLE_SCHEMA,
a.TABLE_NAME,
a.COLUMN_NAME,
a.COLUMN_COMMENT,
-- */
CONCAT('ALTER TABLE `',
a.TABLE_SCHEMA, -- 数据库名
'`.`',
a.TABLE_NAME, -- 表名
'` MODIFY COLUMN `', -- 修改字段
a.COLUMN_NAME, -- 字段名
'` ',
a.COLUMN_TYPE, -- 字段类型
" NULL DEFAULT '0' ", -- 允许为空、默认值为 0
"COMMENT '",
-- a.COLUMN_COMMENT, -- 字段备注
"新的字段备注';") AS 'SQL语句'
FROM INFORMATION_SCHEMA.COLUMNS a
WHERE a.COLUMN_NAME = 'status'
-- AND a.COLUMN_COMMENT LIKE '%字段备注%'
-- AND a.TABLE_SCHEMA LIKE '数据库名%'
AND a.TABLE_NAME IN (SELECT TABLE_NAME FROM INFORMATION_SCHEMA.TABLES WHERE TABLE_SCHEMA LIKE 'mall_%')
ORDER BY a.TABLE_SCHEMA, a.TABLE_NAME, a.COLUMN_NAME;
生成结果:

3、实践总结
根据自己服务器操作系统,选择对应的MySQL数据库版本。


附录: