1.查看修改MySQL变量
show variables,show session variables,show global variables
其中:show variables等同于show session variables
查看所有变量:show variables;
查看指定变量:show variables like 'wait_timeout';
查看指定条件变量:show variables like '%timeout%';
2.MySQL变量定义
a. "=",
如 set @a =3, @a:=5
b. ":="
如 select常常这样使用
c. declare var_name[,...] type[default value]
如 declare last_date date;
set @VAR=(select sum(user_id) from user_info);
select @VAR:=sum(user_id) from user_info;
select sum(user_id) into @VAR from user_info;
3.变量的类型
a.用户变量:以"@"开始,形式为"@变量名"
用户变量是跟MySQL客户端绑定的,当前客户端设置的用户变量只对当前的客户端有效。
b.全局变量:定义时,以如下两种形式出现,set GLOBAL 变量名 或者 set @@global.变量名
对所有客户端生效。只有具有super权限才可以设置全局变量
c.会话变量:只对连接的客户端有效
d.局部变量:作用范围在从 begin 到 end 之间。
在该语句块里设置的变量declare语句专门用于定义局部变量。
set语句是设置不同类型的变量,包括会话变量和全局变量
4.函数的定义
示例一:
select getformatdate(now());
示例二(分支结构):
select str_replace("123456789","2","b");
示例三(循环结构):
select morestar(9);
※MySQL流程控制语句参考:http://dev.mysql.com/doc/refman/5.1/zh/stored-procedures.html#while-statement
5.存储过程的定义
a.函数只能通过return语句返回单个值或者表对象。而存储过程不允许执行return,但是通过out参数返回多个值。
b.函数是可以嵌入在sql中使用的,可以在select中调用,而存储过程不行。
c.函数限制比较多,比如不能用临时表,只能用表变量.还有一些函数都不可用等等.而存储过程的限制相对就比较少
d.一般来说,存储过程实现的功能要复杂一点,而函数的实现的功能针对性比较强。
内容来自:
http://www.cnblogs.com/wangtao_20/archive/2011/02/21/1959734.html
http://www.oschina.net/code/snippet_54100_16
http://dev.mysql.com/doc/refman/5.1/zh/stored-procedures.html
show variables,show session variables,show global variables
其中:show variables等同于show session variables
查看所有变量:show variables;
查看指定变量:show variables like 'wait_timeout';
查看指定条件变量:show variables like '%timeout%';
2.MySQL变量定义
a. "=",
如 set @a =3, @a:=5
b. ":="
如 select常常这样使用
c. declare var_name[,...] type[default value]
如 declare last_date date;
set @VAR=(select sum(user_id) from user_info);
select @VAR:=sum(user_id) from user_info;
select sum(user_id) into @VAR from user_info;
3.变量的类型
a.用户变量:以"@"开始,形式为"@变量名"
用户变量是跟MySQL客户端绑定的,当前客户端设置的用户变量只对当前的客户端有效。
b.全局变量:定义时,以如下两种形式出现,set GLOBAL 变量名 或者 set @@global.变量名
对所有客户端生效。只有具有super权限才可以设置全局变量
c.会话变量:只对连接的客户端有效
d.局部变量:作用范围在从 begin 到 end 之间。
在该语句块里设置的变量declare语句专门用于定义局部变量。
set语句是设置不同类型的变量,包括会话变量和全局变量
4.函数的定义
示例一:
DELIMITER $$
DROP FUNCTION IF EXISTS getformatdate $$
CREATE FUNCTION getformatdate (gdate datetime) RETURNS varchar(255)
BEGIN
DECLARE x VARCHAR(255) DEFAULT '';
SET x= date_format(gdate,'%Y年%m月%d日%h时%i分%s秒');
RETURN x;
END $$
DELIMITER ;
调用:select getformatdate(now());
示例二(分支结构):
DELIMITER $$
DROP FUNCTION IF EXISTS str_replace $$
create function str_replace(in_string varchar(255),in_find_str varchar(255),in_replace_str varchar(255)) returns varchar(255)
BEGIN
declare l_new_string varchar(255);
declare l_find_pos int;
set l_find_pos = instr(in_string, in_find_str);
if(l_find_pos > 0) then
set l_new_string = insert(in_string, l_find_pos, length(in_find_str), in_replace_str);
else
set l_new_string = in_string;
end if;
return l_new_string;
END $$
DELIMITER ;
调用:select str_replace("123456789","2","b");
示例三(循环结构):
DELIMITER $$
DROP FUNCTION IF EXISTS morestar $$
CREATE FUNCTION morestar(n INT) RETURNS text
BEGIN
DECLARE i INT DEFAULT 0;
DECLARE s TEXT DEFAULT '';
myloop:LOOP
SET i=i+1;
IF i > n THEN
LEAVE myloop;
ELSE
SET s = CONCAT(s,'*');
END IF;
END LOOP myloop;
RETURN s;
END $$
DELIMITER ;
调用:select morestar(9);
※MySQL流程控制语句参考:http://dev.mysql.com/doc/refman/5.1/zh/stored-procedures.html#while-statement
5.存储过程的定义
DELIMITER $$
DROP PROCEDURE IF EXISTS addRandomData $$
CREATE PROCEDURE addRandomData(count INT)
BEGIN
DECLARE i INT DEFAULT 0;
declare username varchar(128);
declare passwd varchar(128);
declare email varchar(128);
while(i<=count) do
SET i=i+1;
set username = CONCAT("username",right(CONCAT("00000", i), 6));
set passwd = left(rand()*10000000, 6);
set email = CONCAT(username, "@kai.jp");
INSERT INTO `tbl_user` (`username`, `password`, `email`) VALUES (username, passwd, email);
end while;
END $$
DELIMITER ;
※MySQL中函数与存储过程的区别:a.函数只能通过return语句返回单个值或者表对象。而存储过程不允许执行return,但是通过out参数返回多个值。
b.函数是可以嵌入在sql中使用的,可以在select中调用,而存储过程不行。
c.函数限制比较多,比如不能用临时表,只能用表变量.还有一些函数都不可用等等.而存储过程的限制相对就比较少
d.一般来说,存储过程实现的功能要复杂一点,而函数的实现的功能针对性比较强。
内容来自:
http://www.cnblogs.com/wangtao_20/archive/2011/02/21/1959734.html
http://www.oschina.net/code/snippet_54100_16
http://dev.mysql.com/doc/refman/5.1/zh/stored-procedures.html