已經(jīng)測(cè)試,創(chuàng)建并運(yùn)行下面的存儲(chǔ)過(guò)程可以循環(huán)添加數(shù)據(jù):
成都創(chuàng)新互聯(lián)自2013年創(chuàng)立以來(lái),先為察雅等服務(wù)建站,察雅等地企業(yè),進(jìn)行企業(yè)商務(wù)咨詢服務(wù)。為察雅企業(yè)網(wǎng)站制作PC+手機(jī)+微官網(wǎng)三網(wǎng)同步一站式服務(wù)解決您的所有建站問(wèn)題。
create procedure dowhile()
begin
declare i int default 0;
start transaction;
while i50 do
insert into users(userId,userName,userPwd) values(null,concat('s00',i),123456);
set i=i+1;
end while;
commit;
end;
delimiter;
delimiter $$// 定義結(jié)束符為 $$
drop procedure if exists wk; // 刪除 已有的 存儲(chǔ)過(guò)程
create procedure wk()// 創(chuàng)建新的存儲(chǔ)過(guò)程
begin
declare i int;// 變量聲明
set i = 1;
while i 11 do // 循環(huán)體
insert into user_profile (uid) values (i);
set i = i +1;
end while;
end $$ // 結(jié)束定義語(yǔ)句
// 調(diào)用
delimiter ;// 先把結(jié)束符 回復(fù)為;
call wk();
delimter : mysql 默認(rèn)的 delimiter是; 告訴mysql解釋器,該段命令是否已經(jīng)結(jié)束了,mysql是否可以執(zhí)行了。
本文實(shí)例講述了MySQL實(shí)現(xiàn)創(chuàng)建存儲(chǔ)過(guò)程并循環(huán)添加記錄的方法。分享給大家供大家參考,具體如下:
先創(chuàng)建,然后調(diào)用:
--
創(chuàng)建存儲(chǔ)過(guò)程
DELIMITER;//
create
procedure
myproc()
begin
declare
num
int;
set
num=1;
while
num
=
24
do
insert
into
t_calendar_hour(hourlist)
values(num);
set
num=num+1;
end
while;
commit;
end;//
--
調(diào)用存儲(chǔ)過(guò)程
CALL
myproc();
PS:這里再為大家推薦2款常用的sql在線工具供大家參考使用(包含SQL語(yǔ)句用法說(shuō)明):
SQL在線壓縮/格式化工具:
SQL代碼在線格式化美化工具:
更多關(guān)于MySQL相關(guān)內(nèi)容感興趣的讀者可查看本站專題:《MySQL存儲(chǔ)過(guò)程技巧大全》、《MySQL常用函數(shù)大匯總》、《MySQL日志操作技巧大全》、《MySQL事務(wù)操作技巧匯總》及《MySQL數(shù)據(jù)庫(kù)鎖相關(guān)技巧匯總》
希望本文所述對(duì)大家MySQL數(shù)據(jù)庫(kù)計(jì)有所幫助。
有兩種方法,一種方法使用mysql的check table和repair table 的sql語(yǔ)句,另一種方法是使用MySQL提供的多個(gè)myisamchk, isamchk數(shù)據(jù)檢測(cè)恢復(fù)工具。前者使用起來(lái)比較簡(jiǎn)便。推薦使用。
1. check table 和 repair table
登陸mysql 終端:
mysql -uxxxxx -p dbname
check table tabTest;
如果出現(xiàn)的結(jié)果說(shuō)Status是OK,則不用修復(fù),如果有Error,可以用:
repair table tabTest;
進(jìn)行修復(fù),修復(fù)之后可以在用check table命令來(lái)進(jìn)行檢查。在新版本的phpMyAdmin里面也可以使用check/repair的功能。
2. myisamchk, isamchk
其中myisamchk適用于MYISAM類型的數(shù)據(jù)表,而isamchk適用于ISAM類型的數(shù)據(jù)表。這兩條命令的主要參數(shù)相同,一般新的系統(tǒng)都使用MYISAM作為缺省的數(shù)據(jù)表類型,這里以myisamchk為例子進(jìn)行說(shuō)明。當(dāng)發(fā)現(xiàn)某個(gè)數(shù)據(jù)表出現(xiàn)問(wèn)題時(shí)可以使用:
myisamchk tablename.MYI
進(jìn)行檢測(cè),如果需要修復(fù)的話,可以使用:
myisamchk -of tablename.MYI
關(guān)于myisamchk的詳細(xì)參數(shù)說(shuō)明,可以參見(jiàn)它的使用幫助。需要注意的時(shí)在進(jìn)行修改時(shí)必須確保MySQL服務(wù)器沒(méi)有訪問(wèn)這個(gè)數(shù)據(jù)表,保險(xiǎn)的情況下是最好在進(jìn)行檢測(cè)時(shí)把MySQL服務(wù)器Shutdown掉。
另外可以把下面的命令放在你的rc.local里面啟動(dòng)MySQL服務(wù)器前:
[ -x /tmp/mysql.sock ] /pathtochk/myisamchk -of /DATA_DIR/*/*.MYI
其中的/tmp/mysql.sock是MySQL監(jiān)聽(tīng)的Sock文件位置,對(duì)于使用RPM安裝的用戶應(yīng)該是/var/lib/mysql/mysql.sock,對(duì)于使用源碼安裝則是/tmp/mysql.sock可以根據(jù)自己的實(shí)際情況進(jìn)行變更,而pathtochk則是myisamchk所在的位置,DATA_DIR是你的MySQL數(shù)據(jù)庫(kù)存放的位置。
需要注意的時(shí),如果你打算把這條命令放在你的rc.local里面,必須確認(rèn)在執(zhí)行這條指令時(shí)MySQL服務(wù)器必須沒(méi)有啟動(dòng)!檢測(cè)修復(fù)所有數(shù)據(jù)庫(kù)(表)
一條insert語(yǔ)句批量插入多條記錄
常見(jiàn)的insert語(yǔ)句,向數(shù)據(jù)庫(kù)中,一條語(yǔ)句只能插入一條數(shù)據(jù):
insert into persons
(id_p, lastname , firstName, city )
values(204,'haha' , 'deng' , 'shenzhen');
(如上,僅插入了一條記錄)
怎樣一次insert插入多條記錄呢?
示例:
insert into persons
(id_p, lastname , firstName, city )
values
(200,'haha' , 'deng' , 'shenzhen'),
(201,'haha2' , 'deng' , 'GD'),
(202,'haha3' , 'deng' , 'Beijing');
這樣就批量插入數(shù)據(jù)了, 遵循這樣的語(yǔ)法,就可以批量插入數(shù)據(jù)了。
執(zhí)行成功