1.什麼是儲存過程?
簡單來說,就是為以後的使用而儲存的一條或多條mysql語句的集合。
2.為什麼使用儲存過程?
通過把處理封裝在容易使用的單元中,簡化複雜的操作。
批量處理,簡化對變動的管理。
統一介面,確保了資料的安全。
3.儲存過程的使用
--使用無參
create
procedure 函式名(
)begin
語句;end;
--使用有參
create
procedure 函式名(引數1
,引數2...
)begin
語句;end;
out輸出引數:從儲存過程中傳出。
create
procedure func(
out c int
,out m int
,out e int
)begin
select
max(chinese)
into c from students;
select
max(math)
into m from students;
select
max(english)
into e from students;
end;
--執行
call func(@a,
@b,@c)
;--輸出資料
select@a,
@b,@c;
in輸入引數:傳遞給儲存過程。
create
procedure func (
in p int
)begin
select p;
end;
set@p=20
;call func(@p)
;
inout輸入輸出引數:對儲存過程傳入和傳出。
create
procedure func (
inout p int
)begin
select p;
end;
set@p=20
;call func(@p)
;select
@p;
如果在mysql命令列中執行,要用下面這種形式:
mysql>
delimiter
//mysql>
create
procedure 函式名()-
>
begin
-> 語句;
->
end//
mysql>
delimiter
;
call 函式名(
);
drop
procedure 函式名;
僅當存在時刪除(如果過程不存在也不會報錯),可以使用drop procedure if exists 函式名語句。
drop
procedure
ifexists 函式名;
show
create
procedure 函式名;
可以限制過程狀態結果,使用 show procedure status語句。
show
procedure
status
like
'...'
;
若有不當之處,歡迎指正!
mysql思考7 關於Uber選擇MySQL的思考
在資料庫圈子,大家都知道今年uber幹出來一件大事件,把postgresql切換到了mysql,當時社群裡一陣喧嘩。事情已經過去半年多了,這裡我不想去和大家再次討論這兩個關係型資料庫那個更好。只是想帶著大家思考一下選擇的背後。在該事件中,uber提出來遷移的乙個重要原因是 在大量更新的業務場景下po...
關於mysql的學習筆記(一)
mysql 顯示所有的資料庫,msyql show databases 顯示命令 顯示資料庫列表 show databases 顯示庫中的資料表 use mysql show tables 顯示資料表的結構 describe 表名 顯示表中所有記錄 select from 表名 建庫 create ...
MYSQL學習筆記 關於MySQL的多表操作 2
實際開發中,乙個專案通常需要很多張表才能完成。主鍵 和 外來鍵 的概念 主鍵是能確定一條記錄的唯一標識。外來鍵用於與另一張表的關聯,都是指向另乙個表的主鍵。可伸縮性 能夠適應不斷增加的工作量而不失敗,設計良好的資料庫或應用程式稱之為可伸縮性好。普通的多表查詢 select sname,address...