1. 程式人生 > 其它 >MySQL(正則和儲存過程)

MySQL(正則和儲存過程)

一、正則表示式(REGEXP)

1.1 正則表示式匹配符 1.2 正則表示式示例 建立下面mysql表,方便測試使用: 示例1:查詢name中包含字串’羅’的資料 SELECT * FROM football WHERE name REGEXP '羅'; 示例2:查詢age中年齡是2開頭的資料 SELECT * FROM football WHERE age REGEXP '^2'; 示例3:查詢value中1和0之間是任意字元的資料 SELECT * FROM football WHERE value REGEXP '1.0'; 示例4:查詢value中包含80的,且0可以是任意個的資料 SELECT * FROM football WHERE value REGEXP '80*'; 示例5:查詢age中年齡是29或者34歲的資料 示例6:查詢value中身價為0到3開頭的資料

二、儲存過程

儲存過程是組為了完成特定功能的SQL語句集合。 儲存過程在使用過程中是將常用或者複雜的工作預先使用SQL語句寫好並用–個指定的名稱儲存起來,這個過程經編譯和優化後儲存在資料庫伺服器中。當需要使用該儲存過程時,只需要呼叫它即可。儲存過程在執行上比傳統SQL速度更快、執行效率更高。 2.1 儲存過程的優點 1、執行一次後,會將生成的二進位制程式碼駐留緩衝區,提高執行效率; 2、SQL語句加.上控制語句的集合,靈活性高;; 3、在伺服器端儲存,客戶端呼叫時,降低網路負載 5、可完成所有的資料庫操作,也可控制資料庫的資訊訪問許可權 2.2 建立、呼叫和檢視儲存的過程 1)建立儲存過程 DELIMITER $$ #將語句的結束符號從分號;臨時改為兩個$$ (可以是自定義) CREATE PROCEDURE proc() #建立儲存過程,過程名為Proc, 不帶引數 -> BEGIN #過程體以關鍵字BEGIN開始 -> SELECT * FROM football; #過程體語句(自己根據需求進行編寫) -> END $$ #過程體以關鍵字END結束 DELIMITER ; #將語句的結束符號恢復為分號 示例: 2)呼叫儲存過程 CALL proc; 示例: 3)檢視儲存過程 SHOW CREATE PROCEDURE [資料庫.] 儲存過程名; #檢視某個儲存過程的具體資訊(如果在指定庫中,庫名可以省略) SHOW CREATE PROCEDURE athlete.proc; #未省略庫名 SHOW CREATE PROCEDURE proc; #省略庫名 SHOW CREATE PROCEDURE STATUS [LIKE '%proc%'] \G #豎列檢視 示例: 4)刪除儲存過程 DROP PROCEDURE IF EXISTS proc; 示例:刪除儲存過程並檢視 2.3 儲存過程的引數 IN輸入引數: 表示呼叫者向過程傳入值(傳入值可以是字面量或變數) OUT輸出引數: 表示過程向呼叫者傳出值(可以返回多個值)(傳出值只能是變數) INOUT輸入輸出引數: 既表示呼叫者向過程傳入值,又表示過程向呼叫者傳出值(值只能是變數) CREATE PROCEDURE proc1(IN inname CHAR(10)) -> BEGIN -> SELECT * FROM football WHERE name = inname; -> END $$ mysql> DELIMITER ; mysql> CALL proc1('梅西'); 示例: 2.4 儲存過程的控制語句 2.4.1 條件控制語句 if-then-else … end if DELIMITER $$ #修改預設結束符為$$ CREATE PROCEDURE proc2(IN pro int) #建立儲存過程proc2,引數為pro,型別為int -> BEGIN #過程體以關鍵字BEGIN開始 -> DECLARE var int; #定義變數var為int型別 -> SET var=pro*3; #設定變數var等於傳入引數的3倍 -> if var>=10 then #如果變數var大於10,則執行下面過程體 -> UPDATE football SET id=id+10; #設定表football中的id加10 -> else #如果變數var不大於10,則執行下面過程體 -> UPDATE football SET id=id-10; #設定表football中的id減10 -> end if; #結束if語句 -> END $$ #建立儲存過程結束 DELIMITER ; #重新修改預設結束符為原始的; CALL proc2(4); #呼叫proc2儲存過程,並傳入引數4 例項: 1)檢視原始資料 2)建立含有控制語句儲存過程並呼叫 3)檢視呼叫儲存過程之後的資料 2.4.2 迴圈語句 while … end while CREATE TABLE test(id int(3)); #建立test表,只有一個欄位id DELIMITER $$ #修改預設結束符為$$ -> CREATE PROCEDURE proc6() #建立儲存過程proc6 -> BEGIN #過程體以關鍵字BEGIN開始 -> DECLARE var int(10); #定義變數var為int型別(長度最大為10) -> set var=0; #設定var=0 -> while var<6 do #使用while迴圈,var要小於6 -> INSERT INTO test VALUES(var); #滿足條件則進行新增資料,內容為變數var -> set var=var+1; #變數var每次迴圈後加1 -> end while; #結束while迴圈 -> END$$ #建立儲存過程結束 DELIMITER ; #重新修改預設結束符為原始的; CALL proc6; #呼叫proc2儲存過程 例項: 1)建立表test,只有一個欄位id,檢視資料為空 2)建立含有while迴圈語句儲存過程並呼叫 3)檢視呼叫儲存過程之後的資料