2020年6月2日
17:23
系统变量:
全局变量
会话变量
自定义变量:
用户变量
局部变量
1、系统变量:
由系统提供,不需要用户定义属于服务器层面
语法:
-
查看所有系统变量
- Show global |【session】 variables;
-
查看满足条件的部分系统变量
- Show global |【session】varables like '%char%';
-
查看指定的某个系统变量的值
- Select @@global |【session】.系统变量名;
-
为某个系统变量赋值
- 方式1:set global |【session】系统变量名 = 值
- 方式2: set @@global 【session】.系统变量名 = 值;
注意:如果是全局级别,需要加global ,如果是会话级别,需要加session
1)全局变量
作用域:,每次服务器启动将作为全局变赋初始值,针对所有的会话有效,但是不能跨重启
-
查看所有系统变量
- Show global |【session】 variables;
-
查看满足条件的部分系统变量
- Show global |【session】varables like '%char%';
-
查看指定的某个系统变量的值
- Select @@global |【session】.系统变量名;
-
为某个系统变量赋值
- 方式1:set global |【session】系统变量名 = 值
- 方式2: set @@global 【session】.系统变量名 = 值;
2)会话变量
作用域:只针对当前会话
-
查看所有系统变量
- Show session variables;
-
查看部分的会话变量
- Show session variables like '%char%';
-
查询指定的变量
- Show @@ session .transcation_isolation;
-
为某个会话变量赋值
方式一:set 或select
Set @用户变量名=值;或
Set @用户变量名 :=; 或
Select @用户变量名 :=值;
方式二:通过select into
Select 字段 into 变量名
from 表;
对比用户变量和局部变量:
作用域 定义和使用的位置 语法
用户变量 当前会话 定义会话的任何地方 必须加@符号,不应限定类型
局部变量 begin end中 只能在begin end 中,并且为第一句话 一般不用加@符号,需要限定类型
2、局部变量
变量的作用域仅限于定义中的begin end中有效,
-
声明
Declare 变量 类型 约束条件
案例
Delimiter $ #改变结束符(只限本次会话)
Create procedure myv1() #创建存储过程
Begin #开始标志
Declare a int default 0 # 创建本次会话的变量 a int 类型默认值0
End$ #结束标志