MySQL使用函数和存储过程实现:向数据表快速插入大量测试数据

实现过程

1.创建表

CREATE TABLE `user_info` (`id` INT(11) NOT NULL AUTO_INCREMENT,`name` VARCHAR(20) DEFAULT NULL,`age` INT(3) DEFAULT NULL,`pwd` VARCHAR(20) DEFAULT NULL,`phone_number` VARCHAR(11) DEFAULT NULL,`email` VARCHAR(255) DEFAULT NULL,`address` VARCHAR(255) DEFAULT NULL,PRIMARY KEY (`id`)
) ENGINE=INNODB AUTO_INCREMENT=1;

2. 开启允许创建函数

查看mysql是否允许创建函数

SHOW VARIABLES LIKE 'log_bin_trust_function_creators';

这个命令的意思是显示MySQL服务器当前的配置参数中是否包含log_bin_trust_function_creators这个参数,如果包含则显示其值。

如果输出结果中包含log_bin_trust_function_creators这个参数,则说明MySQL服务器当前已经开启了二进制日志的存储函数信任功能。如果没有包含,则说明当前未开启该功能。

它控制是否可以信任存储函数创建者,不会创建写入二进制日志引起不安全事件的存储函数。如果设置为0(默认值,为off),用户不得创建或修改存储函数,除非它们具有除CREATE
ROUTINE或ALTER ROUTINE特权之外的SUPER权限。 设置为0还强制使用DETERMINISTIC特性或READS SQL
DATA或NO SQL特性声明函数的限制。 如果变量设置为1,MySQL不会对创建存储函数实施这些限制。 此变量也适用于触发器的创建。

在这里插入图片描述

创建函数

1. 生成随机姓名

该函数返回一个随机生成的姓名,可根据需要在函数内指定常见的名字和姓氏列表。

