MySQL——为多个表增加相同的字段

今天早上遇到一个需求,为某个数据库中的多个表增加同一个字段(或者说列、栏位)。查了资料,经过测试可行,现记录如下。

例如有test开头的三个表:testa、testb、testc,要为这三个表增加一个Lindex的字段( 数据类型为INT(10) ,注意增加的字段避免使用关键字)。

采用的是拼接SQL语句的方式。

新建查询(拼接SQL语句):

select group_concat('alter table ', table_schema, '.', table_name, ' add column LINDEX INT(10);' SEPARATOR "") from information_schema.tables where table_schema='数据库名' and table_name like 'test%';

运行结果:

alter table 数据库名.testa add column LINDEX INT(10);alter table 数据库名.testb add column LINDEX INT(10);alter table 数据库名.testc add column LINDEX INT(10);

然后再新建查询,拷贝上面的拼接语句运行结果再运行,即可为三个test开头的表增加了Lindex的字段。

注意要点:

①group_concat默认以逗号“,"拼接,会不符合SQL语法,所以要在group_concat参数的末尾加上加上SEPARATOR "",不要逗号。

②group_concat有默认拼接长度限制为1024,结果过长会被裁剪掉,修改global variable中的group_concat_max_len或者my.ini文件中的group_concat_max_len值,可改变拼接长度限制。

③有个报错[Err] 1055 - Expression #1 of ORDER BY clause is not in GROUP BY。。。。 不知道什么原因,查了一下,貌似是版本问题。但增加字段操作是成功的,没有影响。

 

你可能感兴趣的:(日常心得,MySQL,多表操作,增加字段)