二十七、MySQL基础系列笔记之循环语句的基本使用

作者: 温新

分类: 【MySql】

阅读: 2126

时间: 2020-11-21 07:35:07

MySQL中,常用的循环有三种,while循环、loop循环、repeat循环。

MySQL循环语句的作用与其他编程语言中的循环是一样的,不同的是在于语法。如在PHP语言中,要将一句话同样的话输出100次,毫无疑问就用到循环了,MySQL中也是如此。别忘了SQL也是一种编程。

while循环

语法

[标识名称:] WHILE 条件 DO
	SQL语句;
END WHILE [标识名称]

存储过程-案例

# 形式一 无标识
DELIMITER //
DROP PROCEDURE IF EXISTS twhile//
CREATE PROCEDURE twhile(IN c INT)
BEGIN
	DECLARE count INT DEFAULT 0;
	WHILE count < c DO
		SELECT count;
		SET count = count + 1;
	END WHILE;
END//

CALL twhile(5)//

# 形式二 有标识
DELIMITER //
DROP PROCEDURE IF EXISTS twhile1//
CREATE PROCEDURE twhile1(IN c INT)
BEGIN
	DECLARE count INT DEFAULT 0;
	tt: WHILE count < c DO
		SELECT count;
		SET count = count + 1;
	END WHILE tt;
END//

函数-案例-使用函数求1-100之和

DELIMITER //
DROP FUNCTION IF EXISTS tfunc//
CREATE FUNCTION tfunc(quantity INT) RETURNS INT(10)
BEGIN
	DECLARE count INT DEFAULT 0;
	DECLARE num INT DEFAULT 0;
	WHILE count < quantity DO
		SET count = count+1;
		SET num = num + count;
	END WHILE;
	RETURN num;
END//

SELECT tfunc(100)//

repeat循环

语法

[标识名称:] REPEAT
	SQL语句;
UNTIL 结束循环的条件 REPEAT [标识名称]

案例

DELIMITER //
DROP PROCEDURE IF EXISTS demo02//
CREATE PROCEDURE demo02(IN c INT)
BEGIN
	DECLARE i INT DEFAULT 0;
	REPEAT 
		SELECT i
		SET i =i+1;
	UNTIL i >= c END REPEAT;
END//

CALL demo02(3)//	# 结果 1 2 3

MySQL中使用leaveiterate来控制循环语句的走向,leave终止循环语句的执行,iterate跳过本次循环。相当于PHP中的continue与break。

loop循环

Loop循环没有自带的终止循环的条件,需要自定义条件退出循环。使用loop循环要退出时,loop循环必须声明循环标识名称。

语法

[标识名称:] LOOP
	sql语句;
END LOOP [标识名称];

案例

DELIMITER //
DROP PROCEDURE IF EXISTS demo02//
CREATE PROCEDURE demo02(IN c INT)
BEGIN
	DECLARE i INT DEFAULT 0;
	a: LOOP
		SELECT i;
		SET i=i+1;
		# 当i>=5 时终退出循环
		IF i >= c THEN LEAVE a;
		END IF;
	END LOOP a;
END//

iterate案例--输出偶数

DELIMITER //
DROP PROCEDURE IF EXISTS demo02//
CREATE PROCEDURE demo02(IN c INT)
BEGIN
	DECLARE i INT DEFAULT 0;
	a: WHILE i < c DO
		SET i=i+1;
		IF i>c THEN LEAVE a;
		ELSEIF MOD(i,2) != 0 THEN ITERATE a;
		END IF;
        SELECT i;
	END WHILE a;
END//

三中循环的特点

while循环:先判断条件后执行语句;

repeat循环:先执行语句后判断条件;

loop循环:无条件的死循环。

2020-11-21

请登录后再评论