首页 > 数据库 > MySQL > 正文

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

2024-07-24 12:40:29
字体:
来源:转载
供稿:网友
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则表示更新前的原值
发表评论 共有条评论
用户名: 密码:
验证码: 匿名发表