MySql 5.0基础知识和常用命令详细介绍

发布时间:   浏览: 次  作者: Dede58
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则表示更新前的原值

免责声明:本站所有文章和图片均来自用户分享和网络收集,文章和图片版权归原作者及原出处所有,仅供学习与参考,请勿用于商业用途,如果损害了您的权利,请联系网站客服处理。

Copyright © 2005-2019 dede58 版权所有 Power by DedeCms

在线客服