MySQL:变量

1. 分类

  • 系统变量:全局变量,会话变量
  • 自定义变量:用户变量,局部变量

2. 系统变量

说明

变量是由系统提供,不是用户定义,属于服务器层面

语法

  • 查看所有的系统变量
-- 全局变量
SHOW GLOBAL VARIABLES ;
-- 会话变量(session可以省略)
SHOW SESSION VARIABLES ;
  • 查看满足条件的部分系统变量
SHOW GLOBAL VARIABLES LIKE '%char%' ;
  • 查看指定的某个系统变量
SELECT 
  @@global.character_set_server ;
  • 为某个具体的系统变量赋值
SET GLOBAL autocommit = 0 ;
SET @@global.autocommit = 0 ;

总结

全局变量需要加global关键字,不加关键字默认为会话变量。
服务器每次启动将会为所有的全局变量赋初始值,修改的值对所有的连接都有效,但是不能跨重启。
会话变量仅针对于当前会话有效


3. 自定义变量

说明

变量是用户自定义,不由系统给出

用户变量

  • 作用域
    针对于当前会话有效,同于会话变量的作用域,应用于任何位置都可以,无需定义类型
  • 声明并初始化(更新)
SET @dudu1 = 567 ;
SET @dudu2 := 678 ;
SELECT 
  @dudu3 := 789 ;
SELECT 
  COUNT(*) INTO @num
FROM
  `employees` ;
  • 查看
SELECT 
  @num ;

局部变量

  • 作用域
    仅仅在定义的begin end中有效,应用在begin end中并且必须是第一条语句,需要声明类型
  • 声明
DECLARE dudu INT ;
DECLARE dudu INT DEFAULT 123 ;
  • 赋值
SET dudu1 = 567 ;
SET dudu2 := 678 ;
SELECT 
  @dudu3 := 789 ;
SELECT 
  COUNT(*) INTO num
FROM
  `employees` ;
  • 使用
SELECT 
  num ;

案例:声明两个变量并赋值,求和

  • 用户变量
SET @dudu := 1 ;
SET @zhou := 2 ;
SET @sum := @dudu + @zhou ;
SELECT 
  @sum ;
  • 局部变量
DECLARE dudu INT 1 ;
DECLARE zhou INT 2 ;
DECLARE `sum` ;
SET `sum` = dudu + zhou ;
SELECT 
  `sum` ;

©著作权归作者所有,转载或内容合作请联系作者
【社区内容提示】社区部分内容疑似由AI辅助生成,浏览时请结合常识与多方信息审慎甄别。
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

友情链接更多精彩内容