mysql的学习笔记-控制与循环结构

1、分界符+procedure+begin end

BEGIN ... END复合语句:包含多个语句。statement_list 代表一个或多个语句的列表。statement_list之内每个语句都必须用分号(;)来结尾。

[begin_label:] BEGIN
语句群
END [end_label]

默认情况下,delimiter是分号;。在命令行客户端中,如果有一行命令以分号结束, 
那么回车后,mysql将会执行该命令。如输入下面的语句 
mysql> select * from test; 
然后回车,那么MySQL将立即执行该语句。 
但有时候,不希望MySQL这么做。在为可能输入较多的语句,且语句中包含有分号。 

默认情况下,不可能等到用户把这些语句全部输入完之后,再执行整段语句。 
因为mysql一遇到分号,它就要自动执行。 
即,在语句RETURN ”;时,mysql解释器就要执行了。 
这种情况下,就需要事先把delimiter换成其它符号,如//或$$。

drop PROCEDURE if exists test_if; -- 删除
delimiter // -- 更改分界符  
create procedure test_if(in x int) 

BEGIN
INSERT INTO emp VALUES (11,'研发中心1',10,3000);
INSERT INTO emp VALUES (12,'研发中心2',20,7000);
INSERT INTO emp VALUES (13,'研发中心3',30,8000);
SELECT * FROM emp;
END;

delimiter ;  -- 还原分节符为;
call test_if(0); -- 调用存储过程

2、CASE分支

CASE [条件]
WHEN 条件1 THEN 语句1
WHEN 条件2 THEN 语句2  

......
ELSE 语句n
END CASE

SELECT CASE sal WHEN '3000' THEN '低工资' WHEN  '8000' THEN '高工资' ELSE '普通工资' END AS 薪水 FROM emp; 

3、变量

SELECT @A:=SUM(deptno) FROM emp;
UPDATE emp SET deptno=@A WHERE deptno=10;

4、待补充

猜你喜欢

转载自www.cnblogs.com/shishibuwan/p/10913582.html