如何在MySQL中声明变量?

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

我想写一些类似于:

设置开始=1;
设定光洁度=10;
从开始和结束之间的位置选择*;

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

  1. 用户定义变量(前缀为@):

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

    选择@var\u任意var\u名称
    

    您可以使用SETSELECT语句初始化变量:

    设置@start=1、@finish=10;
    

    选择@start:=1、@finish:=10;
    从放置在@start和@finish之间的位置中选择*;
    

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

    用户定义的变量是特定于会话的。即,用户
    一个客户端定义的变量不能被另一个客户端看到或使用
    客户

    它们可以使用高级MySQL用户变量技术在SELECT查询中使用

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

    局部变量需要在声明之前使用DECLARE
    访问它

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

    分隔符//
    创建程序sp_测试(var1 INT)
    开始
    声明start INT unsigned DEFAULT 1;
    声明finishint unsigned默认值为10;
    选择var1、start、finish;
    从开始和结束之间的位置选择*;
    结束//
    定界符;
    调用sp_测试(5);
    

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

    局部变量的范围是BEGIN。。。结束内的块
    它是被宣布的

  3. 服务器系统变量(前缀为@):

    MySQL服务器维护许多配置为默认值的系统变量。
    它们可以是全局会话两种类型

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

    要查看正在运行的服务器使用的当前值,请使用SHOW VARIABLES语句或[email protected]@var\u name

    显示变量,如“%wait_timeout%”;
    选择@@sort\u buffer\u size;
    

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

    --将值设置为全局变量的语法:
    设置全局排序缓冲区大小=1000000;
    设置@@global.sort\u buffer\u size=1000000;
    --将值设置为会话变量的语法:
    设置排序缓冲区大小=1000000;
    设置会话排序缓冲区大小=1000000;
    设置@@sort\u buffer\u size=1000000;
    设置@@local.sort\u buffer\u size=10000;
    

发表评论