日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 运维知识 > 数据库 >内容正文

数据库

MySQL(8)数据库中的高级(进阶)正则和存储过程

發布時間:2024/9/3 数据库 22 豆豆
生活随笔 收集整理的這篇文章主要介紹了 MySQL(8)数据库中的高级(进阶)正则和存储过程 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

文章目錄

  • 一、正則表達式(REGEXP)
    • 1.1 正則表達式匹配符
    • 1.2 正則表達式示例
      • 示例1:查找name中包含字符串’羅’的數據
      • 示例2:查找age中年齡是2開頭的數據
      • 示例3:查找value中1和0之間是任意字符的數據
      • 示例4:查找value中包含80的,且0可以是任意個的數據
      • 示例5:查找age中年齡是29或者34歲的數據
      • 示例6:查找value中身價為0到3開頭的數據
  • 二、存儲過程
    • 2.1 存儲過程的優點
    • 2.2 創建、調用和查看存儲的過程
      • 1)創建存儲過程
      • 2)調用存儲過程
      • 3)查看存儲過程
      • 4)刪除存儲過程
    • 2.3 存儲過程的參數
    • 2.4 存儲過程的控制語句
      • 2.4.1 條件控制語句 if-then-else … end if
      • 2.4.2 循環語句 while … end while

一、正則表達式(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 KaTeX parse error: Expected 'EOF', got '#' at position 2: #?將語句的結束符號從分號;臨時改… (可以是自定義)
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 KaTeX parse error: Expected 'EOF', got '#' at position 2: #?修改默認結束符為
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 KaTeX parse error: Expected 'EOF', got '#' at position 2: #?修改默認結束符為
-> 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)查看調用存儲過程之后的數據

總結

以上是生活随笔為你收集整理的MySQL(8)数据库中的高级(进阶)正则和存储过程的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。