柔情似水 发表于 2015-1-16 20:09:04

发一篇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的利润率与企业内部系统相比较。

只想知道 发表于 2015-1-18 18:14:23

SQLServer的异构移植功能个人感觉最好了。(如果对比过SQLServer的链接服务器和Oracle的透明网关的朋友会发现SQLServer的sp_addlinkedserver(openquery)异构数据库系列比Oracle真是强太多了。)

蒙在股里 发表于 2015-1-27 13:17:02

可能有的朋友会抱怨集成的orderby,其实如果使用ranking函数,Orderby是少不了的。如果担心Orderby会影响效率,可以为orderby的字段建立聚集索引,查询计划会忽略orderby操作(因为本来就是排序的嘛)。

变相怪杰 发表于 2015-2-5 11:29:59

另一个是把SQL语句写到服务器端,就是所谓的SP(存储过程);

再现理想 发表于 2015-2-11 16:48:46

多走走一此相关论坛,多看一些实例开发,多交流0经验,没什么的,我也是刚学没多久!加油

再见西城 发表于 2015-3-2 17:15:48

我个人认为就是孜孜不懈的学习

深爱那片海 发表于 2015-3-11 05:17:37

相信各位对数据库和怎么样学习数据库都有一些经验和看法,也会有人走了一些弯路总结出自己的经验来,希望大家能把各自的看法和经验拿出来分享,给别人一份帮助,给自己一份快乐
页: [1]
查看完整版本: 发一篇MySql5.0基本