MySql複習六.4 流程控制結構

  1. 流程控制結構有哪些

    1. 順序結構:從上到下順序執行;

    2. 分支結構:程序從一條或多條路徑中選擇一條去執行;

    3. 循環結構:在滿足一定條件下,重複去執行一段代碼;

  2. 分支結構

    1. if函數

      1. 功能:實現簡單的雙分支;

      2. 語法: if(表達式1,表達式2,表達式3);

      3. 執行順序:如果表達式1成立,返回表達式2的結果,否則返回表達式3的結果;

      4. 應用:任何地方;

    2. case結構

      1. 情況一:類似於java中的switch語句,一般用於等值判斷。

        1. 語法:

          1. case   條件表達式 | 變量 | 字段

          2. when 要判斷的變量1  then 返回的值或者語句1;

          3. when 要判斷的變量1  then 返回的值或者語句2;

          4. ....

          5. else  返回的值或者語句n;

          6. end case;

        2. demo:

SELECT

    CASE parent_id

    WHEN 0 THEN '00';

    WHEN 1 THEN  '11';

    ELSE 'OTHERS';

    END AS parent_id_new , parent_id , type_id , type_name

    FROM  tdb_goods_types;

 

 

  1. 情況二:類似於java中的多重IF語句,一般用於實現區間判斷。

    1. demo:

      1. SELECT

      2.     CASE

      3. WHEN parent_id < 3 THEN  '<3';

      4. WHEN parent_id >= 3 AND parent_id < 5 THEN   '>=3 && <5';

      5. ELSE    '>=5';

      6. END AS parent_id_new ;

      7. parent_id , type_id , type_name

      8. FROM tdb_goods_types;

    2. 語法:

      1. case

      2. when 要判斷的條件1  then  返回的值或者語句1;

      3. when 要判斷的條件2  then   返回的值或者語句2;

      4. .....

      5. else  返回的值或者語句n;

      6. end case;

    1. 特點:

      1. 可以作爲表達式,嵌套在sql語句的任何地方(可以放在begin  end中,也放在begin end 外),也可以作爲獨立語句去使用 (只能放在begin  end中)。

        1. demo:作爲獨立語句放在begin end中

          1. CREATE PROCEDURE mycase1(in score float)

          2. BEGIN

          3.     CASE

          4.     WHEN score >= 90 THEN SELECT 'A';

          5.     WHEN score >= 80 AND score <= 90 THEN SELECT 'B';

          6.     WHEN scoer >=70 AND score <= 80 THEN SELECT 'C';

          7.     ELSE SELECT 'D';

          8.     END case;

          9. END $

      2. 順序執行,,滿足when的條件就執行then中的語句,跳出執行,如果都不滿足就執行else中語句,else可以省略,如果條件都不滿足就返回null。

  2. if結構

    1. 功能:實現多重分支;

    2. 語法:

      1. if 條件1 then  執行的語句1;

      2. elseif 條件2 執行的語句2;

      3. .....

      4. else 執行的語句n;# else可以省略

      5. end if;

    3. 應用場景:只能應用在begin end中

    4. demo:根據輸入的數據,返回數據的級別CREATE FUNCTION test1(score int) RETURNS CHAR

      1. begin

      2.     if score >= 90 and score <= 100 then return 'A';

      3.     elseif score >= 80 then return 'B';

      4.     elseif score >= 70 then return 'C';

      5.     else return 'D';

      6.     end if;

      7. end $

  3. 循環結構

    1. 分類:

      1. while  , loop, repeat

    2. 循環控制:

      1. iterate :類似於 continue  結束本次循環 繼續下一次;

      2. leave :類似於breake  跳出,結束循環;

    3. 語法:

      1. while語法

        1. [標記循環名:]while 循環條件 do

        2.       循環體;

        3. end while 標記循環名;

      2. loop語法  常用來模擬死循環

        1. [標記循環名:]loop 

        2.           循環體;

        3.  end loop [標籤名];

      3. repeat  類似於do while

        1. 語法:

          1. [循環名:]repeat

          2.      循環體;

          3. until   結束循環的條件;

          4. end  repeat [標籤];

 

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章