mysql 存储过程 队列_mysql使用存储过程函数实现批量插入
寫這邊文章的目的,是想結合mysql 存儲過程+函數完成一個批量刪除的功能吧...正好也好加深下對procedure和function的熟練操作吧...
廢話不多說,我就直接上表結構啦哈,如下:
create table dept(
id int unsigned primary key auto_increment,
deptno mediumint unsigned not null default 0,
dname varchar(20) not null default "",
loc varchar(13) not null default ""
)engine=innodb default charset=utf8;
create table emp(
id int unsigned primary key auto_increment,
empno mediumint unsigned not null default 0,/*編號*/
ename varchar(20) not null default "",/*姓名*/
job varchar(9) not null default "",/*工作*/
mgr mediumint unsigned not null default 0,/*上級編號*/
hiredate date not null,/*入職時間*/
sal decimal(7,2) not null, /*薪水*/
comm decimal(7,2) not null,/*紅利*/
deptno mediumint unsigned not null default 0/*部門編號*/
)engine=innodb default charset=utf8;
執(zhí)行以下命令查看mysql版本是否開啟了函數功能
show variables like 'log_bin_trust_function_creators';
set global log_bin_trust_function_creators=1;
執(zhí)行后再看是否生效
創(chuàng)建函數(作用:生產隨機字符串)
delimiter $$
create function rand_string(n int) returns varchar(255)
begin
declare chars_str varchar(100) default 'qwertyuiopasdfghjklzxcvbnm';
declare return_str varchar(255) default '';
declare i int default 0;
while i
set return_str=concat(return_str,substring(chars_str,floor(1+rand()*52),1));
set i=i+1;
end while;
return return_str;
end $$
創(chuàng)建函數(作用:隨機生產部門編號)
delimiter $$
create function rand_num() returns int(5)
begin
declare i int default 0;
set i=floor(100+rand()*10);
return i;
end $$
創(chuàng)建完后我們可以查看創(chuàng)建的函數:
接著我們來創(chuàng)建存儲過程:
1:創(chuàng)建往emp表中插入數據的存儲過程
delimiter $$
create procedure insert_emp(in start int(10),in max_num int(10))
begin
declare i int default 0;
/*把autocommit設置成0*/
set autocommit= 0;
repeat
set i=i+1;
insert into emp(empno,ename,job,mgr,hiredate,sal,comm,deptno)
values((start+i),rand_string(6),'SALESMAN',0001,curdate(),2000,400,rand_num());
until i=max_num end repeat;
commit;
end $$
2:創(chuàng)建往dept表中插入數據的存儲過程
delimiter $$
create procedure insert_dept(in start int(10),in max_num int(10))
begin
declare i int default 0;
set autocommit=0;
repeat
set i=i+1;
insert into dept(deptno,dname,loc) values((start+i),rand_string(10),rand_string(8));
until i=max_num end repeat;
commit;
end $$
可以查看已經創(chuàng)建的procedure:
上面2個show create procedure請分開執(zhí)行,我這里直截圖就只顯示一個procedure啦
那我們可以開始調用存儲過程了
call insert_dept(1,100);//從deptno為1起插入100條隨機生成數據
執(zhí)行后我的部分數據如下:
call insert_emp(1001,50000);//從empno為1001起插入50000條隨機生成數據
執(zhí)行后部分截圖如下:
至此,整個批量插入完成...關于存儲過程和函數,手冊上有更詳細的介紹啦,我這里就不再贅述了吧....
MySQL存儲過程中的3種循環(huán),存儲過程的基本語法,ORACLE與MYSQL的存儲過程/函數的使用區(qū)別,退出存儲過程方法
在MySQL存儲過程的語句中有三個標準的循環(huán)方式:WHILE循環(huán),LOOP循環(huán)以及REPEAT循環(huán).還有一種非標準的循環(huán)方式:GOTO,不過這種循環(huán)方式最好別用,很容易引起程序的混亂,在這里就不錯具體 ...
mysql三種帶事務批量插入
原文:mysql三種帶事務批量插入 c#之mysql三種帶事務批量插入 前言 對于像我這樣的業(yè)務程序員開發(fā)一些表單內容是家常便飯的事情,說道表單 我們都避免不了多行內容的提交,多行內容保存,自然要用到 ...
Mysql數據庫實踐操作之————批量插入數據(100萬級別的數據)
第一種方法:使用insert into 插入 從Redis每次獲取100條數據,根據條件去插入到Mysql數據庫中: 條件: 如果當前隊列中的值大于1000條,則會自動的條用該方法,該方法每次獲取從隊 ...
MySQL 避免重復數據的批量插入與批量更新
[轉發(fā)] 導讀 我們在向數據庫里批量插入數據的時候,會遇到要將原有主鍵或者unique索引所在記錄更新的情況,而如果沒有主鍵或者unique索引沖突的時候,直接執(zhí)行插入操作. 這種情況下,有三種方式執(zhí) ...
MySQL創(chuàng)建存儲過程/函數需要的權限
alter routine---修改與刪除存儲過程/函數 create routine--創(chuàng)建存儲過程/函數 execute--調用存儲過程/函數 下面有一篇介紹MySQL所有權限的博文 http:/ ...
c#之mysql四種帶事務批量插入
前言 對于像我這樣的業(yè)務程序員開發(fā)一些表單內容是家常便飯的事情,說道表單 我們都避免不了多行內容的提交,多行內容保存,自然要用到數據庫,如果循環(huán)打擾我數據庫,數據庫也會覺得很累,從而增加數據庫服務器壓 ...
sql存儲過程中循環(huán)批量插入
前幾天有一個需求很頭痛,部門是有上下級關系的,在給部門的經理賦予角色和權限的時候,通常我們都會認為假如經理A的部門是1,那么我給了他部門1 的管理權限,那么1的下級部門101,102,103 &quo ...
MySQL on duplicate key update 批量插入并更新已存在數據
業(yè)務上經常存在一種現(xiàn)象,需要批量往表中插入多條數據,但在執(zhí)行過程中,很可能因為唯一鍵沖突,而導致批量插入失敗.因此需要事先判斷哪些數據是重復的,哪些是新增的.比較常用的處理方法就是找出已存在的數據,并 ...
mysql存儲過程命令行批量插入N條數據命令
原文:http://blog.csdn.net/tomcat_2014/article/details/53377924 delimiter $$ create procedure myproc () ...
隨機推薦
call函數心得
今天深深受項目組一老大哥深深的鄙視了一把,在用call的時候,因不理解導致函數之間無法正常調用 function A(){ B.call(XXX,a,b,c); }; function B(a,b,c ...
LRU緩存算法
http://blog.csdn.net/beiyeqingteng/article/details/7010411 http://blog.csdn.net/wzy_1988/article/det ...
畫圖------Brush
SolidBrush繼承自Brush,表示單色的筆刷.Brushes 類則繼承自System.Object.它提供了一些標準顏色的畫筆,包含靜態(tài)的只讀屬性,這些屬性返回由屬性名指示的顏色的 Brush ...
Hibernate框架單向多對一關聯(lián)映射關系
建立多對一的單向關聯(lián)關系?? ?Emp.java?? ??? ??? ?private Integer empNo //員工編號?? ??? ??? ?private String empName / ...
JavaScript系列----作用域鏈和閉包
1.作用域鏈 1.1.什么是作用域 談起作用域鏈,我們就不得不從作用域開始談起.因為所謂的作用域鏈就是由多個作用域組成的.那么, 什么是作用域呢? 1.1.1作用域是一個函數在執(zhí)行時期的執(zhí)行環(huán)境. 每 ...
OpenCV處理視頻序列的類
代碼出處,opencv2 cookbook: /*--------------------------------------------------------------------------- ...
Kubernetes的三種外部訪問方式:NodePort、LoadBalancer和Ingress(轉發(fā))
原文 http://cloud.51cto.com/art/201804/570386.htm Kubernetes的三種外部訪問方式:NodePort.LoadBalancer和Ingress 最近 ...
關于java異常try catch finally的一道題
這兩天,有人咨詢我一道關于java基礎的題,具體代碼如下: private static int m1() { int a = 10; try { a = 20; throw new RuntimeE ...
POJ.1006 Biorhythms (拓展歐幾里得+中國剩余定理)
POJ.1006 Biorhythms (拓展歐幾里得+中國剩余定理) 題意分析 不妨設日期為x,根據題意可以列出日期上的方程: 化簡可得: 根據中國剩余定理求解即可. 代碼總覽 #include & ...
SOE 中調用第三方dll
一.簡介 在利用soe實現(xiàn)server的擴展的時候,有些時候,需要調用第三方的dll庫.官網中給出了明確的說明,soe中是可以添加第三方的dll文件,但是一直沒有測試.按照官方的步驟應該是一個非常的簡 ...
總結
以上是生活随笔為你收集整理的mysql 存储过程 队列_mysql使用存储过程函数实现批量插入的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 关于携程多玩对接-订单对接
- 下一篇: division mysql_三、被 M