|
马上注册,结交更多好友,享用更多功能,让你轻松玩转社区。
您需要 登录 才可以下载或查看,没有帐号?立即注册
x
平台即服务PaaS、基础设施即服务IaaS、软件即服务SaaS都是我们比较熟悉的MySQL学习教程,现在又出现了数据库即服务DBaaS,以基于云的方式存储结构化数据。CREATEPROCEDURE
创建一个寄存在MySQL数据库的表格的存储历程。
CREATEFUNCTION
创建一个用户自界说的函数,特别是前往数据的存储历程。
ALTERPROCEDURE
变动用CREATEPROCEDURE创建的事后指定的存储历程,其不会影响相干存储历程或存储功效。.
ALTERFUNCTION
变动用CREATEFUNCTION创建的事后指定的存储历程,其不会影响相干存储历程或存储功效。.
DROPPROCEDURE
从MySQL的表格中删除一个或多个存储历程。
DROPFUNCTION
从MySQL的表格中删除一个或多个存储函数。
SHOWCREATEPROCEDURE
前往利用CREATEPROCEDURE创建的事后指定的存储历程的文本。这一声明是SQL:2003标准的一个MySQL扩大。
SHOWCREATEFUNCTION
前往利用CREATEFUNCTION创建的事后指定的存储历程的文本。这一声明是SQL:2003标准的一个MySQL扩大。
SHOWPROCEDURESTATUS
前往一个事后指定的存储历程的特征,包含称号、范例、创建者、创建日期、和变动日期。这一声明是SQL:2003标准的一个MySQL扩大。
SHOWFUNCTIONSTATUS
前往一个事后指定的存储函数的特征,包含称号、范例、创建者、创建日期、和变动日期。这一声明是SQL:2003标准的一个MySQL扩大。
CALL
挪用一个利用CREATEPROCEDURE创建的事后指定的存储历程。
BEGIN...END
包括一组实行的多声明。
DECLARE
用于指定外地变量、情况、处置器,和指针。
SET
用于变动外地和全局服务器变量的值。
SELECT...INTO
用于存储显现变量的纵列。
OPEN
用于翻开一个指针。
FETCH
利用特定指针来取得下一列。
CLOSE
用于封闭和翻开指针。
IF
一个Anif-then-else-endif声明。
CASE...WHEN
一个case声明的布局
LOOP
一个复杂的轮回布局;可使用LEAVE语句来加入。
LEAVE
用于加入IF,CASE,LOOP,REPEAT和WHILE语句。
ITERATE
用于从头入手下手轮回。
REPEAT
在停止时测试的轮回。
WHILE
在入手下手时测试的轮回。
RETURNS
前往一个存储历程的值。
MySQL5.0撑持存储历程语句。
一.创立存储历程
1.基础语法:
createproceduresp_name()
begin
.........
end
2.参数传送
二.挪用存储历程
1.基础语法:callsp_name()
注重:存储历程称号前面必需加括号,哪怕该存储历程没有参数传送
三.删除存储历程
1.基础语法:
dropproceduresp_name//
2.注重事项
(1)不克不及在一个存储过程当中删除另外一个存储历程,只能挪用另外一个存储历程
四.区块,前提,轮回
1.区块界说,经常使用
begin
......
end;
也能够给区块起别号,如:
lable:begin
...........
endlable;
能够用leavelable;跳出区块,实行区块今后的代码
2.前提语句
if前提then
statement
else
statement
endif;
3.轮回语句
(1).while轮回
[label:]WHILEexpressionDO
statements
ENDWHILE[label];
(2).loop轮回
[label:]LOOP
statements
ENDLOOP[label];
(3).repeatuntil轮回
[label:]REPEAT
statements
UNTILexpression
ENDREPEAT[label];
五.其他经常使用命令
1.showprocedurestatus
显现数据库中一切存储的存储历程基础信息,包含所属数据库,存储历程称号,创立工夫等
2.showcreateproceduresp_name
存储历程创立语法:
CREATEPROCEDUREprocedure_name([parameter[,...])
[LANGUAGESQL]
[[NOT]DETERMINISTIC]
[{CONTAINSSQL|MODIFIESSQLDATA|READSSQLDATA|NOSQL}]
[SQLSECURITY{DEFINER|INVOKER}]
[COMMENTcomment_string]
procedure_statements
可用SHOWPROCEDURESTATUS或SHOWCREATEPROCEDURE来检察存储历程信息
另,体系表INFORMATION_SCHEMA.ROUTINES也包括了存储历程的一些信息
一样地,函数也能够利用一样体例检察(SHOWFUNCTIONSTATUS)
函数的创立
CREATEFUNCTIONfunction_name(parameter[,...])
RETURNSdatatype
[LANGUAGESQL]
[[NOT]DETERMINISTIC]
[{CONTAINSSQL|NOSQL|MODIFIESSQLDATA|READSSQLDATA}]
[SQLSECURITY{DEFINER|INVOKER}]
[COMMENTcomment_string]
语句体
函数与存储历程基础一样,其区分次要有:
1、要利用RETURNS指定前往范例
2、函数必需前往值,且在语句体中利用RETURN前往(注重:指定前往范例用RETURNS,前往值用RETURN)
3、参数不辨别IN,OUT,全体为IN类形
例:
CREATEFUNCTIONcust_status(in_statusCHAR(1))
RETURNSVARCHAR(20)
BEGINDECLARElong_statusVARCHAR(20);
IFin_status="O"THENSETlong_status="Overdue";
ELSEIFin_status="U"THENSETlong_status="Uptodate";
ELSEIFin_status="N"THENSETlong_status="new";
ENDIF;
RETURN(long_status);
END;
挪用:
SELECTcust_status(O);
触发器
CREATE[DEFINER={user|CURRENT_USER}]TRIGGERtrigger_name
{BEFORE|AFTER}{UPDATE|INSERT|DELETE}
ONtable_name
FOREACHROW
trigger_statements
意义:当对表table_name实行update,insert,delete操纵之前(before)或以后(after)时触发语句trigger_statements操纵
例:
mysql>CREATETRIGGERaccount_balance_au
AFTERUPDATEONaccount_balanceFOREACHROW
BEGIN
DECLAREdummyINT;
IFNEW.balance<0THEN
SETNEW.balance=NULL;
ENDIF;
END
上述触发器暗示:当更新表account_balance以后,假如更新的值balance小于0,则将它改成NULL,
注:假如为OLD.balance则暗示更新前的原值尽管DBaaS模式有缺点,但它还是适合某些客户群体,这为解决方案提供商提供了新的商机。鉴于云服务的增长,解决方案提供商除了拥抱这些技术还有什么选择呢?如果他们不这样做,他们就会冒着被竞争对手击败的风险。但他们不能只想到如何把DBaaS的利润率与企业内部系统相比较。 |
|