2019-02-24
阅读量:
908
如何在mysql中优雅地为表同时新增10列?
问题描述:
当我们在使用sql进行批量处理的时候,例如为表新增10列,涉及了很多重复操作,对于重复操作,能否利用编程思想予以优化呢?
解决思路:
- prepare、procedure和while...do的组合,即可实现复杂需求的实现
- 其中prepare是预处理语句;procedure是存储过程,可以理解为封装函数;while...do...即循环的实现形式;delimiter是转义字符,将“;”暂时用“$$”替代
drop procedure if exists t;
delimiter $$
create procedure t()
begin
declare i int;
declare num varchar(2);
set i =1;
set @sqltext='';
while i<10 do
set num=cast(i as char);
set @sqltext = concat(@sqltext,' add c',num,' char(1) not null, ');
set i=i+1;
end while;
set @sqltext=concat('alter table aaa ',@sqltext,'add c10 char(1) not null;');
end $$
delimiter ;
call t();
select @sqltext;
prepare t from @sqltext;
execute t;
select * from aaa;
6.8407
1
1
关注作者
收藏
评论(0)
发表评论
暂无数据
推荐帖子
0条评论
0条评论
1条评论