Mysql流程控制之条件、循环结构


本文摘自PHP中文网,作者齐天大圣,侵删。

平时绝大部分时间可能都用不到Mysql的流程控制语句,但如果我们需要写存储过程的话,就会用到了。有了流程控制语句,mysql就能想其他编程语言一样写程序了。下面分别来介绍条件分支与循环体。

条件分支

mysql关于条件分支有两种,IF与CASE。

IF条件

首先来看它的语法:

1

2

3

4

5

IF CONDITION THEN 语句;

[ELSEIF CONDITION THEN 语句]

……

[ELSE 语句]

END IF;

和php看起来有点像,但是在mysql里是没有“{}”,所以在mysql里使用END IF来结束条件分支。

下来我们来写一个最简单的条件分支,判断输入的值是否大于60,为真则输出pass。

1

2

3

4

5

BEGIN

 IF score >= 60 THEN

  SELECT 'PASS';

  END IF;

END

现在,我们来写一个多分支结构。当得分大于等于90时候,输出PERFETCT,大于等于80输出great;大于等于70则输出good;大于等于60输出common;否则输出bad;

1

2

3

4

5

6

7

8

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

2

3

4

5

6

7

语法1:

CASE

  WHEN V1 THEN 语句

  [WHEN V2 THEN 语句]

  ……

  [ELSE 语句]

END CASE;

1

2

3

4

5

6

7

语法2:

CASE VALUE

  WHEN V1 THEN 语句

  [WHEN V2 THEN 语句]

  ……

  [ELSE 语句]

END CASE;

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

1

2

3

4

5

6

7

8

9

10

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一样。他的语法如下:

1

2

3

WHILE CONDITION DO

  循环体

END WHILE;

下面,我们来写一个最简单的循环体,计算1+2+……+100的总和。

阅读剩余部分

相关阅读 >>

mysql 百万级分页优化(mysql千万级快速分页)

详解mysql从入门到放弃-安装

mysql中的日期字段有哪些

mysql怎么设置自增id的条件?

mysql怎么导入txt文件?

尝试搭建mysql master-slave主从复制的环境

mysql开启慢查询日志的方法详解

几种mysql中的联接查询操作方法总结

mysql字符串函数详解(推荐)

通过实例讲解mysql如何实现定时任务

更多相关阅读请进入《mysql》频道 >>


数据库系统概念 第6版
书籍

数据库系统概念 第6版

机械工业出版社

本书主要讲述了数据模型、基于对象的数据库和XML、数据存储和查询、事务管理、体系结构等方面的内容。



打赏

取消

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

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

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

分享从这里开始,精彩与您同在

评论

管理员已关闭评论功能...