MySql 5.0基础知识和常用命令详细介绍_MySQL, Oracle及数据库讨论区_Weblogic技术|Tuxedo技术|中间件技术|Oracle论坛|JAVA论坛|Linux/Unix技术|hadoop论坛_联动北方技术论坛  
网站首页 | 关于我们 | 服务中心 | 经验交流 | 公司荣誉 | 成功案例 | 合作伙伴 | 联系我们 |
联动北方-国内领先的云技术服务提供商
»  游客             当前位置:  论坛首页 »  自由讨论区 »  MySQL, Oracle及数据库讨论区 »
总帖数
1
每页帖数
101/1页1
返回列表
0
发起投票  发起投票 发新帖子
查看: 1814 | 回复: 0   主题: MySql 5.0基础知识和常用命令详细介绍        下一篇 
wayne
注册用户
等级:中校
经验:1690
发帖:221
精华:0
注册:2011-7-21
状态:离线
发送短消息息给wayne 加好友    发送短消息息给wayne 发消息
发表于: IP:您无权察看 2014-12-17 15:41:02 | [全部帖] [楼主帖] 楼主

 CREATE PROCEDURE


建立一个存放在MySQL数据库的表格的存储过程。

CREATE FUNCTION


建立一个用户自定义的函数,尤其是返回数据的存储过程。

ALTER PROCEDURE


更改用CREATE PROCEDURE 建立的预先指定的存储过程,其不会影响相关存储过程或存储功能。.

ALTER FUNCTION


更改用CREATE FUNCTION 建立的预先指定的存储过程,其不会影响相关存储过程或存储功能。.

DROP PROCEDURE


从MySQL的表格中删除一个或多个存储过程。

DROP FUNCTION


从MySQL的表格中删除一个或多个存储函数。

SHOW CREATE PROCEDURE


返回使用CREATE PROCEDURE 建立的预先指定的存储过程的文本。这一声明是SQL:2003规范的一个MySQL扩展。

SHOW CREATE FUNCTION


返回使用CREATE  FUNCTION建立的预先指定的存储过程的文本。这一声明是SQL:2003规范的一个MySQL扩展。

SHOW PROCEDURE STATUS


返回一个预先指定的存储过程的特性,包括名称、类型、建立者、建立日期、以及更改日期。这一声明是SQL:2003规范的一个MySQL扩展。

SHOW FUNCTION STATUS


返回一个预先指定的存储函数的特性,包括名称、类型、建立者、建立日期、以及更改日期。这一声明是SQL:2003规范的一个MySQL扩展。

CALL


调用一个使用CREATE PROCEDURE建立的预先指定的存储过程。

BEGIN ... END


包含一组执行的多声明。

DECLARE


用于指定当地变量、环境、处理器,以及指针。

SET


用于更改当地和全局服务器变量的值。

SELECT ... INTO


用于存储显示变量的纵列。

OPEN


用于打开一个指针。

FETCH


使用特定指针来获得下一列。

CLOSE


用于关闭和打开指针。

IF


一个An if-then-else-end if 声明。

CASE ... WHEN


一个 case声明的结构

LOOP


一个简单的循环结构;可以使用LEAVE 语句来退出。

LEAVE


用于退出IF,CASE,LOOP,REPEAT以及WHILE 语句。

ITERATE


用于重新开始循环。

REPEAT


在结束时测试的循环。

WHILE


在开始时测试的循环。

RETURNS


返回一个存储过程的值。

MySQL 5.0支持存储过程语句。

一.创建存储过程

1.基本语法:

create procedure sp_name()
begin
.........
end


2.参数传递

二.调用存储过程

1.基本语法:call sp_name()
注意:存储过程名称后面必须加括号,哪怕该存储过程没有参数传递

三.删除存储过程

1.基本语法:

drop procedure sp_name//


2.注意事项
(1)不能在一个存储过程中删除另一个存储过程,只能调用另一个存储过程

四.区块,条件,循环

1.区块定义,常用

begin
......
end;


也可以给区块起别名,如:

lable:begin
...........
end lable;


可以用leave lable;跳出区块,执行区块以后的代码
2.条件语句

if 条件 then

statement
else
statement
end if;


3.循环语句
(1).while循环

[label:] WHILE expression DO
statements
END WHILE [label] ;


(2).loop循环

[label:] LOOP
statements
END LOOP [label];


(3).repeat until循环

[label:] REPEAT
statements
UNTIL expression
END REPEAT [label] ;


五.其他常用命令

1.show procedure status
显示数据库中所有存储的存储过程基本信息,包括所属数据库,存储过程名称,创建时间等
2.show create procedure sp_name

存储过程创建语法:

CREATE PROCEDURE procedure_name ([parameter[,...])
[LANGUAGE SQL]
[ [NOT] DETERMINISTIC ]
[{CONTAINS SQL|MODIFIES SQL DATA|READS SQL DATA|NO SQL}]
[SQL SECURITY {DEFINER|INVOKER} ]
[COMMENT comment_string]
procedure_statements


可用SHOW PROCEDURE STATUS 或 SHOW CREATE PROCEDURE 来查看存储过程信息
另,系统表INFORMATION_SCHEMA.ROUTINES也包含了存储过程的一些信息
同样地,函数也可以使用同样方式查看(SHOW FUNCTION STATUS)

函数的创建

CREATE FUNCTION function_name (parameter[,...])
RETURNS datatype
[LANGUAGE SQL]
[ [NOT] DETERMINISTIC ]
[ {CONTAINS SQL | NO SQL | MODIFIES SQL DATA | READS SQL DATA} ]
[ SQL SECURITY {DEFINER|INVOKER} ]
[ COMMENT comment_string ]


语句体

函数与存储过程基本一样,其区别主要有:
1、  要使用RETURNS指定返回类型
2、  函数必须返回值,且在语句体中使用RETURN返回(注意:指定返回类型用RETURNS,返回值用RETURN)
3、  参数不区分IN,OUT,全部为IN类形

例:

CREATE FUNCTION cust_status(in_status CHAR(1))
RETURNS VARCHAR(20)
BEGIN DECLARE long_status VARCHAR(20);
IF in_status="O" THEN SET long_status="Overdue";
ELSEIF in_status="U" THEN SET long_status="Up to date";
ELSEIF in_status="N" THEN SET long_status="new";
END IF;
RETURN(long_status);
END;


调用:

SELECT cust_status('O');


触发器

CREATE [DEFINER={user|CURRENT_USER}] TRIGGER trigger_name
{BEFORE|AFTER} {UPDATE|INSERT|DELETE}
ON table_name
FOR EACH ROW
trigger_statements


意义:当对表table_name执行update,insert,delete操作之前(before)或之后(after)时触发语句trigger_statements操作

例:

mysql> CREATE TRIGGER account_balance_au
AFTER UPDATE ON account_balance FOR EACH ROW
BEGIN
DECLARE dummy INT;
IF NEW.balance<0 THEN
SET NEW.balance=NULL;
END IF;
END


上述触发器表示:当更新表account_balance之后,如果更新的值balance小于0,则将它改为NULL,
注:如果为OLD.balance则表示更新前的原值

--转自 北京联动北方科技有限公司




赞(0)    操作        顶端 
总帖数
1
每页帖数
101/1页1
返回列表
发新帖子
请输入验证码: 点击刷新验证码
您需要登录后才可以回帖 登录 | 注册
技术讨论