日韩无码专区无码一级三级片|91人人爱网站中日韩无码电影|厨房大战丰满熟妇|AV高清无码在线免费观看|另类AV日韩少妇熟女|中文日本大黄一级黄色片|色情在线视频免费|亚洲成人特黄a片|黄片wwwav色图欧美|欧亚乱色一区二区三区

RELATEED CONSULTING
相關(guān)咨詢(xún)
選擇下列產(chǎn)品馬上在線溝通
服務(wù)時(shí)間:8:30-17:00
你可能遇到了下面的問(wèn)題
關(guān)閉右側(cè)工具欄

新聞中心

這里有您想知道的互聯(lián)網(wǎng)營(yíng)銷(xiāo)解決方案
創(chuàng)新互聯(lián)數(shù)據(jù)庫(kù)教程:MySQL流程控制語(yǔ)句詳解

在存儲(chǔ)過(guò)程和自定義函數(shù)中可以使用流程控制語(yǔ)句來(lái)控制程序的流程。MySQL 中流程控制語(yǔ)句有:IF 語(yǔ)句、CASE 語(yǔ)句、LOOP 語(yǔ)句、LEAVE 語(yǔ)句、ITERATE 語(yǔ)句、REPEAT 語(yǔ)句和 WHILE 語(yǔ)句等。

專(zhuān)注于為中小企業(yè)提供成都網(wǎng)站建設(shè)、成都網(wǎng)站設(shè)計(jì)服務(wù),電腦端+手機(jī)端+微信端的三站合一,更高效的管理,為中小企業(yè)寬城免費(fèi)做網(wǎng)站提供優(yōu)質(zhì)的服務(wù)。我們立足成都,凝聚了一批互聯(lián)網(wǎng)行業(yè)人才,有力地推動(dòng)了1000多家企業(yè)的穩(wěn)健成長(zhǎng),幫助中小企業(yè)通過(guò)網(wǎng)站建設(shè)實(shí)現(xiàn)規(guī)模擴(kuò)充和轉(zhuǎn)變。

下面將詳細(xì)講解這些流程控制語(yǔ)句。

1. IF語(yǔ)句

IF 語(yǔ)句用來(lái)進(jìn)行條件判斷,根據(jù)是否滿(mǎn)足條件(可包含多個(gè)條件),來(lái)執(zhí)行不同的語(yǔ)句,是流程控制中最常用的判斷語(yǔ)句。其語(yǔ)法的基本形式如下:

IF search_condition THEN statement_list
    [ELSEIF search_condition THEN statement_list]...
    [ELSE statement_list]
END IF

其中,search_condition 參數(shù)表示條件判斷語(yǔ)句,如果返回值為 TRUE ,相應(yīng)的 SQL 語(yǔ)句列表(statement_list)被執(zhí)行;如果返回值為 FALSE,則 ELSE 子句的語(yǔ)句列表被執(zhí)行。statement_list 可以包括一個(gè)或多個(gè)語(yǔ)句。

注意:MySQL 中的 IF( ) 函數(shù)不同于這里的 IF 語(yǔ)句。

例 1

下面是一個(gè)使用 IF 語(yǔ)句的示例。代碼如下:

IF age>20 THEN SET @count1=@count1+1;
    ELSEIF age=20 THEN @count2=@count2+1;
    ELSE @count3=@count3+1;
END lF;

該示例根據(jù) age 與 20 的大小關(guān)系來(lái)執(zhí)行不同的 SET 語(yǔ)句。如果 age 值大于20,那么將 count1 的值加 1;如果 age 值等于 20,那么將 count2 的值加 1;其他情況將 count3 的值加 1。IF 語(yǔ)句都需要使用 END IF 來(lái)結(jié)束。

2. CASE語(yǔ)句

CASE 語(yǔ)句也是用來(lái)進(jìn)行條件判斷的,它提供了多個(gè)條件進(jìn)行選擇,可以實(shí)現(xiàn)比 IF 語(yǔ)句更復(fù)雜的條件判斷。CASE 語(yǔ)句的基本形式如下:

CASE case_value
    WHEN when_value THEN statement_list
    [WHEN when_value THEN statement_list]...
    [ELSE statement_list]
END CASE

