【19.0】MySQL进阶知识之流程控制

【零】各种语言中的流程控制语句

【1】Python

if 条件:
  子代码
elif 条件:
  子代码
else:
  子代码

【2】JavaScript

if(条件){
  子代码
}else if(条件){
  子代码
}else{
  子代码
}

【3】MySQL

  • if 语句
if 条件 then
      子代码
elseif 条件 then
      子代码
else
      子代码
end if;
  • while 语句
DECLARE num INT ;
SET num = 0 ;
WHILE num < 10 DO
  SELECT num ;
  SET num = num + 1 ;
END WHILE ;

【一】什么是流程控制

  • CASE:根据表达式的值来决定返回哪个结果。它主要用于处理非确定性的情况,例如用户选择不同的选项或者数据库中存在不同的数据。
  • IFELSE:根据条件判断是否执行某个操作。它主要用于简单的逻辑判断。
  • WHILEUNTIL:当某条件满足时重复执行一段代码。它可以用于循环执行某个操作直到满足某个条件为止。
  • FOR:重复执行一段代码直到满足结束条件。它主要用于遍历数组或集合。

【二】IF语句

【1】介绍

  • IF语句用于在满足条件时执行一组语句,否则执行另一组语句。它的基本语法如下:
IF condition THEN
    statements;
ELSE
    statements;
END IF;
  • 其中,condition是一个条件表达式,如果为真,则执行第一组语句;否则执行第二组语句。

【2】示例

SELECT 
    IFNULL(Bonus, 0) AS Bonus
FROM 
    Employees;
  • 检查员工的奖金是否存在,如果不存在则返回0。

【三】CASE语句

【1】介绍

  • CASE语句用于基于多个条件执行不同的操作。它分为两种形式:
    • 简单CASE和搜索CASE。

【2】简单CASE语句的基本语法

CASE expression
    WHEN value1 THEN
        statements;
    WHEN value2 THEN
        statements;
    ...
    ELSE
        statements;
END CASE;
  • 其中,expression是待比较的表达式,当它等于某个值时,执行相应的语句。

【3】搜索CASE语句的基本语法

CASE
    WHEN condition1 THEN
        statements;
    WHEN condition2 THEN
        statements;
    ...
    ELSE
        statements;
END CASE;
  • 在搜索CASE语句中,每个WHEN子句后面跟着一个条件表达式,当某个条件为真时,执行相应的语句。

【4】示例

SELECT 
    CASE 
        WHEN Salary > 5000 THEN 'High'
        ELSE 'Low'
    END AS SalaryGroup,
    COUNT(*) AS EmployeeCount
FROM 
    Employees
GROUP BY 
    SalaryGroup;
  • 根据员工的薪水将其分为“高薪”和“低薪”两类,并统计每类员工的数量。

【四】WHILE语句

【1】介绍

  • WHILE语句允许你在满足条件的情况下反复执行一组语句。它的基本语法如下:
WHILE condition DO
    statements;
END WHILE;
  • 只要condition为真,statements将被不断执行。

【2】示例

SET i = 1;
WHILE i <= 5 DO
    SELECT CONCAT('The number is: ', i) AS Number;
    SET i = i + 1;
END WHILE;
  • 在这个例子中,我们反复打印出数字1到5。

【五】LOOP语句

【1】介绍

  • LOOP语句用于无限循环执行一组语句,直到遇到LEAVE语句或满足特定条件时才退出循环。它的基本语法如下:
LOOP
    statements;
    IF condition THEN
        LEAVE;
    END IF;
END LOOP;
  • 你可以在循环中使用LEAVE语句来手动退出循环。

【2】示例

SET i = 1;
LOOP
    SELECT CONCAT('The number is: ', i) AS Number;
    SET i = i + 1;
    IF i > 10 THEN
        LEAVE;
    END IF;
END LOOP;

【六】FOR语句

【1】介绍

  • FOR语句是一种特殊的循环语句,它可以让你在一组范围内迭代并执行一系列语句。它的基本语法如下:
FOR var IN start, increment, end DO
    statements;
END FOR;
  • 这个语句会从start开始,每次递增increment的值,一直循环到end,然后退出循环。

【2】示例

SET i = 1;
FOR j IN 1, 2, 6 DO
    SELECT CONCAT('The number is: ', i) AS Number;
    SET i = i * j;
END FOR;
  • 在这个例子中,我们计算1到6的所有数的乘积,并在每次迭代后打印当前的乘积。

【六】模板参考

【1】if 判断

DELIMITER //
CREATE PROCEDURE proc_if()
BEGIN
    DECLARE i INT DEFAULT 0;
    IF i = 1 THEN
        SELECT 1;
    ELSEIF i = 2 THEN
        SELECT 2;
    ELSE
        SELECT 7;
    END IF;
END //
DELIMITER ;

【2】while 循环

DELIMITER //
CREATE PROCEDURE proc_while()
BEGIN
    DECLARE num INT DEFAULT 0;
    WHILE num < 10 DO
        SELECT num;
        SET num = num + 1;
    END WHILE;
END //
DELIMITER ;
posted @ 2024-01-29 21:45  Chimengmeng  阅读(2)  评论(0编辑  收藏  举报
/* */