mysql儲存**的四種形式:
1.觸發器
2.儲存過程
3.函式
4.在定時任務中存放**(5.1開始),即事件
儲存過程和儲存函式可以接收引數然後返回值,但是觸發器和事件卻不行
mysql儲存過程:
儲存過程:
是一組為了完成特定功能的sql語句集,經編譯後儲存在資料庫中,使用者通過指定儲存過程的名字並給定引數(如果該儲存過程帶有引數)來呼叫執行它
儲存過程是從mysql5.0開始增加的新功能,大大提高資料庫的處理速度,同時也可以提高資料庫程式設計的靈活性。
過程:封裝起來的若干條語句,呼叫時這些封裝體執行。把此過程儲存到資料庫中即儲存過程
函式:是有乙個返回值的「過程」
過程:沒有返回值的函式
儲存過程的優點:
1.儲存過程增強了sql語言的功能和靈活性(可以sql程式設計,能使用變數,表示式、控制結構體)
2.儲存過程能實現較快的執行速度。(儲存過程要比批處理的執行速度快很多,因為儲存過程是預編譯的。在首次執行乙個儲存過程時查詢,優化器對其進行分析優化,並且給出最終被儲存在系統表中的執行計畫。而批處理的transaction_sql語句在每次執行時都要進行編譯和優化,速度相對慢一些)
3.儲存過程能夠減少網路流量,針對乙個資料庫物件的操作,如果這一操作所涉及的transaction_sql語句被組織儲存過程,那麼當在客戶計算機上呼叫該儲存過程時,網路中傳送的只是該呼叫語句,從而大大增加了網路流量並降低了網路負載。
4.儲存過程可被作為一種安全機制來充分利用。系統管理員通過執行某一儲存過程的許可權進行限制,能夠實現對相應的資料的訪問許可權的限制,避免了非授權使用者對資料的訪問,保證了資料的安全。
5.儲存過程允許標準元件式程式設計。儲存過程被建立後,可以在程式中被多次呼叫,而不必重新編寫該儲存過程的sql語句,而且資料庫專業人員可以隨時對儲存過程進行修改,對應用程式原始碼毫無影響。
儲存過程的基本建立過程:
delimiter // --這裡是建立儲存過程的呼叫結束標誌和開始標誌
create procedure proc1(引數) --建立了乙個名字為proc1的儲存過程,不管有沒有引數,都需要加上括號
begin
--儲存過程開始
select * from user --要儲存的sql語句
end --儲存結束
// --約定的結束標誌
儲存過程的呼叫執行過程
call proc1(引數)//(建立儲存過程的時候的約定的結束符號)
儲存過程引數:
in 引數名字 引數型別 --輸入引數的形式
顯示資料庫中所有的儲存過程:
show procedure status;
顯示某個儲存過程的詳細資訊(procbname為儲存過程的名稱)
show create procedure procbname;
刪除儲存過程
drop procedure if exists procbname;
在黑視窗設定輸出介面為指定的字符集:(黑視窗的預設字符集為gbk,無法更改)
set character_set_results=gbk/utf8;
儲存過程的輸入和輸出:
輸入:(獲取一條id等於p的記錄)
create procedure proc1(in p int)
select * from user where id=p;(在這裡可以用begin和end開始和結束,但是要改變結束符號)
輸出:(找出user表中最大的id,並將其賦給p)
create procedure proc2(out p int)
select max(id) into p from user;
執行:call proc2(@p); --輸入的必須是變數,否則無法成功,也就是一定要帶上@符號,檢視變數值也是一樣
select @p;
輸入輸出:(將p當做輸入引數。判斷其值,然後建立變數賦值,然後列印變數)
delimiter //
create procedure proc6(inout p int)
begin
if p=1 then
set @pg=100;
else
set @pg=200;
end if;
select @pg;
end//
執行: --列印的時,要先給變數賦值
set @p=1//
call proc6(@p)//
建立高效能索引 《高效能Mysql》筆記2
crate table people last name varchar 50 not null,first name varchar 50 not null,dob date not null,gender enum m f not null,key last name,first name,do...
讀高效能mysql筆記
效能監控的好工具 newrelic 效能分析的好工具 percona toolkit show variables like slow show full processlist set profiling 1 select from score cal unsuccessed show profi...
高效能Mysql筆記 優化
了解查詢的整個生命週期,清楚每個階段的時間消耗情況 參考select profiling 檢視profiling是否開啟 set profiling 1 開啟profiling show profiles 檢視每條查詢的效能 show profile for query id 檢視query id的...