为了账号安全,请及时绑定邮箱和手机立即绑定

如何在MySQL中声明变量?

如何在MySQL中声明变量?

MMTTMM 2019-07-11 15:35:22
如何在MySQL中声明变量?如何在MySQL中声明一个变量,以便我的第二个查询可以使用它?我想写这样的东西:SET start = 1;SET finish = 10;SELECT * FROM places WHERE place BETWEEN start AND finish;
查看完整描述

3 回答

?
守候你守候我

TA贡献1802条经验 获得超10个赞

MySQL中主要有三种类型的变量:

  1. 用户定义变量(以@):

    您可以访问任何用户定义的变量,而无需声明或初始化它。如果引用未初始化的变量,则该变量的值为NULL和一种字符串。

    SELECT @var_any_var_name

    可以使用SETSELECT声明:

    SET @start = 1, @finish = 10;

    SELECT @start := 1, @finish := 10;SELECT * FROM places WHERE place BETWEEN @start AND @finish;

    用户变量可以从有限的数据类型集中分配一个值:整数、十进制、浮点、二进制或非二进制字符串或空值。

    用户定义的变量是会话特定的。也就是说,一个客户端定义的用户变量不能被其他客户端看到或使用。

    它们可以用于SELECT查询使用先进的MySQL用户变量技术.

  2. 局部变量(无前缀):

    需要使用DECLARE在访问它之前。

    它们可以用作局部变量和存储过程中的输入参数:

    DELIMITER //CREATE PROCEDURE sp_test(var1 INT) BEGIN   
        DECLARE start  INT unsigned DEFAULT 1;  
        DECLARE finish INT unsigned DEFAULT 10;
    
        SELECT  var1, start, finish;
    
        SELECT * FROM places WHERE place BETWEEN start AND finish; END; //DELIMITER ;CALL sp_test(5);

    如果DEFAULT子句,则初始值为NULL.

    局部变量的作用域是BEGIN ... END在其中声明它的块。

  3. 服务器系统变量(以@@):

    MySQL服务器维护了许多系统变量配置为默认值。它们可以是类型的GLOBALSESSIONBOTH.

    全局变量影响服务器的整体操作,而会话变量则影响对单个客户端连接的操作。

    若要查看正在运行的服务器使用的当前值,请使用SHOW VARIABLES陈述或SELECT @@var_name.

    SHOW VARIABLES LIKE '%wait_timeout%';SELECT @@sort_buffer_size;

    它们可以在服务器启动时使用命令行上的选项或选项文件中的选项进行设置。在服务器运行时,可以动态更改其中的大多数SET GLOBALSET SESSION:

    -- Syntax to Set value to a Global variable:SET GLOBAL sort_buffer_size=1000000;SET @@global.sort_buffer_size=1000000;
    -- Syntax to
     Set value to a Session variable:SET sort_buffer_size=1000000;SET SESSION sort_buffer_size=1000000;SET @@sort_buffer_size
     =1000000;SET @@local.sort_buffer_size=10000;


查看完整回答
反对 回复 2019-07-11
?
慕码人8056858

TA贡献1803条经验 获得超6个赞

SET @var_name = value

SET @var := value

两个算子=:=被接受


选择

SELECT col1, @var_name := col2 from tb_name WHERE "conditon";

如果多个记录集仅找到col2中的最后一个值,则保留(覆盖);

SELECT col1, col2 INTO @var_name, col3 FROM .....

在这种情况下,select的结果不包含col2值。


查看完整回答
反对 回复 2019-07-11
?
呼唤远方

TA贡献1856条经验 获得超11个赞

声明var_name[,var_name].输入[默认值]此语句声明存储程序中的局部变量。

前。声明id int无符号默认值1;

若要为变量提供默认值,请包含默认子句。该值可以指定为表达式;它不一定是常量。如果缺少默认子句,则初始值为NULL。

局部变量在数据类型和溢出检查方面被视为存储的例程参数。

变量声明必须出现在游标或处理程序声明之前。

局部变量名称不区分大小写。允许的字符和引用规则与其他标识符相同。

局部变量的作用域是开始.在其中声明它的结束块。该变量可以在嵌套在声明块内的块中引用,但声明同名变量的块除外。


查看完整回答
反对 回复 2019-07-11
  • 3 回答
  • 0 关注
  • 2693 浏览
慕课专栏
更多

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信