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

作者: 温新

分类: 【MySql】

阅读: 1863

时间: 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月27日

请登录后再评论