MySQL儲存過程高階SQL語句總結

2022-12-07 18:00:21
本篇文章給大家帶來了關於的相關知識,其中主要介紹了關於儲存過程的高階SQL語句的相關內容,下面一起來看一下,希望對大家有幫助。

程式設計師必備介面測試偵錯工具:

推薦學習:

MySQL高階SQL語句(儲存過程)

一、儲存過程的概述

1.1 什麼是儲存過程

儲存過程是一組為了完成特定功能的SQL語句集合。
儲存過程在使用過程中是將常用或者複雜的工作預先使用SQL語句寫好並用一個指定的名稱儲存起來,這個過程經編譯和優化後儲存在資料庫伺服器中。當需要使用該儲存過程時,只需要呼叫它即可。儲存過程在執行上比傳統SQL速度更快、執行效率更高。

1.2 儲存過程的有點

  1. 執行一次後,會將生成的二進位制程式碼駐留緩衝區,提高執行效率。
  2. SQL語句加上控制語句的集合,靈活性高。
  3. 在伺服器端儲存,使用者端呼叫時,降低網路負載。
  4. 可多次重複被呼叫,可隨時修改,不影響使用者端呼叫。
  5. 可完成所有的資料庫操作,也可控制資料庫的資訊存取許可權。

二、建立、呼叫和檢視儲存過程

2.1 建立儲存過程

delimiter $$                 #將語句的結束符號從分號;臨時改為兩個$$(可以自定義)
create procedure proc ()     #建立儲存過程,過程名為proc,不帶引數
-> begin                     #過程體以關鍵字begin開始
-> select * from store_info; #過程體語句
-> end $$                    #過程體以關鍵字end結束

delimiter ;                   #將語句的結束符號恢復為分號
登入後複製

範例:

delimiter $$create procedure proc01 ()-> bengin
-> create table student(id int,name char(10),age int);-> insert into student values(1,'zhangsan',18);-> insert into student values(2,'lisi',18);-> select * from student;-> end $$delimiter ;
登入後複製

在這裡插入圖片描述

2.2 呼叫和檢視儲存過程

call proc;               #呼叫儲存過程



show create procedure [資料庫.]儲存過程名;  #檢視某個儲存過程的具體資訊

show create procedure proc;
show create procedure proc\G

show procedure status [like '%proc%'] \G
登入後複製

範例:

call proc01;   

 show create procedure proc01;
 show create procedure proc01\G       #檢視儲存過程的具體資訊
 
 show procedure status like '%Proc01%'\G
登入後複製

在這裡插入圖片描述
在這裡插入圖片描述
在這裡插入圖片描述

2.3 刪除儲存過程

 #儲存過程內容的修改方法是通過刪除原有儲存過程,之後再以相同的名稱建立新的儲存過程。
drop procedure if exists proc;
 #僅當存在時刪除,不新增If EXISTS 時,如果指定的過程不存在,則產生一個錯誤。
登入後複製

範例:

drop procedure if exists proc01;
登入後複製

在這裡插入圖片描述

三、儲存過程的引數

  • IN 輸入引數: 表示呼叫者向過程傳入值。(傳入值可以是字面量或變數)
  • OUT 輸出引數: 表示過程向呼叫者傳出值。(可以返回多個值)(傳出值只能是變數)
  • INOUT 輸入輸出引數: 既表示呼叫者向過程傳入值,又表示過程向呼叫者傳出值。(值只能是變數)

注意:變數名不能含有下劃線。

delimiter $$create procedure proc2(in stuname char(20))  #引數為stuname,資料型別一定要與下面的where語句後欄位的資料型別相同-> begin
-> select * from student where name = stuname;-> end $$delimiter ;call proc2('zhangsan');       #呼叫儲存過程,並傳入引數‘zhangsan’
登入後複製

在這裡插入圖片描述

四、儲存過程的控制語句

在這裡插入圖片描述

4.1 條件語句 :if-then-else … end if

 delimiter $$  
 create procedure proc03(in innum int)   #建立儲存過程proc03,引數為innum,型別為int 
 -> begin 
 -> declare var int;         #定義變數var為int型別 
 -> set var=innum*2;         #變數var的值等於傳入的引數值乘2
 -> if var>=10 then          #當var的值大於10時,id值會加1,否則減1
 -> update ss set id=id+1;  
 -> else 
 -> update ss set id=id-1;  
 -> end if;  
 -> end $$
  
 delimiter ;
 
 call proc03(8);    #呼叫儲存過程,並傳入引數8
 
 call proc03(3);    #呼叫儲存過程,並傳入引數3
登入後複製

在這裡插入圖片描述

4.2 迴圈語句 :while ···· end while

 delimiter $$                   #修改預設結束符為$$
 create procedure proc05()      #建立儲存過程proc04
 -> begin                       #過程體以關鍵字begin開始
 -> declare var int(10);        #定義變數var為int型別
 -> set var=0;                  #var的起始值為0
 -> while var<6 do              #使用while迴圈,當var值小於6時滿足條件,則向表中插入var的值
 -> insert into ss values(var);  
 -> set var=var+1;              #每次迴圈後var值自增1
 -> end while;                  #結束while迴圈
 -> end $$                      #建立儲存過程結束
 
 delimiter ;                    #重新修改預設結束符為原始的;
 
 call proc05;                   #呼叫儲存過程proc04
登入後複製

在這裡插入圖片描述

推薦學習:

以上就是MySQL儲存過程高階SQL語句總結的詳細內容,更多請關注TW511.COM其它相關文章!