DELIMITER $$
DROP FUNCTION IF EXISTS `rand_name`$$
CREATE DEFINER=`root`@`%` FUNCTION `rand_name`() RETURNS VARCHAR(64) CHARSET utf8
BEGIN
/*姓的随机范围568个*/
DECLARE rand_surname TEXT DEFAULT 
'赵钱孙李周吴郑王冯陈褚卫蒋沈韩杨朱秦尤许
何吕施张孔曹严华金魏陶姜戚谢邹喻柏水窦章
云苏潘葛奚范彭郎鲁韦昌马苗凤花方俞任袁柳
酆鲍史唐费廉岑薛雷贺倪汤滕殷罗毕郝邬安常
乐于时傅皮卞齐康伍余元卜顾孟平黄和穆萧尹
姚邵湛汪祁毛禹狄米贝明臧计伏成戴谈宋茅庞
熊纪舒屈项祝董梁杜阮蓝闵席季麻强贾路娄危
江童颜郭梅盛林刁钟徐邱骆高夏蔡田樊胡凌霍
虞万支柯昝管卢莫经房裘缪干解应宗丁宣贲邓
郁单杭洪包诸左石崔吉钮龚程嵇邢滑裴陆荣翁
荀羊於惠甄曲家封芮羿储靳汲邴糜松井段富巫
乌焦巴弓牧隗山谷车侯宓蓬全郗班仰秋仲伊宫
宁仇栾暴甘钭厉戎祖武符刘景詹束龙叶幸司韶
郜黎蓟薄印宿白怀蒲邰从鄂索咸籍赖卓蔺屠蒙
池乔阴鬱胥能苍双闻莘党翟谭贡劳逄姬申扶堵
冉宰郦雍卻璩桑桂濮牛寿通边扈燕冀郏浦尚农
温别庄晏柴瞿阎充慕连茹习宦艾鱼容向古易慎
戈廖庾终暨居衡步都耿满弘匡国文寇广禄阙东
欧殳沃利蔚越夔隆师巩厍聂晁勾敖融冷訾辛阚
那简饶空曾毋沙乜养鞠须丰巢关蒯相查后荆红
游竺权逯盖益桓公万俟司马上官欧阳夏侯诸葛
闻人东方赫连皇甫尉迟公羊澹台公冶宗政濮阳
淳于单于太叔申屠公孙仲孙轩辕令狐钟离宇文
长孙慕容鲜于闾丘司徒司空丌官司寇仉督子车
颛孙端木巫马公西漆雕乐正壤驷公良拓跋夹谷
宰父谷梁晋楚闫法汝鄢涂钦段干百里东郭南门
呼延归海羊舌微生岳帅缑亢况郈有琴梁丘左丘
东门西门商牟佘佴伯赏南宫墨哈谯笪年爱阳佟
第五言福百家姓终';
/*名的随机范围401个常用汉字。*/
DECLARE rand_name TEXT DEFAULT
'的一了是我不在人们有来他这上着个地到大里说去子得也和那要下看天时过出小么起你都把好还多
没为又可家学只以主会样年想能生同老中从自面前头到它后然走很像见两用她国动进成回什边作对
开而已些现山民候经发工向事命给长水几义三声于高正妈手知理眼志点心战二问但身方实吃做叫当
住听革打呢真党全才四已所敌之最光产情路分总条白话东席次亲如被花口放儿常西气五第使写军吧
文运在果怎定许快明行因别飞外树物活部门无往船望新带队先力完间却站代员机更九您每风级跟笑
啊孩万少直意夜比阶连车重便斗马哪化太指变社似士者干石满决百原拿群究各六本思解立河爸村八
难早论吗根共让相研今其书坐接应关信觉死步反处记将千找争领或师结块跑谁草越字加脚紧爱等习
阵怕月青半火法题建赶位唱海七女任件感准张团屋爷离色脸片科倒睛利世病刚且由送切星晚表够整
认响雪流未场该并底深刻平伟忙提确近亮轻讲农古黑告界拉名呀土清阳照办史改历转画造嘴此治北
必服雨穿父内识验传业菜爬睡兴';
/*姓*/
DECLARE surname VARCHAR(2) ;
/*姓的随机数1-576*/
DECLARE surname_num INT(3) DEFAULT FLOOR(RAND()*568)+1;
/*名*/
DECLARE `name` VARCHAR(14) ;
/*名的随机数1-401*/
DECLARE `name_num` INT(3) DEFAULT FLOOR(RAND()*401)+1;
DECLARE `name_num2` INT(3) DEFAULT FLOOR(RAND()*401)+1;
/*名的字数,这里设置为1-2个字。*/
DECLARE `name_no` INT(3) DEFAULT FLOOR(RAND()*2)+1;
#姓
SELECT SUBSTRING(rand_surname,surname_num,1) INTO surname;
IF
name_no=1
THEN
#名
SELECT SUBSTRING(rand_name,name_num,1) INTO `name`;
ELSE
#名
SELECT CONCAT(SUBSTRING(rand_name,name_num,1),SUBSTRING(rand_name,name_num2,1)) INTO `name`;
END IF;
RETURN CONCAT(surname,`name`);
END$$
DELIMITER;

在这里插入图片描述

2. 生成随机整数

用于生成一个随机整数,整数的范围由参数 from_num 和 to_num 指定。函数的作用是在指定的范围内生成一个随机整数。

DELIMITER $$
DROP FUNCTION IF EXISTS `rand_num`$$
CREATE FUNCTION rand_num (from_num INT ,to_num INT) RETURNS INT(11)
BEGIN   DECLARE i INT DEFAULT 0;  SET i = FLOOR(from_num +RAND()*(to_num -from_num+1));
RETURN i;  
END$$

在这里插入图片描述

3. 生成随机密码

该函数返回一个随机生成的密码,长度由参数 length 指定,默认为字母、数字和特殊字符的随机组合。

DELIMITER $$
DROP FUNCTION IF EXISTS `rand_password`$$
CREATE FUNCTION rand_password(length INT) RETURNS VARCHAR(255)
BEGINDECLARE chars_str varchar(100) DEFAULT 'abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789!@#$%^&*';DECLARE return_str varchar(255) DEFAULT '';DECLARE i INT DEFAULT 0;DECLARE n INT DEFAULT 10;WHILE i<n DOSET return_str =concat(return_str,substring(chars_str,FLOOR(1+RAND()*62),1));SET i=i+1;END WHILE;RETURN return_str;
END $$

