MySql流程控制結構
阿新 • • 發佈:2019-04-13
策略 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流程控制結構