利用SQL函数批量插入测试数据

学习过程中需要创建一张含有批量数据的测试表,可以使用高级语言插入,但感觉比较麻烦,搜了搜可以采用SQL函数,直接在命令行页面批量插入。

  1. 数据库名为studytest,表名为student:
CREATE DATABASE studytest;
use studytest;
CREATE TABLE `student` (
  `s_id` int(11) NOT NULL AUTO_INCREMENT,
  `s_name` varchar(100) DEFAULT NULL,
  `s_age` int(11) DEFAULT NULL,
  `s_phone` varchar(30) DEFAULT NULL,
  PRIMARY KEY (`s_id`),
  KEY `s_name` (`s_name`)
) ENGINE=InnoDB, CHARSET=utf8;
  1. SQL函数:
-- 定义分界符
DELIMITER $$
CREATE PROCEDURE insert_student(IN START INT(10),IN max_num INT(10))
BEGIN
  DECLARE i INT DEFAULT START;
  -- 关闭自动提交
  SET autocommit=0;
  REPEAT
  SET i=i+1;
  INSERT INTO student (s_id,s_name,s_age,s_phone) VALUES (i,CONCAT('name_',i),MOD(i,70),CONCAT('phone_',i));
  UNTIL i=max_num
  END REPEAT;
  COMMIT;
END $$
  1. 调用该函数:
-- 先把分隔符换回来,方便操作。不换回来也行,就是以后的;都要写成 $$
DELIMITER ; $$
CALL insert_student(0,100000);
  1. 恢复自动提交:
    MySQL默认开启自动提交。除非显式地开始一个事务,否则每个查询都被当做一个单独的事务自动执行。
SET autocommit=1;

查看autocommit状态:
命令:show variables like 'autocommit';

结果:
利用SQL函数批量插入测试数据_第1张图片
autocommit.png
  1. PS:也可以直接利用SQL工具,如Navicat创建函数,完成批量插入。详见:mysql使用函数批量插入数据

  2. 完成后的student表:


    利用SQL函数批量插入测试数据_第2张图片
    result.png

参考博客:
mysql使用存储过程&函数实现批量插入
MySQL用存储过程与函数批量插入数据
MySQL事务autocommit自动提交

你可能感兴趣的:(利用SQL函数批量插入测试数据)