MySQL 变量

2024年03月25日 MySQL 变量 极客笔记

MySQL 变量

变量用于在程序执行期间存储数据或信息。它是一种使用适当名称标记数据的方式,有助于读者更清楚地理解程序。变量的主要目的是将数据存储在内存中,并可以在整个程序中使用。

MySQL可以以 三种不同的方式 使用变量,如下所示:

  1. 用户定义的变量
  2. 局部变量
  3. 系统变量

用户定义的变量

有时,我们希望从一个语句传递值到另一个语句。用户定义的变量使我们能够在一个语句中存储一个值,并在另一个语句中引用它。 MySQL提供了 SETSELECT 语句来声明和初始化变量。用户定义的变量名以 @符号 开头。

用户定义的变量是不区分大小写的,例如@name和@NAME是相同的。一个人声明的用户定义变量对另一个人是不可见的。我们可以将用户定义的变量分配给整数、浮点数、小数、字符串或NULL等有限的数据类型。用户定义的变量的最大长度为 64个字符

语法

以下语法用于声明用户定义的变量。

1. 使用 SET 语句

SET @var_name = value;

注意:我们可以在SET语句中使用“=”或“:=”赋值运算符。

2. 通过使用 SELECT 语句

SELECT @var_name := value;

示例1

在这里,我们将使用SET语句给变量赋值。

mysql> SET @name='peter';

然后,我们可以使用SELECT语句显示上述值。

mysql> SELECT @name;

输出

示例2

让我们在MySQL数据库中创建名为students的表,如下所示:

运行以下语句以获取“students”表中学生的最大年龄,并将该年龄赋值给用户定义的变量@maxage

mysql> SELECT @maxage:= MAX(age) FROM students;

它将产生以下输出。

现在,运行使用@maxage变量返回学生的最大年龄的SELECT语句。

mysql> SELECT firstname, lastname, age FROM students WHERE age = @maxage;

成功执行上述语句后,我们将获得以下结果。

示例3

如果我们访问undeclared 的变量,它将输出NULL

Mysql> SELECT @var1;

输出

局部变量

它是一种不以@符号为前缀的变量类型。局部变量是强类型变量。局部变量的作用域在声明它的存储过程块中。MySQL使用DECLARE关键字指定局部变量。DECLARE语句还可以结合DEFAULT子句为变量提供默认值。如果不提供DEFAULT子句,变量将被赋予初始值NULL。它主要用于存储过程程序。

语法

我们可以使用以下语法来使用DECLARE语句:

DECLARE variable_name datatype(size) [DEFAULT default_value];

让我们看下面的例子来使用局部变量。

示例

mysql> DECLARE total_price Oct(8,2) DEFAULT 0.0;

我们还可以使用单个DECLARE语句定义两个或更多具有相同数据类型的变量。

mysql> DECLARE a,b,c INT DEFAULT 0;

以下示例介绍了如何在存储过程中使用DECLARE语句。

DELIMITER //
Create Procedure Test()
    BEGIN
        DECLARE A INT DEFAULT 100;
        DECLARE B INT;
        DECLARE C INT;
        DECLARE D INT;
        SET B = 90;
        SET C = 45;
        SET D = A + B - C;
        SELECT A, B, C, D;
    END //
DELIMITER ;

在上述函数成功执行之后,按照以下方式调用存储过程函数:

mysql> CALL Test();

输出如下:

系统变量

系统变量是所有程序单元的特殊类,其中包含预定义的变量。MySQL包含各种配置其操作的系统变量,每个系统变量都有一个默认值。我们可以通过在运行时使用SET语句动态地更改某些系统变量,这使得我们能够在不停止和重新启动服务器的情况下修改其操作。系统变量也可以用于表达式中。

MySQL服务器提供了许多系统变量,如GLOBAL、SESSION或MIX类型。全局变量在服务器的整个生命周期中可见,而会话变量仅在特定会话中保持活动状态。

我们可以通过以下方式查看系统变量的名称和值:

1. 要查看正在运行的服务器使用的当前值,请执行以下命令。

mysql> SHOW VARIABLES;

OR,

Mysql> SELECT @@var_name;

2. 当我们想要查看基于其编译默认值的值时,请使用以下命令。

mysql> mysqld --verbose --help

示例1

mysql> SHOW VARIABLES LIKE '%wait_timeout%';

输出

示例2

mysql> SELECT @@key_buffer_size;

输出

本文链接:http://so.lmcjl.com/news/357/

展开阅读全文