如何在MySQL中声明变量?

光盘

如何在mysql中声明变量,以便第二个查询可以使用它?

我想写一些像:

SET start = 1;
SET finish = 10;

SELECT * FROM places WHERE place BETWEEN start AND finish;
网格

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;
    

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

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

    可以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 GLOBAL动态更改SET 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;
    

本文收集自互联网,转载请注明来源。

如有侵权,请联系 [email protected] 删除。

编辑于
0

我来说两句

0 条评论
登录 后参与评论

相关文章