1. 程式人生 > >MySql流程控制結構

MySql流程控制結構

策略 enter tco oop name 循環結構 ext RoCE ont

序號 結構名稱 說明
1 順序結構 程序從上往下依次執行
2 分支結構 程序從兩條或多條路徑中選擇一條去執行
3 循環結構 程序在滿足一定條件的基礎上,重復執行一段代碼

⒈順序結構

  你啥都不幹默認就是順序結構,還要我介紹個毛,略。

⒉分支結構

  1.if函數

    功能:實現簡單的雙分支

    語法: 

1 if(表達式1,表達式2,表達式3)

    執行策略:如果表達式1成立,則if函數返回表達式2的值,如果不成立則返回表達式3的值。

    應用:任何地方

  2.case結構

    ①第一種使用方式類似於java中的switch語句,一般用於實現等值判斷

      語法:

1 case 變量|表達式|字段
2 when 要判斷的值 then 返回的值1或語句1;
3 when 要判斷的值 then 返回的值2或語句2;
4 ...
5 else 要返回的值n或語句n;
6 end case;

    ②第二種使用方式類似於java中的多重if語句,一般用於實現區間判斷

      語法:

1 case
2 when 要判斷的條件1 then 返回的值1或語句1;
3 when 要判斷的條件2 then 返回的值2或語句2;
4 ...
5 else 要返回的值n或語句n;
6 end case;

    特點:

      ⅰ可以作為表達式嵌套在其它語句中使用,可以放在任何地方,brgin and中或begin end的外面。可以作為獨立的語句去使用,只能放在begin end中。

      ⅱ如果when中的值滿足或條件成立,則執行對應的then後面的語句,並且結束case,如果都不滿足,則執行else中的語句或值。

      ⅲelse可以省略,如果else省略了,並且所有的when條件都不滿足,則返回null

  3.if結構

    功能:實現多重分支

    語法:

1 if 條件1 then 語句1;
2 elseif 條件2 then 語句2;
3 ...
4 else 語句n; #可以省略 5 end if;

    應用:只能應用在begin end中

⒊循環結構

分類:while、loop、repeat

循環控制:iterate類似於containue,結束本次循環。leave類似於break,結束當前循環。

  1.while

    語法:

1 [標簽:] while 循環條件 do
2     循環體;
3 end while [標簽];        #有可能執行0次,先判斷後執行

  2.loop

    語法:

1 [標簽:] loop
2     循環體;
3 end loop [標簽];        #沒有條件的死循環,可以用來模擬簡單的死循環

  3.repeat

    語法:

1 [標簽:] repeat
2     循環體;
3 until 結束循環的條件
4 end repeat [標簽];        #肯定至少執行一次,先執行後判斷

  

  *案例:批量插入,根據次數插入到admin表中多條記錄,只插入偶數次。

 1 create procedure test_while(in insertCount int)
 2 begin
 3     declare i int default 0;    #局部變量i 默認值0
 4     a:while i <= insertCount do #如果i<=insertCount的話
 5         set i = i + 1;    #i加1
 6         if mod(i,2) != 0 then iterate a;    #如果i是奇數的話,結束本次循環
 7         end if;
 8         insert into users(UserName,`PassWord`) VALUES(concat(fanqi,i),admin);
 9 end while a;
10 end;
11 
12 call test_while(50);

MySql流程控制結構