朝阳Tim

2019-02-24   阅读量: 689

Mysql

如何在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;
添加CDA认证专家【维克多阿涛】,微信号:【cdashijiazhuang】,提供数据分析指导及CDA考试秘籍。已助千人通过CDA数字化人才认证。欢迎交流,共同成长!
6.8407 1 1 关注作者 收藏

评论(0)


暂无数据

推荐课程