在这里插入图片描述

4. 生成随机手机号

该函数返回一个随机生成的手机号码,前缀默认为 “1”,后缀为随机生成的位数。

DELIMITER $$
DROP FUNCTION IF EXISTS `rand_phone_number`$$
CREATE FUNCTION rand_phone_number() RETURNS VARCHAR(11)
BEGINDECLARE prefix VARCHAR(1) DEFAULT '1';DECLARE suffix VARCHAR(10);SET suffix = LPAD(FLOOR(RAND() * 10000000000), 10, '0');RETURN CONCAT(prefix, suffix);
END$$

在这里插入图片描述

5. 生成随机email

该函数返回一个随机生成的邮箱地址,前缀长度通过参数 prefix_length 指定,默认为字母和数字的随机组合。

DELIMITER $$
DROP FUNCTION IF EXISTS `rand_email`$$
CREATE FUNCTION rand_email(prefix_length INT) RETURNS VARCHAR(255)
BEGINDECLARE domain VARCHAR(255) DEFAULT 'example.com';DECLARE prefix VARCHAR(255);SET prefix = CONCAT(SUBSTRING('abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789', FLOOR(1 + RAND() * 62), 1), SUBSTRING('abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789', FLOOR(1 + RAND() * 62), prefix_length - 1));RETURN CONCAT(prefix, '@', domain);
END$$

在这里插入图片描述

6. 生成随机地址

该函数返回一个随机生成的地址,可以根据需求在函数内指定常见的城市和街道列表。

DELIMITER $$
DROP FUNCTION IF EXISTS `rand_address`$$
CREATE FUNCTION rand_address() RETURNS VARCHAR(255)
BEGINDECLARE cities VARCHAR(255) DEFAULT '北京,上海,广州,杭州,成都,西安,宁波,大连';DECLARE streets VARCHAR(255) DEFAULT '和平街,解放路,建设路,西湖路,宽窄箱子,长安路,南塘一街,海港路';DECLARE city VARCHAR(255);DECLARE street VARCHAR(255);SET city = SUBSTRING_INDEX(SUBSTRING_INDEX(cities, ',', FLOOR(1 + RAND() * (LENGTH(cities) - 1))), ',', -1);SET street = SUBSTRING_INDEX(SUBSTRING_INDEX(streets, ',', FLOOR(1 + RAND() * (LENGTH(streets) - 1))), ',', -1);RETURN CONCAT(street, ', ', city);
END$$

在这里插入图片描述

创建存储过程

编写存储过程插入数据

CREATE DEFINER=`root`@`%` PROCEDURE `insert_user`(max_num INT)
BEGIN  DECLARE i INT DEFAULT 0;   # 把autocommit设置成0  SET autocommit = 0;    REPEAT  SET i = i + 1;  INSERT INTO user_info (`name`, age, pwd, phone_number,email,address ) VALUES (rand_name(), rand_num(18,80), rand_password(6),rand_phone_number(),rand_email(9), rand_address());  UNTIL i = max_num  END REPEAT;  COMMIT;  
END

调用存储过程

调用存储过程插入十万条数据

CALL insert_user_info(10000); 

在这里插入图片描述
在这里插入图片描述

我们可以看到数据库中已经有了一万条数据,我们可以用这种方式去虚拟一些数据,然后去测一些sql的执行性能。

好了今天的分享到这里就结束了,觉得对您有用的话就点个赞,谢谢!!!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/179632.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

DHCP协议及实验omnipeek抓包工具分析 IPv4协议

