平时和数据打交道比较多的测试同学,可能会经常接触到数据库,增删改查是最基本的sql语句运用,但是遇到一些特殊场景的时候,需要同时对大批量数据进行操作,常备的基本句式可能就应付不过来了,例如你要准备5万条测试数据,难道要用insert into一行行新增吗;或者让你批量修改某张大表中的某一列数据呢?
这种时候我们往往需要借助存储过程。
存储过程,就是在数据库中编写的sql语句集合,只要编写一次就可以反复使用,学习过Python或者其它语言的同学,把它当成函数或者方法,可能会更加容易理解一点。
----------------------------------------
首先,我们来学习一下,存储过程的基本结构:
存储过程叫做procedure,我们使用create语句来创建,begin和end中间的部分,就是存储过程需要执行的语句。
test是这个存储过程的名字,括号里面可以写传入或者传出的参数,我们来写个简单的例子。
这个例子里面,添加了两行新内容,in a int,in b int ,表示可以接收用户传入的两个整型值,select a+b 表示将用户传入的两个值相加后输出打印。
调用刚刚写好的存储过程,我们使用call。
call后面加上存储过程的名字,括号中加上传入的参数值,数量和顺序要与定义的参数类型和数量一致。
----------------------------------------
除了可以在括号中定义参数,也可以在存储过程内部定义。
declare是声明变量的名字和类型,set给这个变量赋值,select将其值输出打印。
----------------------------------------
接下来可以讲讲最基本的两个控制语句了。
----------------------------------------
if 判断语句在存储过程中的基本结构是:
写一个简单的脚本:
脚本的意思是,让用户输入一个数,我在过程内定义一个数,然后比较两个数字的大小。
----------------------------------------
循环语句可选择的比较多,这里我们主要用while来尝试一下。
while的基本语法结构是:
我们来写个简单的例子
循环的打印1到10的数(一定要注意循环中是否有自增或者自减的存在):
----------------------------------------
现在我们来看看如何使用随机函数来制造随机的数字、随机的字符串和随机的日期。
随机函数在mysql中是rand(),这个函数随机的范围是0--1之间的小数。
★如果想要随机某个范围的整数,有个基本的数学公式:
floor(开始值+rand()*(结束值-开始值+1));
例如要随机50-100之间的整数,可以使用floor(50+rand()*(100-50+1));
★随机字符串需要将rand()随机,substr()字符串截取,concat()字符串拼接这几个函数结合起来运行
举个例子,加入现在想要随机一个姓名,可以简单的这么设计,随机一个姓,再随机一个名,然后拼起来。
现在实现姓的随机:
在百家姓中随机一个位置,然后截取一个长度的字符,这不就是随机一个姓氏吗。
相同的操作再来一遍:
现在我们有了随机的名。
最后拼接一下:
随机的名字出现了!
★随机的日期我们也可以实现一下:
看到这里的同学们,肯定觉得脚本已经渐渐疯狂......
还没有停止,我们把这些随机统统塞到一起去,实现往表中指定插入数据的效果。
现在有张空表,往里面插入100行测试数据:
看下效果:
搞定!!!
学会了吗?