百分百源码网-让建站变得如此简单! 登录 注册 签到领金币!

主页 | 如何升级VIP | TAG标签

当前位置: 主页>网站教程>数据库> Mysql流程控制之前提、轮回构造
分享文章到:

Mysql流程控制之前提、轮回构造

发布时间:09/01 来源:未知 浏览: 关键词:
平常绝大部分时间大概都用不到Mysql的流程操纵语句,但假如我们需要写储备历程的话,就会用到了。有了流程操纵语句,mysql就能想其他编程说话一样写程序了。下面离别来介绍前提分支与轮回体。

前提分支

mysql关于前提分支有两种,IF与CASE。

IF前提

第一来看它的语法:

IF CONDITION THEN 语句;
[ELSEIF CONDITION THEN 语句]
……
[ELSE 语句]
END IF;

和php看起来有点像,但是在mysql里是没有“{}”,所以在mysql里使用END IF来完毕前提分支。

下来我们来写一个最简便的前提分支,推断输入的值可否大于60,为真则输出pass。

BEGIN
 IF score >= 60 THEN
  SELECT 'PASS';
  END IF;
END

此刻,我们来写一个多分支构造。当得分大于等于90时候,输出PERFETCT,大于等于80输出great;大于等于70则输出good;大于等于60输出common;不然输出bad;

BEGIN
 IF score >= 90 THEN SELECT 'PERFECT';
    ELSEIF score >= 80 THEN SELECT 'GREAT';
    ELSEIF score >=70 THEN SELECT 'GOOD';
    ELSEIF score >= 60 THEN SELECT 'COMMON';
    ELSE SELECT 'BAD';
    END IF;
END

CASE前提分支

case前提分支有两种语法。第一种和php中的IF相似,另一种则和PHP中的switch-case类型。

语法1:
CASE 
  WHEN V1 THEN 语句 
  [WHEN V2 THEN 语句]
  ……
  [ELSE 语句]
END CASE;
语法2:
CASE VALUE 
  WHEN V1 THEN 语句
  [WHEN V2 THEN 语句]
  ……
  [ELSE 语句]
END CASE;

下面来用语法2来完成和IF一样的功效。

BEGIN
    CASE FLOOR(score/10) 
    WHEN 10 THEN SELECT '优异';
    WHEN 9 THEN SELECT '优异';
    WHEN 8 THEN SELECT '良好';
    WHEN 7 THEN SELECT '一样';
    WHEN 6 THEN SELECT '及格';
    ELSE SELECT '不及格';
    END CASE;
 END

轮回体

Mysql中也有几种不一样的轮回体构造,并且也有相似php中的break及continue的语句。下面,我们来看看这些轮回体乃至他们有什么样的不同。

WHILE

这里的while根本和php一样。他的语法如下:

WHILE CONDITION DO
  轮回体
END WHILE;

下面,我们来写一个最简便的轮回体,运算1+2+……+100的总和。

BEGIN
  DECLARE i TINYINT DEFAULT 1;
  DECLARE n TINYINT DEFAULT 100;
  DECLARE s INT DEFAULT 0;
  WHILE i <= n DO
    SET s = s + i;
    SET i = i + 1;
  END WHILE;
 SELECT s;
END

这里DECLARE相当于定义一个变量,然后用default设定初始值。而变量的赋值,则需要SET命令实现。

REPEAT

repeat相当于php中的do-while轮回体,先施行轮回体,然后再停止前提推断。它的语法如下:

REPEAT
  轮回体
UNTIL CONDITION
END REPEAT;

下面,我们用REPEAT完成1+2+……+100的总和。

BEGIN
 DECLARE i TINYINT DEFAULT 1;
  DECLARE n TINYINT DEFAULT 100;
  DECLARE s INT DEFAULT 0;
  REPEAT 
    SET s = s+i;
    SET i = i+1;
  UNTIL i > 100
  END REPEAT;
 SELECT s;
END

LOOP轮回

LOOP可以重复施行一个代码块,并可以给loop设定标签。

LEAVE相当于php中的break语句,loop假如想退出轮回,就必需使用leave来实现。别的,可用ITERATE来实现php中的continue语句的功效。

下面,来看看两个实例。

第一个还是运算100以所有天然数的和,但这里有个留意点,由于LOOP没有CONDITION语句,所以LEAVE必需要和IF配合使用来完成跳出轮回的功效。

BEGIN
 DECLARE i TINYINT DEFAULT 1;
  DECLARE n TINYINT DEFAULT 100;
  DECLARE s INT DEFAULT 0;
  l:LOOP
    SET s = s + i;
    SET i = i + 1;
 
  IF i > n THEN LEAVE l;
    END IF;
  END LOOP l;  
 SELECT s;
END

第二个例子,我们会用到iterate。运算100之内所有奇数的和。

BEGIN
 DECLARE i TINYINT DEFAULT 0;
  DECLARE n TINYINT DEFAULT 100;
  DECLARE s INT DEFAULT 0;
  l:LOOP
  IF i >= n THEN LEAVE l;
  END IF;
  SET i = i + 1;
  IF i % 2 = 0 THEN ITERATE l;
  END IF;
    SET s = s + i;
  END LOOP l;  
 SELECT s;
END

以上就是Mysql流程操纵之前提、轮回构造的具体内容,更多请关注百分百源码网其它相关文章!

打赏

打赏

取消

感谢您的支持,我会继续努力的!

扫码支持
扫码打赏,你说多少就多少

打开支付宝扫一扫,即可进行扫码打赏哦

百分百源码网 建议打赏1~10元,土豪随意,感谢您的阅读!

共有151人阅读,期待你的评论!发表评论
昵称: 网址: 验证码: 点击我更换图片
最新评论

本文标签

广告赞助

能出一分力是一分吧!

订阅获得更多模板

本文标签

广告赞助

订阅获得更多模板