欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页

MySQL中的变量

程序员文章站 2022-04-20 21:11:37
...

变量分类

  1. 系统变量
    • 全局变量
    • 会话变量
  2. 自定义变量
    • 用户变量
    • 局部变量

1. 系统变量

变量由系统提供,不是由用户自定义的。

相关语法
  • 查看所有的系统变量(全局|会话,如果缺省默认为session)
SHOW GLOBAL|SESSION VARIABLES;
  • 查看满足条件的部分系统变量
SHOW GLOBAL|SESSION VARIABLES LIKE '%char%';
  • 查看指定的某个系统变量的值
SELECT @@global|@@session.系统变量名;
  • 给某个系统变量赋值
SET @@global|session.系统变量名 =;  -- 方式1 
SET GLOBAL|SESSION 系统变量名 =;    -- 方式2
作用域
  • 全局变量
    属于服务器层面,当服务启动时,它将所有全局变量初始化为默认值,其作用域为服务器的整个生命周期,这意味着它针对所有的会话(连接)有效,但不能跨重启,即服务器重启后又会初始化。
  • 会话变量
    仅仅针对于当前会话(连接)有效。

2. 自定义变量

变量由用户自定义的,不是由系统提供的。

  • 使用步骤:
    • 声明
    • 赋值
    • 使用(查看、比较、运算等)
用户变量
  1. 作用域:针对于当前会话(连接)有效,同于会话变量的作用域。可以定义在任何地方,begin end里面外面皆可
  2. 使用
    • 声明并初始化(必须在声明同时初始化)
    SET    @用户变量名  =;  -- 方式1
    SET    @用户变量名 :=;  -- 方式2
    SELECT @用户变量名 :=;  -- 方式3
    
    • 赋值
    -- 方式1:跟初始化时赋值方式相同
    SET    @用户变量名  =;
    SET    @用户变量名 :=;
    SELECT @用户变量名 :=;
    
    -- 方式2:通过select into
    SELECT 字段 INTO @用户变量名 FROM;
    
    • 使用(查看变量的值)
    SELECT @用户变量名;
    
局部变量
  1. 作用域:仅仅在局部有效,即定义它的begin end里面有效。只能定义在begin end里面的开头
  2. 使用
    • 声明
    DECLARE 变量名 类型;                 -- 方式1,只声明
    DECLARE 变量名 类型 DEFAULT 初始值;  -- 方式2,声明并初始化
    
    • 赋值(跟用户变量相同)
    -- 方式1
    SET    局部变量名   =;
    SET    局部变量名  :=;
    SELECT @局部变量名 :=;  -- 注意:这个要加@
    
    -- 方式2:通过select into
    SELECT 字段 INTO 局部变量名 FROM;
    
    • 使用(查看变量的值)
    SELECT 局部变量名;
    
对比用户变量和局部变量
变量名 作用域 定义位置 语法
用户变量 当前会话 会话中的任何地方 必须加@,不用限定类型
局部变量 begin end中 begin end的开头 一般不用加@,需要限定类型
相关标签: MySQL mysql