• 技术文章 >数据库 >mysql教程

    mysql流程控制语句包括哪些?

    青灯夜游青灯夜游2020-12-22 17:19:15原创3667

    mysql中的流程控制语句包括有:IF语句、CASE语句、LOOP语句、WHILE语句、REPEAT语句、LEAVE语句和ITERATE语句,它们都可以来控制程序的流程。

    php入门到就业线上直播课:进入学习

    在存储过程和自定义函数中可以使用流程控制语句来控制程序的流程。MySQL 中流程控制语句有::IF语句、CASE语句、LOOP语句、WHILE语句、REPEAT语句、LEAVE语句和ITERATE语句,它们可以进行流程控制。(推荐教程:mysql视频教程

    1、IF语句

    IF语句用来进行条件判断,根据不同的条件执行不同的操作。该语句在执行时首先判断IF后的条件是否为真,则执行THEN后的语句,如果为假则继续判断IF语句直到为真为止,当以上都不满足时则执行ELSE语句后的内容。IF语句表示形式如下:

    IF condition THEN
    	...
    ELSE condition THEN
    	...
    ELSE
    	...
    END IF

    示例:使用IF语句用来进行条件判断。

    -- 创建存储过程
    CREATE PROCEDURE example_if (IN x INT)
    BEGIN
    	IF x = 1 THEN
    		SELECT 1;
    	ELSEIF x = 2 THEN 
    		SELECT 2;
    	ELSE
    		SELECT 3;
    	END IF;
    END;
    
    -- 调用存储过程
    CALL example_if(2);

    注意:MySQL 中的 IF( ) 函数不同于这里的 IF 语句。

    2、CASE语句

    CASE语句为多分支语句结构,该语句首先从WHEN后的VALUE中查找与CASE后的VALUE相等的值,如果查找到则执行该分支的内容,否则执行ELSE后的内容。CASE语句表示形式如下:

    CASE value
    	WHEN value THEN ...
    	WHEN value THEN ...
    	ELSE ...
    END CASE

    CASE语句另一种语法表示形式如下:

    CASE
    	WHEN value THEN ...
    	WHEN value THEN ...
    	ELSE ...
    END CASE

    示例:使用CASE语句用来进行条件判断。

    -- 创建存储过程
    CREATE PROCEDURE example_case(IN x INT)
    BEGIN
    	CASE x
    		WHEN 1 THEN SELECT 1;
    		WHEN 2 THEN SELECT 2;
    		ELSE SELECT 3;
    	END CASE;
    END;
    
    -- 调用存储过程
    CALL example_case(5);

    3、WHILE循环语句

    WHILE循环语句执行时首先判断condition条件是否为真,如果是则执行循环体,否则退出循环。该语法表示形式如下:

    WHILE condition DO
    ...
    END WHILE;

    示例:使用WHILE循环语句执行求前100的和。

    -- 创建存储过程
    CREATE PROCEDURE example_while(OUT sum INT)
    BEGIN
    	DECLARE i INT DEFAULT 1;
    	DECLARE s INT DEFAULT 0;
    
    	WHILE i <= 100 DO
    		SET s = s+i;
    		SET i = i+1;
    	END WHILE;
    
    	SET sum = s;
    END;
    
    -- 调用存储过程
    CALL example_while(@sum);
    SELECT @sum;

    4、LOOP循环语句

    LOOP循环没有内置的循环条件,但可以通过LEAVE语句退出循环。LOOP语句表示形式如下:

    LOOP
    	...
    END LOOP

    LOOP语句允许某特定语句或语句群的重复执行,实现一个简单的循环构造,在循环内的语句一直重复直至循环被退出,退出循环应用LEAVE语句。

    LEAVE语句经常和BEGIN...END或者循环一起使用,其表示形式如下:

    LEAVE label

    label是语句中标注的名字,这个名字是自定义的。

    示例:使用LOOP循环语句求前100的和。

    -- 创建存储过程
    CREATE PROCEDURE example_loop(OUT sum INT)
    BEGIN
    	DECLARE i INT DEFAULT 1;
    	DECLARE s INT DEFAULT 0;
    	
    	loop_label:LOOP
    		SET s = s+i;
    		SET i = i+1;
    	
    		IF i>100 THEN
    			-- 退出LOOP循环
    			LEAVE loop_label;  
    		END IF;
    	END LOOP;
    
    	SET sum = s;
    END;
    
    -- 调用存储过程
    CALL example_loop(@sum);
    SELECT @sum;

    5、REPEAT循环语句

    REPEAT循环语句先执行一次循环体,之后判断condition条件是否为真,则退出循环,否则继续执行循环。REPEAT语句表示形式如下:

    REPEAT
    	...
    	UNTIL condition
    END REPEAT

    示例:使用REPEAT循环语句求前100的和。

    -- 创建存储过程
    CREATE PROCEDURE example_repeat(OUT sum INT)
    BEGIN
    	DECLARE i INT DEFAULT 1;
    	DECLARE s INT DEFAULT 0;
    
    	REPEAT
    		SET s = s+i;
    		SET i = i+1;
    		
    		UNTIL i > 100
    	END REPEAT;
    	
    	SET sum = s;
    END;
    
    -- 调用存储过程
    CALL example_repeat(@sum);
    SELECT @sum;

    6、ITERATE语句

    ITERATE语句可以出现在LOOP、REPEAT和WHILE语句内,其意为“再次循环”。语句格式如下:

    ITERATE label

    该语句的格式与LEAVE大同小异,区别在于:LEAVE语句是离开一个循环,而ITERATE语句是重新开始一个循环。

    示例:求10以内奇数值的和。

    -- 创建存储过程
    CREATE PROCEDURE example_iterate(OUT sum INT)
    BEGIN
    	DECLARE i INT DEFAULT 0;
    	DECLARE s INT DEFAULT 0;
    	
    	loop_label:LOOP
    
    		SET i = i+1;		
    
    		IF i > 10 THEN
    			-- 退出整个循环
    			LEAVE loop_label;  
    		END IF;
    
    		IF (i mod 2) THEN
    			SET s = s+i;
    		ELSE
    			-- 退出本次循环,继续下一个循环
    			ITERATE  loop_label;
    		END IF;
    
    	END LOOP;
    
    	SET sum = s;
    END;
    
    -- 调用存储过程
    CALL example_iterate(@sum);
    SELECT @sum

    更多编程相关知识,请访问:编程学习网站!!

    以上就是mysql流程控制语句包括哪些?的详细内容,更多请关注php中文网其它相关文章!

    声明:本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系admin@php.cn核实处理。

    千万级数据并发解决方案(理论+实战):点击学习

    Mysql单表千万级数据量的查询优化与性能分析

    Mysql主从原理及其在高并发系统中的应用

    专题推荐:mysql 流程控制语句
    上一篇:mysql如何创建数据库? 下一篇:自己动手写 PHP MVC 框架(40节精讲/巨细/新人进阶必看)

    相关文章推荐

    • ❤️‍🔥共22门课程,总价3725元,会员免费学• ❤️‍🔥接口自动化测试不想写代码?• php如何连接mysql实现简单注册登陆页面• 详解MySQL 索引+explain• mysql如何进行解压式安装• mysql讲解Navicat Premium 15 激活版安装教程• mysql如何修改字段自动生成时间
    1/1

    PHP中文网