1. 分类
系统变量:全局变量,会话变量自定义变量:用户变量,局部变量
2. 系统变量
2.1 说明
变量是由系统提供,不是用户定义,属于服务器层面
2.2 语法
查看所有的系统变量
SHOW GLOBAL VARIABLES
;
SHOW SESSION VARIABLES
;
查看满足条件的部分系统变量
SHOW GLOBAL VARIABLES
LIKE '%char%' ;
查看指定的某个系统变量
SELECT
@
@global.character_set_server ;
为某个具体的系统变量赋值
SET GLOBAL autocommit
= 0 ;
SET @
@global.autocommit = 0 ;
总结
全局变量需要加global关键字,不加关键字默认为会话变量。服务器每次启动将会为所有的全局变量赋初始值,修改的值对所有的连接都有效,但是不能跨重启。会话变量仅针对于当前会话有效
3. 自定义变量
3.1 说明
变量是用户自定义,不由系统给出
3.2 用户变量
作用域 针对于当前会话有效,同于会话变量的作用域,应用于任何位置都可以,无需定义类型声明并初始化(更新)
SET @dudu1 = 567 ;
SET @dudu2 :
= 678 ;
SELECT
@dudu3 :
= 789 ;
SELECT
COUNT(*) INTO @num
FROM
`employees
` ;
查看
SELECT
@num ;
3.3 局部变量
作用域 仅仅在定义的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
` ;