Mysql向表中循環插入數據
看你的mysql現在已提供什麽存儲引擎:
mysql> show engines;
看你的mysql當前默認的存儲引擎:
mysql> show variables like '%storage_engine%';
創建表
create table per2 (id int,name varchar(20))
所以我們手動設置delimiter為//
delimiter //
create procedure per3()
begin
declare num int;
set num=1;
while num < 20000000 do
insert into per2(id,name) values(num,concat("fan", num));
set num=num+1;
end while;
end
//
其中concat(“fan”, num),相當於oracle中fan||i的拼接效果,但是mysql不支持這樣拼接
之後我們要調用這個procedure,才會插入數據
其中concat(“fan”, num),相當於oracle中fan||i的拼接效果,但是mysql不支持這樣拼接
之後我們要調用這個procedure,才會插入數據
(mysql@localhost) [fandb]> call per3();//
由於我沒有將delimiter’改回來,所以輸入‘;’後並沒有執行,還需要//
其他使用方法
while ·· end while:
mysql > DELIMITER //
mysql > CREATE PROCEDURE proc4()
-> begin
-> declare var int;
-> set var=0;
-> while var<6 do
-> insert into t values(var);
-> set var=var+1;
-> end while;
-> end;
-> //
repeat ·· end repeat:
它在執行操作後檢查結果,而 while 則是執行前迚行檢查。
mysql > DELIMITER //
mysql > CREATE PROCEDURE proc5 ()
-> begin
-> declare v int;
-> set v=0;
-> repeat
-> insert into t values(v);
-> set v=v+1;
-> until v>=5
-> end repeat;
-> end;
-> //
repeat–循環體 until 循環條件 endrepeat;
loop ·· endloop:
loop 循環丌需要初始條件,這點和 while 循環相似,同時和 repeat 循環一樣丌需要結束條
件, leave 詫句的意義是離開循環。
mysql > DELIMITER //
mysql > CREATE PROCEDURE proc6 ()
begin
declare v int;
set v=0;
LOOP_LABLE:loop
insert into t values(v);
set v=v+1;
if v >=5 then
leave LOOP_LABLE;
end if;
end loop;
end;
//
Mysql向表中循環插入數據