一 抓包命令 adb shell tcpdump -i wlan0 -w /data/tcpdump.pcap 抓包后截图如下 二 DHCP是什么 2.1 DHCP定义 DHCP( Dynamic Host Configuration Protocol, 动态主机配置协议)定义: 存在于应用层(OSI) 前身是BOOTP(Bootstrap Protocol)协议 是一个使用UDP(User …

如何编写自己的python包,并在本地进行使用

如何编写自己的python包,并在本地进行使用 一、直接引用 1.创建Python项目pythonProject。 2.并且在此项目下创建pg_message包。 3.pg_message包下默认生成_init_.py文件。 Python中_init_.py是package的标志。init.py 文件的一个主要作用是将文件夹变为一个Python模块,Pyt…

使用Jmeter进行http接口测试

前言&#xff1a; 本文主要针对http接口进行测试&#xff0c;使用Jmeter工具实现。 Jmter工具设计之初是用于做性能测试的&#xff0c;它在实现对各种接口的调用方面已经做的比较成熟&#xff0c;因此&#xff0c;本次直接使用Jmeter工具来完成对Http接口的测试。 一、开发接口…

杂记 | 使用Docker安装并配置MongoDB以支持事务(单副本,并解决了证书文件错误的问题)

文章目录 00 安装前的准备01 创建Docker Compose文件02 设置证书文件03 启动MongoDB04 初始化副本集和创建用户05 验证安装 00 安装前的准备 在开始之前&#xff0c;确保已经安装了Docker&#xff0c;本文基于Docker Compose进行示范&#xff0c;没有装Docker Compose也可将其…

人大金仓亮相2023信息技术应用创新论坛

11月25日&#xff0c;2023信息技术应用创新论坛在常州开幕。人大金仓受邀分享信息技术应用创新行业应用典型成果&#xff0c;在论坛展览部分集中展示了最具代表性的新产品、应用及解决方案。 江苏省工业和信息化厅副厅长池宇、中国电子工业标准化技术协会理事长胡燕、常州市常务…

量子力学技术前沿:探索、挑战与未来

量子力学技术前沿:探索、挑战与未来 一、引言 量子力学,这门揭示微观世界规律的学科,自诞生以来就在科技领域发挥着举足轻重的作用。随着科技的飞速发展,量子力学的应用也在不断拓展和深化。今天,我将带领大家一起领略量子力学技术的魅力,探讨其发展趋势和挑战。 二、量…

windows系统mobaxterm远程执行linux上ssh命令

命令如下 start "" "%~dp0\MobaXterm_Personal_23.4.exe" -newtab "sshpass -p root ssh root192.168.11.92 mkdir 33" -p 是密码 左边是用户名&#xff0c;右边是服务器ip 后面跟的是服务器上执行的命令 第一次执行的时候要设置mobaxt…

使用std::mutext与std::condition_variables实现信号量

1. 信号量的定义 2. 使用std::mutext与std::condition_variables实现信号量 代码来自&#xff1a;https://zhuanlan.zhihu.com/p/462668211 #ifndef _SEMAPHORE_H #define _SEMAPHORE_H #include <mutex> #include <condition_variable> using namespace std;cla…

ArrayList和顺序表

目录 线性表 顺序表 实现顺序表&#xff1a; 1&#xff0c;添加元素的时候我们要判断是否需要扩容 2&#xff0c;写异常 3,数组清空 ArrayList&#xff1a; ArrayList的构造方法&#xff1a; ArrayList的add方法&#xff1a; ArrayList的subList 知识点补充&#xff…

业务逻辑漏洞

业务逻辑漏洞 扫描器扫不出来 漏洞包括 暴力破解任意用户/密码登陆短信/邮箱轰炸验证码绕过/爆破/重放/回传用户名/手机号枚举(用户名枚举&#xff1a;当用户登录时&#xff0c;显示用户名不存在&#xff0c;或密码不正确&#xff0c;两个其中一个不正确就称为用户名枚举)越…

el-table,列表合并,根据名称列名称相同的品名将其它列值相同的进行合并

el-table,列表合并,根据名称列名称相同的品名讲其它列值相同的进行合并,并且不能垮品名合并 如图 用到el-table合并行的方法合并 tableSpanMethod({ row, column, rowIndex, columnIndex }) {if (column.property "materielName") {//合并商品名const _row this…

一加7Pro为PixelExperience系统编译kernelsu

前言 之前写了一篇文章为一加七Pro(LineageOs17.1 4.14内核版本)编译KernelSu&#xff0c;最近想换个系统玩玩&#xff0c;因为我发现我自己编译的系统总是被某些APP风控了&#xff0c;比如淘宝有些活动就参与不了。 正好可以试试PixelExperience&#xff0c;顺便为PixelExpe…

Django项目部署本地windows IIS(详细版)和static文件设置(页面样式正常显示)

目录 必要条件&#xff1a; 一、下载并启用wfastcgi 二、window安装 IIS功能 三、IIS管理器中添加网站 1、复制项目 2、复制wfastcgi.py文件 3、创建文件web.config 4、添加网站&#xff0c;填写信息 5、启动fastcgi程序 6、修改进程标识 四、static文件设置和正确显…

【2023传智杯】第六届传智杯程序设计挑战赛AB组-DEF题解题分析详解【JavaPythonC++解题笔记】

本文仅为【2023传智杯】第六届传智杯程序设计挑战赛-题目解题分析详解的解题个人笔记,个人解题分析记录。 本文包含:第六届传智杯程序设计挑战赛题目、解题思路分析、解题代码、解题代码详解 文章目录 一.前言更新进度记录二.比赛题目(AB俩组)D题题目-abbE题题目 -kotori和…

Appium 2 和 Appium Inspector 环境部署

前言 自 2022 年 1 月 1 日起&#xff0c;Appium 核心团队不再维护 Appium 1.x。官方支持的平台驱动程序的所有最新版本均不兼容 Appium 1.x&#xff0c;需要 Appium 2 才能运行。 Appium 2是一个自动化移动应用程序的开源工具&#xff0c;它带来了以下重要改进&#xff1a;  …

人工智能原理复习--知识表示(一)

文章目录 上一篇知识概述命题逻辑谓词逻辑谓词逻辑的应用 下一篇 上一篇 人工智能原理复习–绪论 知识概述 知识就是人类认识自然界的精神产物&#xff0c;是人类进行智能活动的基础。 是经过加工的信息&#xff0c;包括事实、信念和启发式规则。 分类&#xff1a; 按作用可…

【数值计算方法(黄明游)】常微分方程初值问题的数值积分法:欧拉方法(向前Euler)【理论到程序】

文章目录 一、数值积分法1. 一般步骤2. 数值方法 二、欧拉方法&#xff08;Euler Method&#xff09;1. 向前欧拉法&#xff08;前向欧拉法&#xff09;a. 基本理论b. 典例解析c. 算法实现 常微分方程初值问题的数值积分法是一种通过数值方法求解给定初始条件下的常微分方程&am…

【C++初阶】五、类和对象(日期类的完善、流运算符重载函数、const成员、“”取地址运算符重载)

相关代码gitee自取&#xff1a; C语言学习日记: 加油努力 (gitee.com) 接上期&#xff1a; 【C初阶】四、类和对象 &#xff08;构造函数、析构函数、拷贝构造函数、赋值运算符重载函数&#xff09;-CSDN博客 一 . 日期类的完善 此次日期类的成员函数&#xff0c;采用声明…

Android中的多进程

在Android中也可以像pc一样开启多进程&#xff0c;这在android的编程中通常是比较少见的&#xff0c;以为在一个app基本上都是单进程工作就已经足够了&#xff0c;有一些特殊的场景&#xff0c;我们需要用多进程来做一些额外的工作&#xff0c;比如下载工作等。 在Android的An…

Elasticsearch底层原理分析——新建、索引文档

es版本 8.1.0 重要概念回顾 Elasticsearch Node的角色 与下文流程相关的角色介绍&#xff1a; Node Roles配置主要功能说明masternode.roles: [ master ]有资格参与选举成为master节点&#xff0c;从而进行集群范围的管理工作&#xff0c;如创建或删除索引、跟踪哪些节点是…