MySQL使用--存储过程篇

查看存储过程:
select `name` from mysql.proc where db = 'your_db_name' and `type` = 'PROCEDURE'   
SHOW procedure status; 

查看存储过程的创建代码:
SHOW create procedure proc_name;

调用存储过程:
CALL proc_name(参数名);

修改存储过程:
ALTER PROCEDURE pname newSQL;

删除存储过程:
DROP PROCEDURE pname;

注释:
--
/* */

创建存储过程:
格式:
CREATE PROCEDURE pname([[IN |OUT |INOUT ] 参数名 数据类形...])
IN 输入参数:表示该参数的值必须在调用存储过程时指定,在存储过程中修改该参数的值不能被返回,为默认值
OUT 输出参数:该值可在存储过程内部被改变,并可返回
INOUT 输入输出参数:调用时指定,并且可被改变和返回

无参数
DELIMITER //  
CREATE PROCEDURE test()  
begin 
	SELECT "hello world!"; 
end;  
//  
DELIMITER ; 

IN参数例子
DELIMITER //  
CREATE PROCEDURE demo_in_parameter(IN p_in int)  
BEGIN   
	SELECT p_in;   
	SET p_in=2;   
	SELECT p_in;   
END;   
//  
DELIMITER ;

OUT参数例子
DELIMITER //  
CREATE PROCEDURE demo_in_parameter(OUT p_out int) 
BEGIN   
	SELECT p_out;  
	SET p_out=2;  
	SELECT p_out;    
END;   
//  
DELIMITER ;

INOUT参数例子
DELIMITER //  
CREATE PROCEDURE demo_in_parameter(INOUT p_inout int)
BEGIN   
	SELECT p_inout;  
	SET p_inout=2;  
	SELECT p_inout;  
END;   
//  
DELIMITER ;

变量操作:
declare x1 varchar(5) default 'outer';   --声明变量
SET 变量名 = 表达式值 [,variable_name = expression ...];  --设置普通变量
SELECT 'Hello World' into 变量名;  --设置普通变量
SET @变量名 = 表达式值 [,variable_name = expression ...];  --设置用户变量, 用户级的全局变量
SELECT 'Hello World' into @变量名;  --设置用户变量

判断语句:
if var=0 then 
	insert into t values(17);  
else
	insert into t values(18); 
end if;  

多分支语句:
case var  
	when 0 then   
		insert into t values(17);  
	when 1 then   
		insert into t values(18);  
	else   
		insert into t values(19);  
end case;  

WHILE循环语句:
while var<6 do  
	insert into t values(var);  
	set var=var+1;  
end while;  

repeat循环语句:【相当于do while】
repeat  
	insert into t values(v);  
	set v=v+1;  
	until v>=5  
end repeat;  

LOOP循环:【无退出条件】
LOOP_LABLE:loop  
	insert into t values(v);  
	set v=v+1;  
	if v >=5 then 
	leave LOOP_LABLE;  		--使用leave语句退出,相当于break或exit
	end if;  
end loop;  

ITERATE迭代标签:

LOOP_LABLE:loop  
	if v=3 then   
		set v=v+1;  
		ITERATE LOOP_LABLE;   --直接跳至迭代开始处,相当于continue
	end if;  
	insert into t values(v);  
	set v=v+1;  
	if v>=5 then 
		leave LOOP_LABLE;  
	end if;  
end loop;

算术运算符:
	+     加   SET var1=2+2;       4
	-     减   SET var2=3-2;       1
	*      乘   SET var3=3*2;       6
	/     除   SET var4=10/3;      3.3333
	DIV   整除 SET var5=10 DIV 3; 3
	%     取模 SET var6=10%3 ;     1

比较运算符:
	>            大于 1>2 False
	<            小于 2<1 False
	<=           小于等于 2<=2 True
	>=           大于等于 3>=2 True
	BETWEEN      在两值之间 5 BETWEEN 1 AND 10 True
	NOT BETWEEN 不在两值之间 5 NOT BETWEEN 1 AND 10 False
	IN           在集合中 5 IN (1,2,3,4) False
	NOT IN       不在集合中 5 NOT IN (1,2,3,4) True
	=             等于 2=3 False
	<>, !=       不等于 2<>3 False
	<=>          严格比较两个NULL值是否相等 NULL<=>NULL True
	LIKE          简单模式匹配 "Guy Harrison" LIKE "Guy%" True
	REGEXP       正则式匹配 "Guy Harrison" REGEXP "[Gg]reg" False
	IS NULL      为空 0 IS NULL False
	IS NOT NULL 不为空 0 IS NOT NULL True

逻辑运算符:
	与 (AND)
	或(OR)
	异或(XOR)
 
位运算符:
	|   位或
	&   位与
	<< 左移位
	>> 右移位
	~   位非(单目运算,按位取反)


  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

上帝De助手

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值