# 流程结构 ## if分支 两种基本用法 1、用在select查询中 基本语法 ```sql if(条件, 结果为真, 结果为假); ``` ```sql mysql> select * from my_student; +----+-----------+----------+------+--------+ | id | name | class_id | age | gender | +----+-----------+----------+------+--------+ | 1 | 刘备 | 1 | 18 | 2 | | 2 | 李四 | 1 | 19 | 1 | | 3 | 王五 | NULL | 20 | 2 | | 4 | 张飞 | NULL | 21 | 1 | | 5 | 关羽 | NULL | 22 | 2 | | 6 | 曹操 | 1 | 20 | NULL | | 10 | 司马懿 | 6 | 26 | 1 | +----+-----------+----------+------+--------+ mysql> select *, if(age > 20, '符合', '不符合') as result from my_student; +----+-----------+----------+------+--------+-----------+ | id | name | class_id | age | gender | result | +----+-----------+----------+------+--------+-----------+ | 1 | 刘备 | 1 | 18 | 2 | 不符合 | | 2 | 李四 | 1 | 19 | 1 | 不符合 | | 3 | 王五 | NULL | 20 | 2 | 不符合 | | 4 | 张飞 | NULL | 21 | 1 | 符合 | | 5 | 关羽 | NULL | 22 | 2 | 符合 | | 6 | 曹操 | 1 | 20 | NULL | 不符合 | | 10 | 司马懿 | 6 | 26 | 1 | 符合 | +----+-----------+----------+------+--------+-----------+ 7 rows in set (0.00 sec) ``` 2、用在复杂语句块中(函数、存储过程、触发器) 基本语法 ```sql if 条件表达式 then 满足条件要执行的语句; end if; ``` 3、复合语法 基本语法 ```sql if 条件表达式 then 满足条件要执行的语句; else 不满足条件要执行的语句; end if; -- 如果有其他分支,嵌套使用 if 条件表达式 then 满足条件要执行的语句; else 不满足条件要执行的语句; if 条件表达式 then 满足条件要执行的语句; else 不满足条件要执行的语句; end if; end if; ``` ## while循环 基本语法 ```sql while 条件 do 要循环执行的代码 end while; ``` 结构标识符: 为结构命名 基本语法 ```sql 标识名字: while 条件 do 要循环执行的代码 end while [标识名字]; ``` mysql中没有continue 和break - iterate 迭代 以下代码不执行,重新开始循环,相当于continue - leave 离开 终止循环,相当于break ```sql 标识名字: while 条件 do if 条件判断 then 循环控制 iterate / leave 标识名字; end if; 循环体 end while [标识名字]; ``` https://www.bilibili.com/video/BV1Vx411g7uJ?p=68&spm_id_from=pageDriver