MySQL数据库8(二十三)流程结构(if / while)
流程结构
流程结构:代码的执行顺序
If分支
基本语法
If在mysql中有两种基本用法:
1、用在select查询当中,当作一种条件来判断
基本语法:if(条件,为真结果,为假结果)
最好取别名 if(条件,为真结果,为假结果) as 别名
2、用在复杂的语句块中(函数/存储过程/触发器)
基本语法:
if 条件表达式 then
满足条件要执行的语句;
end if;
复合语法
复合语法:代码的判断存在两面性,两面都有对应的代码执行
基本语法:
if 条件表达式 then
满足条件要执行的语句;
else
不满足条件要执行的语句;
//如果还有其他分支(细分),可以在里面再使用if
if 条件表达式 then
满足条件要执行的语句;
end if;
end if;
while循环
循环体都是需要在大型代码块中使用。
基本语法
while 条件 do
循环体;
end while;
结构标识符
结构标识符:为某些特定的结构进行命名,然后为的是在某些地方使用名字。
基本语法
标识名字:while 条件 do
循环体;
end while[标识名字];
标识符的存在主要是为了循环体中使用循环控制。在mysql中没有continue和break,有自己的关键字替代。
iterate:迭代,就是以下的代码不执行,重新开始循环(continue)
leave:离开,整个循环终止(break)
基本语法:
标识名字:while 条件 do
if 条件判断 then
循环控制;
iterate/leave 标识名字;
end if;
循环体;
end while[标识名字];
case循环
基本语法:
case [条件]
when条件1 then 语句1
when条件2 then 语句2
….
else 语句n
end case
case可以用在select语句中,但不能用在where语句中。
1、判断的同时改变其值
select OperatorAccount,
case
when CreateTime>'2016-02-14 16:24:42' then 'after'
when CreateTime<'2016-02-14 16:24:42' then 'before'
else 'now' end stage
from log_login order by CreateTime DESC
2、拆分一行为多列