平時和資料打交道比較多的測試同學,可能會經常接觸到資料庫,增删改查是最基本的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行測試資料:
看下效果:
搞定!!!
學會了嗎?