发一篇MySql5.0基本
平台即服务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轮回
WHILEexpressionDO
statements
ENDWHILE;
(2).loop轮回
LOOP
statements
ENDLOOP;
(3).repeatuntil轮回
REPEAT
statements
UNTILexpression
ENDREPEAT;
五.其他经常使用命令
1.showprocedurestatus
显现数据库中一切存储的存储历程基础信息,包含所属数据库,存储历程称号,创立工夫等
2.showcreateproceduresp_name
存储历程创立语法:
CREATEPROCEDUREprocedure_name()
[DETERMINISTIC]
[{CONTAINSSQL|MODIFIESSQLDATA|READSSQLDATA|NOSQL}]
procedure_statements
可用SHOWPROCEDURESTATUS或SHOWCREATEPROCEDURE来检察存储历程信息
另,体系表INFORMATION_SCHEMA.ROUTINES也包括了存储历程的一些信息
一样地,函数也能够利用一样体例检察(SHOWFUNCTIONSTATUS)
函数的创立
CREATEFUNCTIONfunction_name(parameter[,...])
RETURNSdatatype
[DETERMINISTIC]
[{CONTAINSSQL|NOSQL|MODIFIESSQLDATA|READSSQLDATA}]
语句体
函数与存储历程基础一样,其区分次要有:
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);
触发器
CREATETRIGGERtrigger_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的利润率与企业内部系统相比较。 SQLServer的异构移植功能个人感觉最好了。(如果对比过SQLServer的链接服务器和Oracle的透明网关的朋友会发现SQLServer的sp_addlinkedserver(openquery)异构数据库系列比Oracle真是强太多了。) 可能有的朋友会抱怨集成的orderby,其实如果使用ranking函数,Orderby是少不了的。如果担心Orderby会影响效率,可以为orderby的字段建立聚集索引,查询计划会忽略orderby操作(因为本来就是排序的嘛)。 另一个是把SQL语句写到服务器端,就是所谓的SP(存储过程); 多走走一此相关论坛,多看一些实例开发,多交流0经验,没什么的,我也是刚学没多久!加油 我个人认为就是孜孜不懈的学习 相信各位对数据库和怎么样学习数据库都有一些经验和看法,也会有人走了一些弯路总结出自己的经验来,希望大家能把各自的看法和经验拿出来分享,给别人一份帮助,给自己一份快乐
页:
[1]