mysql的儲存過程初識 初識MySQL儲存過程

2021-10-18 23:44:22 字數 2652 閱讀 1619

儲存過程(stored procedure)是一組為了完成特定功能的sql語句集,經編譯後儲存在資料庫中,使用者通過指定儲存過程的名字並給定引數(如果該儲存過程帶有引數)來呼叫執行它。

mysql 儲存過程是從mysql 5.0開始增加的新功能。大大提高資料庫的處理速度,同時也可以提高資料庫程式設計的靈活性。 過程:封裝起來的若干條語句,呼叫時這些封裝體執行。把此過程儲存到資料庫中即儲存過程. 函式:是乙個有返回值的「過程」。 過程:沒有返回值的函式。 儲存過程的優點:

1、儲存過程增強了

sql語言的功能和靈活性(可以sql程式設計,能使用變數,表示式、控制結構體)

2、儲存過程能實現較快的執行速度。(

儲存過程要比批處理的執行速度快很多,

因為儲存過程是預編譯的。在首次執行乙個儲存過程時查詢,優化器對其進行分析優化,並且給出最終被儲存在系統表中的執行計畫。而批處理的

transaction-sql

語句在每次執行時都要進行編譯和優化,速度相對要慢一些。

3、儲存過程能過減少網路流量。

針對同乙個資料庫物件的操作(如查詢、修改),如果這一操作所涉及的

transaction-sql

語句被組織程儲存過程,那麼當在客戶計算機上呼叫該儲存過程時,網路中傳送的只是該呼叫語句,從而大大增加了網路流量並降低了網路負載。

4、儲存過程可被作為一種安全機制來充分利用。

系統管理員通過執行某一儲存過程的許可權進行限制,能夠實現對相應的資料的訪問許可權的限制,避免了非授權使用者對資料的訪問,保證了資料的安全。

5、儲存過程允許標準元件是程式設計。儲存過程被建立後,可以在程式中被多次呼叫,而不必重新編寫該儲存過程的sql語句。而且資料庫專業人員可以隨時對儲存過程進行修改,對應用程式源**毫無影響。

儲存過程的建立:

delimiter $$ //定義分隔符

create procedure p() //p為過程名

begin

--sql語句 //封裝語句體

end $$

檢視已有的儲存過程:show procedure status \g;

呼叫儲存過程:call 儲存過程名稱();

刪除儲存過程:drop procedure 儲存過程名稱;

變數宣告:儲存過程中用declare宣告變數

格式:declare變數名 變數型別 [default 預設值]

儲存過程中,變數可以在sql語句中合法的運算,如+ - * /

運算結果如何賦值 set變數:=表示式

儲存過程傳參:儲存過程的括號裡,可以宣告引數。 語法是 create procedure p([in/out/inout] 引數名  引數型別 ..)

例項一:建立 運算 賦值

create procedure p1()

begin

declare age int default 18;

declare height int default 180;

set age := age +20;

select concat('年齡是', age, '身高是', height);

end$$

例項二 :if/else 控制結構

create procedure p2()

begin

declare age int default 18;

declare height int default 180;

if age >= 18 then

select "已成年";

else

select "未成年";

end if;

end$$

例項三:while/do 控制結構

求1-100的和

create procedure p3()

begin

declare total int default 0;

declare num int default 0;

while num<=100 do

set total := num + total;

set num := num + 1;

end while;

select total;

end$$

例項四:case 控制結構

create procedure p4()

begin

declare num int default 0;

set num := floor(4*rand());

case num

when 1 then select "cat";

when 2 then select "dog";

when 3 then select "sheep";

else select "pig";

end case;

end$$

例項五:repeat迴圈

create procedure p5()

begin

declare num int default 0;

declare total int default 0;

repeat

set total = num + total;

set num := num + 1;

until num>100 end repeat;

select total;

end$$

初識MySQL初識MySQL語句

什麼是資料庫?資料庫管理系統 資料庫管理員 資料庫伺服器 什麼是表?資料 記錄 mysql select user 檢視當前使用者 mysql exit 也可以用 q quit退出 預設使用者登陸之後並沒有實際操作的許可權 需要使用管理員root使用者登陸 mysql uroot p mysql5....

初識物件儲存

初識物件儲存 一 前言 隨著在各行業廣泛的應用,物件儲存技術逐漸被大眾所耳聞,特別是amazon於2006年推出的s3 storage service 以及作為openstack最初核心子專案之一的swift。本文試圖梳理物件儲存的一些基本概念,幫助讀者對其建立乙個初步的認識。二 什麼是物件儲存 物...

初識MySQL簡答題 初識mysql

資料儲存架構 資料庫伺服器執行資料庫管理系統 dbms 資料庫管理系統管理資料庫 database 資料庫組織表 table 表存放記錄 常見資料庫 關係型 rdbms 表結構形式儲存資料,要求每條資料有同樣的結構 mysql 最廣泛 oracle 金融 國企使用 sql server 教學使用 s...