MySQL使用--存储过程篇

来源:互联网 发布:淘宝淘客推广联盟 编辑:程序博客网 时间:2024/06/06 03:00
查看存储过程:
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);  elseinsert 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或exitend if;  end loop;  

ITERATE迭代标签:

LOOP_LABLE:loop  if v=3 then   set v=v+1;  ITERATE LOOP_LABLE;   --直接跳至迭代开始处,相当于continueend 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.3333DIV   整除 SET var5=10 DIV 3; 3%     取模 SET var6=10%3 ;     1

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

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