其中:

  • case_value 參數(shù)表示條件判斷的變量,決定了哪一個(gè) WHEN 子句會(huì)被執(zhí)行;
  • when_value 參數(shù)表示變量的取值,如果某個(gè) when_value 表達(dá)式與 case_value 變量的值相同,則執(zhí)行對(duì)應(yīng)的 THEN 關(guān)鍵字后的 statement_list 中的語(yǔ)句;
  • statement_list 參數(shù)表示 when_value 值沒(méi)有與 case_value 相同值時(shí)的執(zhí)行語(yǔ)句。
  • CASE 語(yǔ)句都要使用 END CASE 結(jié)束。

CASE 語(yǔ)句還有另一種形式。該形式的語(yǔ)法如下:

CASE
    WHEN search_condition THEN statement_list
    [WHEN search_condition THEN statement_list] ...
    [ELSE statement_list]
END CASE

其中,search_condition 參數(shù)表示條件判斷語(yǔ)句;statement_list 參數(shù)表示不同條件的執(zhí)行語(yǔ)句。

與上述語(yǔ)句不同的是,該語(yǔ)句中的 WHEN 語(yǔ)句將被逐個(gè)執(zhí)行,直到某個(gè) search_condition 表達(dá)式為真,則執(zhí)行對(duì)應(yīng) THEN 關(guān)鍵字后面的 statement_list 語(yǔ)句。如果沒(méi)有條件匹配,ELSE 子句里的語(yǔ)句被執(zhí)行。

這里介紹的 CASE 語(yǔ)句與“控制流程函數(shù)”里描述的 SQL CASE 表達(dá)式的 CASE 語(yǔ)句有輕微的不同。這里的 CASE 語(yǔ)句不能有 ELSE NULL 語(yǔ)句,并且用 END CASE 替代 END 來(lái)終止。

例 2

下面是一個(gè)使用 CASE 語(yǔ)句的示例。代碼如下:

CASE age
    WHEN 20 THEN SET @count1=@count1+1;
    ELSE SET @count2=@count2+1;
END CASE;

代碼也可以是下面的形式:

CASE
    WHEN age=20 THEN SET @count1=@count1+1;
    ELSE SET @count2=@count2+1;
END CASE;

本示例中,如果 age 值為 20,count1 的值加 1,否則 count2 的值加 1。

3. LOOP 語(yǔ)句

LOOP 語(yǔ)句可以使某些特定的語(yǔ)句重復(fù)執(zhí)行。與 IF 和 CASE 語(yǔ)句相比,LOOP 只實(shí)現(xiàn)了一個(gè)簡(jiǎn)單的循環(huán),并不進(jìn)行條件判斷。

LOOP 語(yǔ)句本身沒(méi)有停止循環(huán)的語(yǔ)句,必須使用 LEAVE 語(yǔ)句等才能停止循環(huán),跳出循環(huán)過(guò)程。LOOP 語(yǔ)句的基本形式如下:

[begin_label:]LOOP
    statement_list
END LOOP [end_label]

其中,begin_label 參數(shù)和 end_label 參數(shù)分別表示循環(huán)開(kāi)始和結(jié)束的標(biāo)志,這兩個(gè)標(biāo)志必須相同,而且都可以省略;statement_list 參數(shù)表示需要循環(huán)執(zhí)行的語(yǔ)句。

例 3

使用 LOOP 語(yǔ)句進(jìn)行循環(huán)操作。代碼如下:

add_num:LOOP
    SET @count=@count+1;
END LOOP add_num;

該示例循環(huán)執(zhí)行 count 加 1 的操作。因?yàn)闆](méi)有跳出循環(huán)的語(yǔ)句,這個(gè)循環(huán)成了一個(gè)死循環(huán)。LOOP 循環(huán)都以 END LOOP 結(jié)束。

4. LEAVE 語(yǔ)句

LEAVE 語(yǔ)句主要用于跳出循環(huán)控制。其語(yǔ)法形式如下:

LEAVE label

其中,label 參數(shù)表示循環(huán)的標(biāo)志,LEAVE 語(yǔ)句必須跟在循環(huán)標(biāo)志前面。

例 4

下面是一個(gè) LEAVE 語(yǔ)句的示例。代碼如下:

add_num:LOOP
    SET @count=@count+1;
    IF @count=100 THEN
        LEAVE add_num;
END LOOP add num;

該示例循環(huán)執(zhí)行 count 加 1 的操作。當(dāng) count 的值等于 100 時(shí),跳出循環(huán)。

5. ITERATE 語(yǔ)句

ITERATE 是“再次循環(huán)”的意思,用來(lái)跳出本次循環(huán),直接進(jìn)入下一次循環(huán)。ITERATE 語(yǔ)句的基本語(yǔ)法形式如下:

