视频加载失败

MySQL进阶知识之流程控制

1019 字
5 分钟
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:根据表达式的值来决定返回哪个结果。它主要用于处理非确定性的情况,例如用户选择不同的选项或者数据库中存在不同的数据。
  • IF 和 ELSE:根据条件判断是否执行某个操作。它主要用于简单的逻辑判断。
  • WHILE 和 UNTIL:当某条件满足时重复执行一段代码。它可以用于循环执行某个操作直到满足某个条件为止。
  • 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 ;

支持与分享

如果这篇文章对你有帮助,欢迎分享给更多人或打赏支持!

打赏
MySQL进阶知识之流程控制
https://firefly.cuteleaf.cn/posts/database/mysql/190mysql进阶知识之流程控制/
作者
Dream
发布于
2023-06-30
许可协议
CC BY-NC-SA 4.0
Profile Image of the Author
Dream
Hello, I'm Dream.
公告
欢迎来到我的博客!爱学习爱进步。
分类
标签
最新动态
站点统计
文章
300
分类
5
标签
26
总字数
640,882
运行时长
0 天
最后活动
0 天前
站点信息
构建平台
Vercel
博客版本
Firefly v6.16.8
文章许可
CC BY-NC-SA 4.0
文章目录