当我们在一个数据库修改完备注后,需要将其导致另一个服务器上的数据库中,需要生成批量执行语句,方便操作,注意用change 或modified 进行列的属性修改时,没有写全的话会造成其它属性的丢失,如
t_users 表中有字段 name 备注名为 姓名,默认值为0,如果用alter table t_users change column name name varchar(10) ;那么备注名就会消失,默认值也会消失。故通过如下语句可以生成完事的alter 语句
修改数据库备注名: 单条语句写法:
alter table t_version comment ‘版本‘
生成批量语句写法:
select concat("alter table " ,TABLE_NAME, " comment ", "‘",TABLE_COMMENT,"‘",";") from information_schema.tables
where information_schema.tables.TABLE_SCHEMA=‘shengzhibao‘ and information_schema.tables.TABLE_TYPE=‘BASE TABLE‘ 修改列备注名: 单条语句写法:ALTER TABLE t_content CHANGE name name [type] [not null] DEFAULT [‘xxx‘ | null] COMMENT ‘xxx‘
生成批量语句写法
select concat("ALTER TABLE ",TABLE_SCHEMA,".",TABLE_NAME," CHANGE ",COLUMN_NAME," ",COLUMN_NAME, " ",COLUMN_TYPE , if(COLUMN_DEFAULT is null," ",concat(" DEFAULT ",if(COLUMN_DEFAULT=‘‘,"‘‘",COLUMN_DEFAULT))), if(IS_NULLABLE=‘NO‘," NOT NULL ",‘‘)," COMMENT "," ","‘",COLUMN_COMMENT,"‘") from information_schema.COLUMNS where TABLE_SCHEMA=‘shengzhibao‘ and table_name=‘t_content_news‘
select concat("ALTER TABLE ",TABLE_SCHEMA,".",TABLE_NAME," CHANGE ",COLUMN_NAME," ",COLUMN_NAME, " ",COLUMN_TYPE ,
if(COLUMN_DEFAULT is null," ",concat(" DEFAULT ",if(COLUMN_DEFAULT=‘‘,"‘‘",COLUMN_DEFAULT))),
if(IS_NULLABLE=‘NO‘," NOT NULL ",‘‘)," COMMENT "," ","‘",COLUMN_COMMENT,"‘")
from information_schema.COLUMNS where TABLE_SCHEMA=‘shengzhibao‘ and table_name=‘t_content_news‘
原文:http://www.cnblogs.com/zejin2008/p/5133858.html