天天看點

MySQL資料庫(29):流程結構 if while

流程結構 if while

if分支

兩種基本用法

1、用在select查詢中

基本文法

if(條件, 結果為真, 結果為假);      
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、用在複雜語句塊中(函數、存儲過程、觸發器)

基本文法

if 條件表達式 then
    滿足條件要執行的語句;
end if;      

3、複合文法

基本文法

if 條件表達式 then
    滿足條件要執行的語句;
else
    不滿足條件要執行的語句;
end if;

-- 如果有其他分支,嵌套使用
if 條件表達式 then
    滿足條件要執行的語句;
else
    不滿足條件要執行的語句;
    if 條件表達式 then
        滿足條件要執行的語句;
    else
        不滿足條件要執行的語句;
    end if;
end if;      

while循環

基本文法

while 條件 do
    要循環執行的代碼
end while;      

結構辨別符: 為結構命名

辨別名字: while 條件 do
    要循環執行的代碼
end while [辨別名字];      
  • iterate 疊代 以下代碼不執行,重新開始循環,相當于continue
  • leave 離開 終止循環,相當于break
辨別名字: while 條件 do
    if 條件判斷 then
        循環控制
        iterate / leave 辨別名字;
    end if;

    循環體

end while [辨別名字];