加入收藏 | 设为首页 | 会员中心 | 我要投稿 拼字网 - 核心网 (https://www.hexinwang.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 站长学院 > MySql教程 > 正文

MySQL流程控制语句详解

发布时间:2022-09-20 15:20:14 所属栏目:MySql教程 来源:
导读:  在存储过程和自定义函数中可以使用流程控制语句来控制程序的流程。MySQL 中流程控制语句有:IF 语句、CASE 语句、LOOP 语句、LEAVE 语句、ITERATE 语句、REPEAT 语句和 WHILE 语句等。

  下面将详细讲解这
  在存储过程和自定义函数中可以使用流程控制语句来控制程序的流程。MySQL 中流程控制语句有:IF 语句、CASE 语句、LOOP 语句、LEAVE 语句、ITERATE 语句、REPEAT 语句和 WHILE 语句等。
 
  下面将详细讲解这些流程控制语句。1. IF语句IF 语句用来进行条件判断,根据是否满足条件(可包含多个条件),来执行不同的语句,是流程控制中最常用的判断语句。其语法的基本形式如下:
 
  IF search_condition THEN statement_list
      [ELSEIF search_condition THEN statement_list]...
      [ELSE statement_list]
  END IF
  其中,search_condition 参数表示条件判断语句,如果返回值为 TRUE ,相应的 SQL 语句列表(statement_list)被执行;如果返回值为 FALSE,则 ELSE 子句的语句列表被执行。statement_list 可以包括一个或多个语句。
 
  注意:MySQL 中的 IF( ) 函数不同于这里的 IF 语句。
 
  例 1下面是一个使用 IF 语句的示例。代码如下:
 
  IF age>20 THEN SET @count1=@count1+1;
      ELSEIF age=20 THEN @count2=@count2+1;
      ELSE @count3=@count3+1;
  END lF;
  该示例根据 age 与 20 的大小关系来执行不同的 SET 语句。如果 age 值大于20,那么将 count1 的值加 1;如果 age 值等于 20,那么将 count2 的值加 1;其他情况将 count3 的值加 1。IF 语句都需要使用 END IF 来结束。
 
  2. CASE语句CASE 语句也是用来进行条件判断的,它提供了多个条件进行选择mysql语句,可以实现比 IF 语句更复杂的条件判断。CASE 语句的基本形式如下:
 
  CASE case_value
      WHEN when_value THEN statement_list
      [WHEN when_value THEN statement_list]...
      [ELSE statement_list]
  END CASE
  其中:
 
  CASE 语句还有另一种形式。该形式的语法如下:
 
  CASE
      WHEN search_condition THEN statement_list
      [WHEN search_condition THEN statement_list] ...
      [ELSE statement_list]
  END CASE
  其中,search_condition 参数表示条件判断语句;statement_list 参数表示不同条件的执行语句。
 
  与上述语句不同的是,该语句中的 WHEN 语句将被逐个执行,直到某个 search_condition 表达式为真,则执行对应 THEN 关键字后面的 statement_list 语句。如果没有条件匹配,ELSE 子句里的语句被执行。
 
  这里介绍的CASE 语句与“控制流程函数”里描述的 SQL CASE 表达式的 CASE 语句有轻微的不同。这里的 CASE 语句不能有 ELSE NULL 语句,并且用 END CASE 替代 END 来终止。
 
  例 2下面是一个使用 CASE 语句的示例。代码如下:
 
  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 语句LOOP 语句可以使某些特定的语句重复执行。与 IF 和 CASE 语句相比,LOOP 只实现了一个简单的循环,并不进行条件判断。
 
  LOOP 语句本身没有停止循环的语句,必须使用 LEAVE 语句等才能停止循环,跳出循环过程。LOOP 语句的基本形式如下:
 
  [begin_label:]LOOP
      statement_list
  END LOOP [end_label]
  其中,begin_label 参数和 end_label 参数分别表示循环开始和结束的标志,这两个标志必须相同,而且都可以省略;statement_list 参数表示需要循环执行的语句。
 
  例 3使用 LOOP 语句进行循环操作。代码如下:
 
  add_num:LOOP
      SET @count=@count+1;
  END LOOP add_num;
  该示例循环执行 count 加 1 的操作。因为没有跳出循环的语句,这个循环成了一个死循环。LOOP 循环都以 END LOOP 结束。
 
  4. LEAVE 语句LEAVE 语句主要用于跳出循环控制。其语法形式如下:
 
  LEAVE label
 
  其中,label 参数表示循环的标志,LEAVE 语句必须跟在循环标志前面。
 
  例 4下面是一个 LEAVE 语句的示例。代码如下:
 
  add_num:LOOP
      SET @count=@count+1;
      IF @count=100 THEN
          LEAVE add_num;
  END LOOP add num;
  该示例循环执行 count 加 1 的操作。当 count 的值等于 100 时,跳出循环。
 
  5. ITERATE 语句ITERATE 是“再次循环”的意思,用来跳出本次循环,直接进入下一次循环。ITERATE 语句的基本语法形式如下:
 
  ITERATE label
 
  其中,label 参数表示循环的标志,ITERATE 语句必须跟在循环标志前面。
 
  例 5下面是一个 ITERATE 语句的示例。代码如下:
 
  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;
  该示例循环执行 count 加 1 的操作,count 值为 100 时结束循环。如果 count 的值能够整除 3,则跳出本次循环,不再执行下面的 SELECT 语句。
 
  说明:LEAVE 语句和 ITERATE 语句都用来跳出循环语句,但两者的功能是不一样的。LEAVE 语句是跳出整个循环,然后执行循环后面的程序。而 ITERATE 语句是跳出本次循环,然后进入下一次循环。使用这两个语句时一定要区分清楚。
 
  6. REPEAT 语句REPEAT 语句是有条件控制的循环语句,每次语句执行完毕后,会对条件表达式进行判断,如果表达式返回值为 TRUE,则循环结束,否则重复执行循环中的语句。
 
  REPEAT 语句的基本语法形式如下:
 
  [begin_label:] REPEAT
 
  statement_list
 
  UNTIL search_condition
 
  END REPEAT [end_label]
 
  其中:例 6下面是一个使用 REPEAT 语句的示例。代码如下:
 
  REPEAT
      SET @count=@count+1;
      UNTIL @count=100
  END REPEAT;
  该示例循环执行 count 加 1 的操作,count 值为 100 时结束循环。
 
  7. WHILE 语句WHILE 语句也是有条件控制的循环语句。WHILE 语句和 REPEAT 语句不同的是,WHILE 语句是当满足条件时,执行循环内的语句,否则退出循环。WHILE 语句的基本语法形式如下:
 
  [begin_label:] WHILE search_condition DO
 
  statement list
 
  END WHILE [end label]
 
  其中,search_condition 参数表示循环执行的条件,满足该条件时循环执行;statement_list 参数表示循环的执行语句。WHILE 循环需要使用 END WHILE 来结束。
 
  例 7下面是一个使用 WHILE 语句的示例。代码如下:
 
  WHILE @count<100 DO
      SET @count=@count+1;
  END WHILE;
  该示例循环执行 count 加 1 的操作,count 值小于 100 时执行循环。如果 count 值等于 100 了,则跳出循环。
 

(编辑:拼字网 - 核心网)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!