小白終是踏上了這條不歸路----小文的mysql學習筆記(23)---------流程控制結構

**
小白終是踏上了這條不歸路----小文的mysql學習筆記(1)

小白終是踏上了這條不歸路----小文的mysql學習筆記(2)----條件查詢

小白終是踏上了這條不歸路----小文的mysql學習筆記(3)----排序詢查

小白終是踏上了這條不歸路----小文的mysql學習筆記(4)----常見的基本函數

小白終是踏上了這條不歸路----小文的mysql學習筆記(5)----分組查詢


小白終是踏上了這條不歸路----小文的mysql學習筆記(目錄)
**
流程控制結構主要一共有三種:

順序結構: 程序從上往下依次執行
分支結構: 程序從兩條或多條路徑中選擇一條去執行
循環結構: 程序在滿足一定條件的基礎上,重複執行一段代碼

一、分支結構

1、if函數

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

ps:一般和其他的語句如 select、等一起使用

解釋: 如果表達式1成立,則IF函數返回表達式2的值,否則返回表達式3的值

作用: 可以實現簡單的雙分支。

當然下面我們舉一個簡單的例子,只是演示一下if函數,

舉例: 當然這裏2>3 顯然是不正確的,所以輸出表達式3‘錯誤’。
在這裏插入圖片描述

2、case結構

特點:
         1、它可以作爲表達式,嵌套在其他語句中使用,可以放在任何地方,BEGIN END中或BEGIN END的外面;
         2、它也可以作爲獨立的語句去使用,但只能放在BEGIN END中。
         3、如果WHEN中的值滿足或條件成立,則執行對應的THEN後面的語句,並且結束CASE,如果都不滿足,則執行ELSE中的語句或值.
         4、ELSE可以省略,如果ELSE省略了,並且所有WHEN條件都不滿足,則返回NULL

case結構一共有兩種情況 ,下面我們來分別說一說

(1)case 函數的使用一: switch case 的效果類似於java中的switch語句,一般用於實現等值判斷。

        語法case 要判斷的字段或表達式
                    When 常量1 then 要顯示的值1或語句;
                    When 常量2 then 要顯示的值2或語句;
                    ………
                    else 要顯示的值n或語句;
                    end case;

(2)、case函數的使用二: 類似於多重if。一般用於實現區間判斷

         語法case
                    When 條件1 then 要顯示的值1或語句1;
                    When 條件2 then 要顯示的值2或語句2;
                    ……
                   else 要顯示的值n或語句n;
                   end case;

那麼下面我們簡單的舉一個例子

例: 創建存儲過程,根據傳入的工資,來返回等級,
要求如果工資>=20000,顯示爲A級別;如果工資>15000,顯示爲B級別;
如果工資>10000,顯示爲c級別;否則顯示爲D級別
在這裏插入圖片描述
那麼我們來調用一下:我們輸入工資12500。
在這裏插入圖片描述
明顯返回了等級爲C級。

3、if結構

語法:       if 條件1   then   語句1;
                  elseif   條件2   then   語句2;
                  … …
                【else 語句n】
                  end   if

那麼下面我們來舉一個簡單的 例子:
          根據傳入的成績,來顯示等級,比如傳入的成績: 90-100, 返回A,80-90, 返回B,60-80, 返回C,否則,返回D。
在這裏插入圖片描述
調用:我們舉例輸入66分,返回等級爲c等級
在這裏插入圖片描述

二、循環結構

一共有三種: while 、loop 、repeat

流程控制:

iterate 類似於continue, 繼續,結束本次循環,繼續下一次。
leave 類似於 break,跳出,結束當前所在的循環。

注意: 別名;當我們要添加流程控制語句時必須,先給我們的循環取別名;如果不加循環控制語句,那麼可以不用取別名

1、while

ps:先判斷後執行。

語法:
          【別名:】 while 循環條件 do
                                            循環體;
            end while 【別名】;

那麼下面我們來分別舉一下例子:

(1)沒有添加循環控制語句
批量插入,根據輸入的次數,來決定插入多少條記錄到我們的admin表
在這裏插入圖片描述
我們調用 call in_while(66)$ 插入66個德瑪,都是以及插入了的
在這裏插入圖片描述

(2)添加流程控制leave語句

案例: 批量插入,根據輸入的次數插入數據到admin表,但是一旦條數>15,則立刻終止
在這裏插入圖片描述
調用:我們試着輸入20次,但是大於了十五直接終止,所以只會插入15條數據
在這裏插入圖片描述
(3)添加流程控制iterate語句
案例:批量插入,根據插入次數插入到admin表中多條記錄,只有5的倍數纔會被插入。
在這裏插入圖片描述
調用:我們輸入次數100,那麼符合條件的應該就有20次,so會插入20條數據
在這裏插入圖片描述

2、loop

ps:它沒有內置的循環條件,但是可以通過添加leave語句來跳出循環

語法:
            【別名:】loop
                          循環體;
              end loop 【別名】;

ps:一般用來模擬死循環

3、repeat

ps:先執行,後判斷。

語法:
            【別名:】 repeat
                              循環體;
              until 結束循環的條件
              end repeat 【別名】;

那麼我們簡單的做個例子:同樣是根據輸入次數,批量插入表中多條數據

DELIMITER $
CREATE PROCEDURE a1(IN insertcount INT)
BEGIN
      DECLARE i INT DEFAULT 0;
      
        REPEAT  
       INSERT INTO admin(username,`password`) VALUES(CONCAT('小文+',i),'6666');      
	    SET i=i+1;

       UNTIL i>=insertcount       
       END REPEAT;
END $

我們來調用:插入五條,然後我們來查詢數據,你會發現有一個區別:如果你上面設置變量和之前的while循環一樣設置爲1的話就會少插入一次,所以我們起初設置變量i初始值要設爲0.才能達到和while一樣的效果。
因爲該repeat循環是先執行一次再看是否滿足條件
在這裏插入圖片描述

補充:

rand() 函數
含義: 返回一個隨機的浮點值;即隨即返回一個0到1之間的數,不包括臨界值

簡單的做一個例子來理解它
首先我們來看看我們剛剛admin表中的所有信息,一共二十個嘛,
在這裏插入圖片描述
然後我們舉個栗子:查詢admin表中 隨機五條信息
在這裏插入圖片描述

那麼下面我們簡單的做一個有關循環控制的案例:

創建一個存儲過程,實現向該表插入指定個數的隨機長度的有序字符串
首先我們先創建一個ac表
在這裏插入圖片描述
然後下面在該表中創建存儲過程

DELIMITER $
CREATE PROCEDURE tx(IN insertcount INT)
BEGIN
	DECLARE i INT DEFAULT 1;
	DECLARE str VARCHAR(30) DEFAULT 'abcdefghijklmnopqrstuvwxyz';
	DECLARE start_a INT DEFAULT 1;
	DECLARE end_a INT DEFAULT 1;
	
	 WHILE i<=insertcount DO
		
	    SET start_a=FLOOR(RAND()*26+1);
	    SET end_a=FLOOR(RAND()*(27-start_a)+1);
	   
	   INSERT INTO ac(shzu) VALUES(SUBSTRING(str,start_a,end_a));	
	   SET i=i+1; 
	END WHILE;
END $

那我們簡單的調用,輸入數字5 並且查詢ac表,你會發現這,的確是隨機插入的五條有序的隨機字符串
在這裏插入圖片描述

**
        Don`t panic. The moon is lost somewhere in the sea.
                                                    --------別慌,月亮也在大海某處迷茫。

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