日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 运维知识 > 数据库 >内容正文

数据库

mysql 存储过程 队列_mysql使用存储过程函数实现批量插入

發(fā)布時間:2024/3/26 数据库 30 豆豆
生活随笔 收集整理的這篇文章主要介紹了 mysql 存储过程 队列_mysql使用存储过程函数实现批量插入 小編覺得挺不錯的,現(xiàn)在分享給大家,幫大家做個參考.

寫這邊文章的目的,是想結合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使用存储过程函数实现批量插入的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。