MySQL初级-21-流程控制结构

本文最后更新于:2020年7月28日 下午

mysql Ver 14.14 Distrib 5.5.62

文中案例所用数据库下载

21.1 分类

流程控制结构包括:顺序、分支和循环三大类,一般默认的结构都是顺序结构,

21.2 分支结构

21.2.1 IF函数

IF(条件,值1,值2);

判断条件是否成立,成立则执行值1,失败则执行值2。

实现了双分支,应用在BEGIN END中或外面。

21.2.2 IF结构

IF 条件1 THEN 语句1;
ELSEIF 条件2 THEN 语句2;
...
ELSE 语句N
END IF

类似于多重IF,只能应用在BEGIN END中。

21.2.3 CASE结构

#语法一
CASE 变量或表达式
WHEN 值1 THEN 语句1;
WHEN 值2 THEN 语句2;
...
ELSE 语句N;
END
#语法二
CASE
WHEN 条件1 THEN 语句1;
WHEN 条件2 THRN 语句2;
...
ELSE 语句N;
END

应用在BEGIN END中后外面。

21.2.4 示例

  1. 创建函数,实现传入成绩,判断成绩大于等于90,返回A;成绩大于等于80,返回B;成绩大于等于60,返回C,其他返回D。

    DELIMITER $
    CREATE FUNCTION grade_level(score FLOAT) RETURNS CHAR
    BEGIN
    	DECLARE lev CHAR DEFAULT '';
    	IF score>=90 THEN SET lev='A';
    	ELSEIF score>=80 THEN SET lev='B';
    	ELSEIF score>=60 THEN SET lev='C';
    	ELSE SET lev='D';
    	END IF;
    	RETURN lev;
    END $
    DELIMITER ;
  1. 创建存储过程,如果输入的工资小于2000,则删除员工表中员工工资与输入工资相等的员工的所有信息;如果工资大于等于2000小于5000,则将员工工资等于输入工资的员工涨工资1000;否则涨工资500。

    DELIMITER $
    CREATE PROCEDURE ope1(IN sal DOUBLE)
    BEGIN
    	IF sal<2000 THEN DELETE FROM employees WHERE employees.`salary`=sal;
    	ELSEIF sal>=2000 AND sal<5000 THEN UPDATE employees SET salary=salary+1000 WHERE employees.`salary`=sal;
    	ELSE UPDATE employees SET salary=salary+500 WHERE employees.`salary`=sal;
    	END IF;
    END $
    DELIMITER ;

21.3 循环结构

循环结构所处的位置都在BEGIN END中。

循环控制:

  1. ITERATE:类似于continue,继续,结束本次循环,继续下一次。
  2. LEAVE:类似于break,跳出,结束当前所在的循环。

21.3.1 WHILE结构

WHILE 循环条件 
DO
	循环体;
END WHILE;

WHILE结构会先判断是否符合循环条件,符合则执行循环体,否则结束循环。

21.3.2 LOOP结构

LOOP
	循环体;
END LOOP;

LOOP是一个没有条件的死循环。

21.3.3 REPEAT结构

REPEAT
	循环体;
UNTIL 结束循环的条件
END REPEAT;

REPEAT结构会先执行循环体一次,再判断循环条件是否满足,满足条件则再执行循环体,不满足则结束循环。


版权声明:自由转载-非商用-非衍生-保持署名 Creative Commons BY-NC-ND 3.0 协议,转载请注明出处!

 目录