gpt4 book ai didi

mysql - 如何在 MySQL 中声明一个变量?

转载 作者:IT老高 更新时间:2023-10-28 12:47:51 26 4
gpt4 key购买 nike

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

我想写这样的东西:

SET start = 1;
SET finish = 10;

SELECT * FROM places WHERE place BETWEEN start AND finish;

最佳答案

MySQL中的变量主要分为三类:

  1. User-defined variables (以 @ 为前缀):

    您可以访问任何用户定义的变量而无需声明或初始化它。如果你引用一个没有被初始化后,它的值为 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 值。

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

    它们可以在 SELECT 查询中使用 Advanced MySQL user variable techniques .

  2. Local Variables (无前缀):

    局部变量需要在声明之前使用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 block 内它被声明了。

  3. Server System Variables (以 @@ 为前缀):

    MySQL 服务器维护了许多 system variables配置为默认值。它们可以是 GLOBALSESSIONBOTH 类型。

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

    要查看正在运行的服务器使用的当前值,请使用 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;

关于mysql - 如何在 MySQL 中声明一个变量?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/11754781/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com