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则表示更新前的原值