mysql儲存過程的基本概念和建立

2021-08-29 23:40:59 字數 3032 閱讀 9411

1.建立儲存過程

2.呼叫儲存過程

3.儲存過程體

4.語句塊標籤

1.in:向過程裡傳參

2.out:過程向外傳參值

3.inout:既實現in又實現out   in and out

sql語句:先編譯後執行

儲存過程:

一組可程式設計的函式,是為了完成特定功能的sql語句集,經編譯建立並儲存在資料庫中,使用者可通過指定儲存過程的名字並給定引數(需要時)來呼叫執行。

優點:儲存過程是預編譯的,而批處理的transaction-sql語句在每次執行時都要進行編譯和優化,速度相對要慢一些

將重複性很高的一些操作,封裝到乙個儲存過程中,簡化了對這些sql的呼叫

統一了介面,確保資料的安全

儲存過程的建立和呼叫:

儲存過程就是一段具有名字的**,用來完成某個特定的操作

建立的儲存過程儲存在資料庫的資料字典中

建立儲存過程使用procedure關鍵字

建立表tb_stu並在表中插入如下資料:

+------+------+------+------------+

| id | name | *** | birthday |

+------+------+------+------------+

| 2 | 小紅 | 女 | 2008-07-06 |

| 1 | 小明 | null | null |

| 3 | 小明 | 男 | 2011-07-10 |

| 4 | 張三 | 男 | 2005-06-22 |

| 4 | 小黃 | 女 | 2007-04-22 |

| 4 | 李四 | 男 | 2001-06-29 |

+------+------+------+------------+

示例:建立儲存過程刪除***列為"男"的記錄

mysql> delimiter $$    #將語句的結束符號從分號;臨時改為兩個$$(可以是自定義)

mysql> create procedure delete_tb_stu(in p_*** varchar(255))

-> begin

-> delete from tb_stu

-> where *** = p_***;

-> end$$

query ok, 0 rows affected (0.00 sec)

mysql> delimiter ; #將語句的結束符號恢復為分號

解析:我們建立了乙個叫delete_tb_stu的儲存過程,內容被包括在begin...end語句塊內,我們在定義過程時,使用delimiter $$ 命令將語句的結束符號從分號 ; 臨時改為兩個$$,使得過程體中使用的分號被直接傳遞到伺服器,而不會被客戶端(如mysql)解釋(內容中的分號必須要)。

呼叫儲存過程(call sp_name[(傳參)];):

mysql> select * from tb_stu;

+------+------+------+------------+

| id | name | *** | birthday |

+------+------+------+------------+

| 2 | 小紅 | 女 | 2008-07-06 |

| 1 | 小明 | null | null |

| 3 | 小明 | 男 | 2011-07-10 |

| 4 | 張三 | 男 | 2005-06-22 |

| 4 | 小黃 | 女 | 2007-04-22 |

| 4 | 李四 | 男 | 2001-06-29 |

+------+------+------+------------+

6 rows in set (0.00 sec)

mysql> call delete_tb_stu("男");

query ok, 3 rows affected (0.00 sec)

mysql> select * from tb_stu;

+------+------+------+------------+

| id | name | *** | birthday |

+------+------+------+------------+

| 2 | 小紅 | 女 | 2008-07-06 |

| 1 | 小明 | null | null |

| 4 | 小黃 | 女 | 2007-04-22 |

+------+------+------+------------+

3 rows in set (0.00 sec)

儲存內容體:

>儲存過程體包含了在過程呼叫時必須執行的語句,例如:dml、ddl語句,if-then-else和while-do語句、宣告變數的declare語句等

>過程體格式:以begin開始,以end結束(可巢狀)

begin

begin

begin

statements;

endend

end

儲存過程的引數:

儲存過程可以有0個或多個引數,用於儲存過程的定義。

3種引數型別:

in輸入引數:表示呼叫者向過程傳入值(傳入值可以是字面量或變數)

out輸出引數:表示過程向呼叫者傳出值(可以返回多個值,傳出值只能是變數)

inout輸入輸出引數:既表示呼叫者向過程傳入值,又表示過程向呼叫者傳出值(值只能是變數)

注意:即使過程沒有引數,也必須在過程名後面加上小括號

刪除儲存過程:

mysql> drop procedure delete_tb_stu;

query ok, 0 rows affected (0.00 sec)

mysql 生成UUID 儲存過程的基本概念

md5 32位 sha1 40位 她們都是單向加密 select md5 admin sha1 admin password admin uuid 36位16進製制的全球唯一字串 select uuid length uuid select uuid select format 12131321,2...

儲存的基本概念

1.磁碟分割槽的基本概念 另行參考 硬碟的分割槽由主分割槽 擴充套件分割槽和邏輯分割槽組成 主分割槽 包括擴充套件分割槽 的最大個數是四個,主分割槽 包含擴充套件分割槽 的個數是由硬碟的主引導記錄mbr master boot recorder 決定的,mbr存放啟動管理程式 grub,lilo,n...

儲存過程的基本語法與事務的基本概念

例如 銀行轉賬的典型案例 語法 begin transition 開始事務 declare money int 定義變數來判斷sql語句是否報錯 update bank set money money 100 where person 張總 張總的賬戶減少100萬 money error error...