使用MySQL存储过程给表批量造数据

存储过程是什么?

存储过程(Stored Procedure)是一种在数据库中存储复杂程序,以便外部程序调用的一种数据库对象。

存储过程是为了完成特定功能的SQL语句集,经编译创建并保存在数据库中,用户可通过指定存储过程的名字并给定参数(需要时)来调用执行。

存储过程思想上很简单,就是数据库 SQL 语言层面的代码封装与重用。

存储过程怎么用?

一、先学习基本语法

MYSQL 存储过程中的关键语法
声明语句结束符,可以自定义:
DELIMITER $$或
DELIMITER //
声明存储过程:
CREATE PROCEDURE demo_in_parameter(IN p_in int)       
存储过程开始和结束符号:
BEGIN .... END    
变量赋值:
SET @p_in=1  
变量定义:
DECLARE l_int int unsigned default 4000000; 
创建mysql存储过程、存储函数:
create procedure 存储过程名(参数)
存储过程体:
create function 存储函数名(参数)

2、存储过程简单的操作

2.1、先创建表

mysql> use demo_hu
Database changed
mysql> CREATE TABLE `users`  (
    ->   `ID` int(11) NOT NULL AUTO_INCREMENT,
    ->   `NAME` varchar(100) DEFAULT NULL,
    ->   `EMAIL` varchar(100)DEFAULT NULL,
    ->   `AGE` int(11) DEFAULT NULL,
    ->   `SEX` varchar(100)DEFAULT NULL,
    ->   `ID_CARD` varchar(100)DEFAULT NULL,
    ->   `MOBILE_PHONE` varchar(100)DEFAULT NULL,
    ->   `VISA_CARD` varchar(100)DEFAULT NULL,
    ->   `OFFICER_CARD` varchar(100)DEFAULT NULL,
    ->   `ADDRESS` varchar(100)DEFAULT NULL,
    ->   PRIMARY KEY (`ID`) USING BTREE
    -> ) ;
Query OK, 0 rows affected (0.02 sec)
mysql> select * from users;
Empty set (0.00 sec)

2.2、存储过程插入数据

示例:批量插入

DROP PROCEDURE IF EXISTS pro_users;
 
DELIMITER &&
CREATE PROCEDURE pro_users(IN inr int)
  BEGIN
  DECLARE i INT DEFAULT 0;
  START TRANSACTION;
   WHILE i<inr DO
    INSERT INTO USERS(id, NAME,EMAIL,AGE,SEX,ID_CARD,MOBILE_PHONE) values(i,'曹植','liuhuyuan@163.com',29,'男','131081197803061637',13663776677); 
    commit;                     
         SET i=i+1; 
   END WHILE; 
  COMMIT;
  END; &&  
 
call pro_users(1000);

执行后查询结果:插入999条数据

mysql> select count(*) from users;
+----------+
| count(*) |
+----------+
|      999 |
+----------+
1 row in set (0.01 sec)
DROP PROCEDURE IF EXISTS pro_users;

DELIMITER &&
CREATE PROCEDURE pro_users(IN inr int)
  BEGIN
  DECLARE i INT DEFAULT 0;
  START TRANSACTION;
   WHILE i<inr DO
    INSERT INTO users(id, NAME,EMAIL,AGE,SEX,ID_CARD,MOBILE_PHONE,VISA_CARD,OFFICER_CARD,ADDRESS) values(i,'曹植','liuhuyuan@163.com',29,'男','131081197803061637',13663776677,'SYP618183458', '军字第00111209号', '北京市朝阳区立水桥北'); 
    commit;                     
         SET i=i+1; 
   END WHILE; 
  COMMIT;
  END; &&  
 
call pro_users(1000);

2.3、存储过程查询数据

#查询1条
DELIMITER &&
CREATE PROCEDURE select_users(IN p_id int)
  BEGIN
      SELECT * from users where id=p_id;
  END; &&  

call select_users(2)


#查询所有
DELIMITER &&
CREATE PROCEDURE select_users_all()
  BEGIN
      SELECT * from users;
  END; &&  

call select_users_all()

  • 2
    点赞
  • 28
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

宁宁可可

您的鼓励是我创作的动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值