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则表示更新前的原值MySQL索引分析和网站seo优化解决方案