SQL中实用添加删除

create database ddd;
use ddd;
-- 添加字段角标
create table t1(c int);
desc t1;
alter table t1 add c1 char(1)
			   add c2 char(1)
               ...
               ...
               add c10 char(10)
-- 添加字段
delimiter //
create procedure 添加字段()
begin
   declare i int default 1;
   declare ci char(1) default '';
   set @sqlcode ='alter table t1 ' ;
   
   while i<10 do
		set ci =cast(i as char(1));
		set @sqlcode =concat(@sqlcode, 'add c',ci,' char(1),');
        set i=i+1;
	end while;
    
    set @sqlcode =concat(@sqlcode,'add c10 char(1);');

end //
delimiter ;
call 添加字段();
select @sqlcode;

PREPARE a FROM @sqlcode;
EXECUTE a;
desc t1;
-- 删除字段角标
delimiter //
create procedure 删除字段()
begin
   declare i int default 1;
   declare ci char(1) default '';
   set @sqlcode ='alter table t1 ' ;
   
   while i<10 do
		set ci =cast(i as char(1));
		set @sqlcode =concat(@sqlcode, 'drop c',ci,',');
        set i=i+1;
	end while;
    
    set @sqlcode =concat(@sqlcode,'drop c10;');

end //
delimiter ;

call 删除字段;
select @sqlcode;

prepare a from @sqlcode;
execute a;
desc t1;

-- 添加指定数量字段
delimiter //
create procedure 添加指定数量字段(in n int)
begin
   declare i int default 1;
   declare ci char(2) default '';
   set @sqlcode ='alter table t1 ' ;
   
   while i<n do
		set ci =cast(i as char(2));
		set @sqlcode =concat(@sqlcode, 'add c',ci,' char(1),');
        set i=i+1;
	end while;
    
    set @sqlcode =concat(@sqlcode,'add c',cast(n as char(2)),' char(1);');

end //
delimiter ;
call 添加指定数量字段(88);
select @sqlcode;

PREPARE a FROM @sqlcode;
EXECUTE a;

desc t1;

删除指定数量字段同上删除字段!这里就不一一展示了

-- 自由添加
delimiter //
create procedure 自由添加(in cname char(100),in n int)
begin
   declare i int default 1;
   declare ci char(2) default '';
   set @sqlcode ='alter table t1 ' ;
   
   while i<n do
		set ci =cast(i as char(2));
		set @sqlcode =concat(@sqlcode, 'add ',cname,ci,' char(1),');
        set i=i+1;
	end while;
    
    set @sqlcode =concat(@sqlcode,'add ',cname,cast(n as char(2)),' char(1);');

end //
delimiter ;
call 自由添加('ddd',20);
select @sqlcode;

PREPARE a FROM @sqlcode;
EXECUTE a;

desc t1;
-- 自由删除 
delimiter //
create procedure 自由删除(in cname char(100),in n int)
begin
   declare i int default 1;
   declare ci char(2) default '';
   set @sqlcode ='alter table t1 ' ;
   
   while i<n do
		set ci =cast(i as char(2));
		set @sqlcode =concat(@sqlcode, 'drop ',cname,ci,',');
        set i=i+1;
	end while;
    
    set @sqlcode =concat(@sqlcode,'drop ',cname,cast(n as char(2)),';');

end //
delimiter ;
call 自由删除('ddd',20);
select @sqlcode;

PREPARE a FROM @sqlcode;
EXECUTE a;

desc t1;

-- 自由添加删除 --加一个修改字段名
delimiter //
create procedure 自由添加删除(in seltype int,in cname char(100),in n int)
begin
   declare i int default 1;
   declare ci char(2) default '';
   set @sqlcode ='alter table t1 ' ;
   
   if seltype=1 then
   while i<n do
		set ci =cast(i as char(2));
		set @sqlcode =concat(@sqlcode, 'add ',cname,ci,' char(1),');
        set i=i+1;
	end while;
    
    set @sqlcode =concat(@sqlcode,'add ',cname,cast(n as char(2)),' char(1);');
     
     elseif seltype=2 then
     while i<n do
		set ci =cast(i as char(2));
		set @sqlcode =concat(@sqlcode, 'drop ',cname,ci,',');
        set i=i+1;
	end while;
    
    set @sqlcode =concat(@sqlcode,'drop ',cname,cast(n as char(2)),';');
    else set @sqlcode = '参数错误';
    end if;
end //
delimiter ;
call 自由添加删除(1,'ddd',20);`
select @sqlcode;

PREPARE a FROM @sqlcode;
EXECUTE a;

desc t1;
-- 高自由添加删除 --加一个修改数据类型
delimiter //
create procedure 高自由添加删除(in seltype int,in cname char(100),in n int,in ctype varchar(100))
begin
   declare i int default 1;
   declare ci char(2) default '';
   set @sqlcode ='alter table t1 ' ;
   
   if seltype=1 then
   while i<n do
		set ci =cast(i as char(2));
		set @sqlcode =concat(@sqlcode, 'add ',cname,ci,' ',ctype,',');
        set i=i+1;
	end while;
    
    set @sqlcode =concat(@sqlcode,'add ',cname,cast(n as char(2)),' ',ctype,';');
     
     elseif seltype=2 then
     while i<n do
		set ci =cast(i as char(2));
		set @sqlcode =concat(@sqlcode, 'drop ',cname,ci,',');
        set i=i+1;
	end while;
    
    set @sqlcode =concat(@sqlcode,'drop ',cname,cast(n as char(2)),';');
    else set @sqlcode = '参数错误';
    end if;
end //
delimiter ;
call 高自由添加删除(1,'ddd',20,'char(10)');
select @sqlcode;

PREPARE a FROM @sqlcode;
EXECUTE a;

desc t1;

-- 超高自由添加删除 --再添加一个修改表名
create table t2(a int);

delimiter //
create procedure 超高自由添加删除(in seltype int,in cname char(100),in n int,in ctype varchar(100),in tname varchar(100))
begin
   declare i int default 1;
   declare ci char(2) default '';
   set @sqlcode =concat('alter table ',tname,' ');
   
   if seltype=1 then
   while i<n do
		set ci =cast(i as char(2));
		set @sqlcode =concat(@sqlcode, 'add ',cname,ci,' ',ctype,',');
        set i=i+1;
	end while;
    
    set @sqlcode =concat(@sqlcode,'add ',cname,cast(n as char(2)),' ',ctype,';');
     
     elseif seltype=2 then
     while i<n do
		set ci =cast(i as char(2));
		set @sqlcode =concat(@sqlcode, 'drop ',cname,ci,',');
        set i=i+1;
	end while;
    
    set @sqlcode =concat(@sqlcode,'drop ',cname,cast(n as char(2)),';');
    else set @sqlcode = '参数错误';
    end if;
end //
delimiter ;
call 超高自由添加删除(1,'ddd',20,'char(10)','t2');
select @sqlcode;

PREPARE a FROM @sqlcode;
EXECUTE a;

desc t2;

以上就是本次分享的一个SQL存储实用的自由添加删除,希望能帮到你!

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值