ITERATE label

其中,label 參數(shù)表示循環(huán)的標(biāo)志,ITERATE 語(yǔ)句必須跟在循環(huán)標(biāo)志前面。

例 5

下面是一個(gè) ITERATE 語(yǔ)句的示例。代碼如下:

add_num:LOOP
    SET @count=@count+1;
    IF @count=100 THEN
        LEAVE add_num;
    ELSE IF MOD(@count,3)=0 THEN
        ITERATE add_num;
    SELECT * FROM employee;
END LOOP add_num;

該示例循環(huán)執(zhí)行 count 加 1 的操作,count 值為 100 時(shí)結(jié)束循環(huán)。如果 count 的值能夠整除 3,則跳出本次循環(huán),不再執(zhí)行下面的 SELECT 語(yǔ)句。

說(shuō)明:LEAVE 語(yǔ)句和 ITERATE 語(yǔ)句都用來(lái)跳出循環(huán)語(yǔ)句,但兩者的功能是不一樣的。LEAVE 語(yǔ)句是跳出整個(gè)循環(huán),然后執(zhí)行循環(huán)后面的程序。而 ITERATE 語(yǔ)句是跳出本次循環(huán),然后進(jìn)入下一次循環(huán)。使用這兩個(gè)語(yǔ)句時(shí)一定要區(qū)分清楚。

6. REPEAT 語(yǔ)句

REPEAT 語(yǔ)句是有條件控制的循環(huán)語(yǔ)句,每次語(yǔ)句執(zhí)行完畢后,會(huì)對(duì)條件表達(dá)式進(jìn)行判斷,如果表達(dá)式返回值為 TRUE,則循環(huán)結(jié)束,否則重復(fù)執(zhí)行循環(huán)中的語(yǔ)句。

REPEAT 語(yǔ)句的基本語(yǔ)法形式如下:

[begin_label:] REPEAT
    statement_list
    UNTIL search_condition
END REPEAT [end_label]

其中:

  • begin_label 為 REPEAT 語(yǔ)句的標(biāo)注名稱(chēng),該參數(shù)可以省略;
  • REPEAT 語(yǔ)句內(nèi)的語(yǔ)句被重復(fù),直至 search_condition 返回值為 TRUE。
  • statement_list 參數(shù)表示循環(huán)的執(zhí)行語(yǔ)句;
  • search_condition 參數(shù)表示結(jié)束循環(huán)的條件,滿(mǎn)足該條件時(shí)循環(huán)結(jié)束。
  • REPEAT 循環(huán)都用 END REPEAT 結(jié)束。

例 6

下面是一個(gè)使用 REPEAT 語(yǔ)句的示例。代碼如下:

REPEAT
    SET @count=@count+1;
    UNTIL @count=100
END REPEAT;

該示例循環(huán)執(zhí)行 count 加 1 的操作,count 值為 100 時(shí)結(jié)束循環(huán)。

7. WHILE 語(yǔ)句

WHILE 語(yǔ)句也是有條件控制的循環(huán)語(yǔ)句。WHILE 語(yǔ)句和 REPEAT 語(yǔ)句不同的是,WHILE 語(yǔ)句是當(dāng)滿(mǎn)足條件時(shí),執(zhí)行循環(huán)內(nèi)的語(yǔ)句,否則退出循環(huán)。WHILE 語(yǔ)句的基本語(yǔ)法形式如下:

[begin_label:] WHILE search_condition DO
    statement list
END WHILE [end label]

其中,search_condition 參數(shù)表示循環(huán)執(zhí)行的條件,滿(mǎn)足該條件時(shí)循環(huán)執(zhí)行;statement_list 參數(shù)表示循環(huán)的執(zhí)行語(yǔ)句。WHILE 循環(huán)需要使用 END WHILE 來(lái)結(jié)束。

例 7

下面是一個(gè)使用 WHILE 語(yǔ)句的示例。代碼如下:

WHILE @count<100 DO
    SET @count=@count+1;
END WHILE;

該示例循環(huán)執(zhí)行 count 加 1 的操作,count 值小于 100 時(shí)執(zhí)行循環(huán)。如果 count 值等于 100 了,則跳出循環(huán)。


本文題目:創(chuàng)新互聯(lián)數(shù)據(jù)庫(kù)教程:MySQL流程控制語(yǔ)句詳解
分享URL:http://www.5511xx.com/article/cosgdci.html