MySQL 流程控制语句用于在 SQL 语句中实现条件判断和循环操作,从而实现复杂的逻辑处理。以下是一些主要的流程控制语句及其功能:
IF 语句用于在满足特定条件时执行不同的 SQL 语句。
语法:
IF condition THEN
statement1;
[ELSEIF condition THEN
statement2;]
[ELSE
statement3;]
END IF;示例:
DELIMITER //
CREATE PROCEDURE CheckAge(IN age INT)
BEGIN
IF age < 18 THEN
SELECT 'Minor';
ELSEIF age BETWEEN 18 AND 65 THEN
SELECT 'Adult';
ELSE
SELECT 'Senior';
END IF;
END //
DELIMITER ;CASE 语句类似于编程语言中的 switch 语句,用于多条件判断。
语法:
CASE
WHEN condition1 THEN statement1;
WHEN condition2 THEN statement2;
...
ELSE statementN;
END CASE;示例:
DELIMITER //
CREATE PROCEDURE GetGrade(IN score INT)
BEGIN
DECLARE grade CHAR(1);
CASE
WHEN score >= 90 THEN SET grade = 'A';
WHEN score >= 80 THEN SET grade = 'B';
WHEN score >= 70 THEN SET grade = 'C';
WHEN score >= 60 THEN SET grade = 'D';
ELSE SET grade = 'F';
END CASE;
SELECT grade;
END //
DELIMITER ;LOOP 语句用于创建一个无限循环,直到遇到 LEAVE 语句才会退出。
语法:
LOOP
statement;
[LEAVE label;]
END LOOP;示例:
DELIMITER //
CREATE PROCEDURE PrintNumbers(IN max INT)
BEGIN
DECLARE i INT DEFAULT 0;
loop_label: LOOP
IF i >= max THEN
LEAVE loop_label;
END IF;
SELECT i;
SET i = i + 1;
END LOOP;
END //
DELIMITER ;WHILE 语句用于在满足条件时重复执行一段代码。
语法:
WHILE condition DO
statement;
END WHILE;示例:
DELIMITER //
CREATE PROCEDURE PrintEvenNumbers(IN max INT)
BEGIN
DECLARE i INT DEFAULT 0;
WHILE i <= max DO
IF i % 2 = 0 THEN
SELECT i;
END IF;
SET i = i + 1;
END WHILE;
END //
DELIMITER ;REPEAT 语句类似于 WHILE,但条件检查在循环体的末尾进行。
语法:
REPEAT
statement;
UNTIL condition END REPEAT;示例:
DELIMITER //
CREATE PROCEDURE PrintOddNumbers(IN max INT)
BEGIN
DECLARE i INT DEFAULT 0;
repeat_label: REPEAT
SET i = i + 1;
IF i % 2 != 0 THEN
SELECT i;
END IF;
UNTIL i > max END REPEAT;
END //
DELIMITER ;DECLARE 关键字。通过合理使用这些流程控制语句,可以在 MySQL 中实现高效的逻辑处理和数据操作。
没有搜到相关的文章