梁山专做网站的公司,制作网站的公司,网页成品,生产erp软件目录 前言1. 基本知识2. Demo3. 拓展Mysql4. 彩蛋 前言
实战探讨主要来源于触发器的Demo
1. 基本知识
DECLARE 语句用于声明变量
声明的变量可以用于存储临时数据#xff0c;并在 SQL 查询中多次引用
声明变量#xff1a;使用 DECLARE 语句声明一个或多个变量变量命名DECLARE 语句用于声明变量
声明的变量可以用于存储临时数据并在 SQL 查询中多次引用
声明变量使用 DECLARE 语句声明一个或多个变量变量命名变量名以 开头后面跟随变量名变量类型必须为每个变量指定数据类型如 INT、VARCHAR、DATE 等赋值使用 SET 语句或在声明时直接赋值使用变量在查询中引用变量可以进行各种操作如条件判断、循环等
基本的语法如下
DECLARE variable_name datatype;2. Demo
示例 1简单声明和赋值
-- 声明一个整数变量还可直接这样定义 DECLARE MyNumber INT10;
DECLARE MyNumber INT;
-- 为变量赋值
SET MyNumber 10;
-- 使用变量
SELECT MyNumber AS My Number;截图如下 示例 2在查询中使用变量
-- 声明变量
DECLARE FirstName VARCHAR(50);
DECLARE LastName VARCHAR(50);
DECLARE FullName VARCHAR(100);-- 赋值
SET FirstName John;
SET LastName Doe;-- 连接字符串
SET FullName FirstName LastName;-- 使用变量
SELECT FullName AS Full Name;截图如下 示例 3在条件语句中使用变量
-- 声明变量
DECLARE Threshold INT;
DECLARE Result VARCHAR(50);-- 赋值
SET Threshold 50;-- 条件判断
IF Threshold 100SET Result Above 100;
ELSESET Result 100 or Below;-- 使用变量
SELECT Result AS Result;截图如下 示例 4在循环中使用变量
-- 声明变量
DECLARE Counter INT;
DECLARE MaxCount INT;-- 赋值
SET Counter 1;
SET MaxCount 5;-- 循环
WHILE Counter MaxCount
BEGINPRINT Counter is CAST(Counter AS VARCHAR(10));SET Counter Counter 1;
END截图如下 3. 拓展Mysql
对于Mysql的临时变量基本知识如下
声明变量使用 SET 或 SELECT … INTO 语句来声明变量变量命名变量名以 开头后面跟随变量名变量类型MySQL 中的变量不需要显式声明数据类型使用变量在查询中引用变量可以进行各种操作如条件判断、循环等
基本语法如下
SET variable_name value;与上面同理Demo如下
示例 1简单声明和赋值
-- 声明并赋值变量
SET MyNumber 10;
-- 使用变量
SELECT MyNumber AS My Number;截图如下 示例 2在查询中使用变量
-- 声明并赋值变量
SET FirstName John;
SET LastName Doe;-- 连接字符串
SET FullName CONCAT(FirstName, , LastName);-- 使用变量
SELECT FullName AS Full Name;截图如下 示例 3在条件语句中使用变量 sql 复制代码 – 声明并赋值变量 SET Threshold 50;
– 条件判断 IF Threshold 100 THEN SET Result ‘Above 100’; ELSE SET Result ‘100 or Below’; END IF;
– 使用变量 SELECT Result AS ‘Result’;
截图如下 示例 4在循环中使用变量 必须将循环逻辑封装在存储过程或存储函数中
DELIMITER $$CREATE PROCEDURE LoopExample()
BEGINDECLARE Counter INT DEFAULT 1;DECLARE MaxCount INT DEFAULT 5;-- 使用准备好的语句进行循环PREPARE stmt FROM SELECT ? AS Counter;WHILE Counter MaxCount DOEXECUTE stmt USING Counter;SET Counter Counter 1;END WHILE;DEALLOCATE PREPARE stmt;
END$$DELIMITER ;-- 调用存储过程
CALL LoopExample();截图如下 4. 彩蛋
以下为错误的Demo
对于循环遍历Mysql中不适合使用if需要使用case
-- 声明并赋值变量
SET Threshold 50;-- 条件判断
IF Threshold 100 THENSET Result Above 100;
ELSESET Result 100 or Below;
END IF;-- 使用变量
SELECT Result AS Result;以及不可直接使用如下方式
-- 声明并赋值变量
SET Counter 1;
SET MaxCount 5;-- 使用准备好的语句进行循环
PREPARE stmt FROM SELECT ? AS Counter;
WHILE Counter MaxCount DOEXECUTE stmt USING Counter;SET Counter Counter 1;
END WHILE;
DEALLOCATE PREPARE stmt;