如何在 MySQL 中为普通查询声明变量?
mysqlmysqli database
您可以使用 @anyVariablename 声明一个变量,它是一个会话变量。要创建会话变量,您需要使用 SET 命令。
语法如下
SET @anyVariableName:=anyValue;
您可以使用 DECLARE 命令声明局部变量。语法如下
DECLARE yourVariableName datatype
您可以在创建变量时设置默认值。语法如下
DECLARE yourVariableName datatype default ‘yourValue’
这是会话变量的演示。为了理解它,让我们创建一个表。
创建表的查询如下
mysql> create table SessionVariableDemo -> ( -> EmployeeId varchar(10), -> EmployeeName varchar(30), -> EmployeeAge int -> ); Query OK, 0 rows affected (0.70 sec)
使用 insert 命令在表中插入一些记录。 查询语句如下
mysql> insert into SessionVariableDemo values('EMP-101','Carol',30); Query OK, 1 row affected (0.20 sec) mysql> insert into SessionVariableDemo values('EMP-102','John',26); Query OK, 1 row affected (0.20 sec) mysql> insert into SessionVariableDemo values('EMP-103','Bob',25); Query OK, 1 row affected (0.19 sec) mysql> insert into SessionVariableDemo values('EMP-104','Sam',32); Query OK, 1 row affected (0.14 sec) mysql> insert into SessionVariableDemo values('EMP-105','Mike',35); Query OK, 1 row affected (0.11 sec) mysql> insert into SessionVariableDemo values('EMP-106','David',33); Query OK, 1 row affected (0.15 sec)
使用 select 语句显示表中的所有记录。查询如下
mysql> select *from SessionVariableDemo;
以下是输出 −
+------------+--------------+-------------+ | EmployeeId | EmployeeName | EmployeeAge | +------------+--------------+-------------+ | EMP-101 | Carol | 30 | | EMP-102 | John | 26 | | EMP-103 | Bob | 25 | | EMP-104 | Sam | 32 | | EMP-105 | Mike | 35 | | EMP-106 | David | 33 | +------------+--------------+-------------+ 6 rows in set (0.00 sec)
现在,使用 SET 命令创建一个会话变量。之后,我们将在查询中使用此变量来获取年龄大于 30 的所有员工记录。
让我们使用 SET 命令创建一个会话变量
mysql> set @AgeGreaterThan30:=30; Query OK, 0 rows affected (0.00 sec)
以下是将使用会话变量来获取年龄大于 30 的员工记录的查询
mysql> select *from SessionVariableDemo where EmployeeAge > @AgeGreaterThan30;
以下是输出 −
+------------+--------------+-------------+ | EmployeeId | EmployeeName | EmployeeAge | +------------+--------------+-------------+ | EMP-104 | Sam | 32 | | EMP-105 | Mike | 35 | | EMP-106 | David | 33 | +------------+--------------+-------------+ 3 rows in set (0.00 sec)