变量
系统变量:
1. 全局变量
2. 会话变量
自定义变量:
1. 用户变量
2. 局部变量
MySQL系统变量的介绍和语法
一、系统变量
说明:
变量由系统提供,不是用户定义,属于服务器层面
注意:
如果是全局级别,则需要加global;如果是会话级别,则需要加session,如果不写,则默认session
使用的语法:
1.查看所有的系统变量
Show global variables; 全局变量
Show 【session】variables;会话变量
2.查看满足条件的部分系统变量
Show global /【session】variables like ‘ %char% ’;
3.查看指定的某个系统变量的值
Select @@系统变量名→默认会话变量
Select @@global/【session】.系统变量名
4.为某个系统变量赋值
方式一:
Set global/【session】系统变量名 = 值;
方式二:
Set @@global/【session】.系统变量名 = 值;
1》全局变量的演示
作用域(作用范围):
(针对整个服务器层面)服务器每次启动将为所有的全局变量赋初始值针对于所有的会话(连接)是有效的,但不能跨重启(服务器重启后,所更改的值不会变,仍是原来的值)
①查看所有的全局交量
②查看部分的全局交量
③查看指定的全局交量的值
查看自动提交:
默认时1,代表的是自动提交,即非0的值代表true,表示自动提交功能是打开的
查看隔离级别:
④为某个指定的全局变量赋值
取消自动提交
在这基础上,如果新打开一个连接,再次查询自动提交,结果也会是0,即取消了自动提交,但是不能跨重启。
2》会话变量的演示
作用域:仅仅针对于当前的会话(连接)有效
①查看所有会话变量(两种方式)
②查看满足条件的部分会话变量
SHOW 【SESSION】 VARIABLES LIKE ‘%char%’;
③查看指定的会话变量的值
SELECT @@ transaction_isolation;
SELECT @@session. transaction_isolation;
④为某个会话变量赋值(只针对当前会话有效)
方式一:
SET @@【session. 】transaction_isolation=‘read-uncommitted’;
方式二:
SET SESSION transaction_isolation =‘read-committed’;
两种方式为变量赋值,在新的连接中查看隔离级别时并未被修改,所以只针对当前会话有效。
二、自定义变量——用户变量
说明: 变量是用户自定义的,不是由系统提供的
使用步骤:
声明
赋值
使用(如:查看<某个变量的值>、比较….、运算等等)
- 用户变量
作用域:针对于当前会话(连接)有效,同于会话变量的作用域
用户变量可以应用在任何地方,也就是begin end里面或begin end外面
步骤:
①声明并初始化(三种方式)
Set @用户变量名=值;
Set @用户变量名:=值;
select @用户变量名:=值;
注:
赋值的操作符: =或 :=(冒号 等号);
变量前必须加@符号;
set 两种方式都支持,select只能用“:=”(便于区分否则无法正确获取) ;
②赋值(更新用户变量的值)
方式一 :通过set或select(一般用于赋简单的值)
Set @用户变量名=值;
Set @用户变量名:=值;
select @用户变量名:=值;
这种语句既可以当作名,也可以当赋值
案例:声明并初始化
即使没有类型,也可以改值
当声明为字符型并赋值时,就会默认为name就为字符型
再执行,就会默认为100这个值类型,即int
方式二 :通过select into(一般用于赋表中的字段值)
Select 字段名/表达式 into @变量名
From 表;
注:要求最后查询出来的字段最后必须只有一个值,因为一个值才能赋值给一个变量
案例:赋值
将员工表的总个数赋值给count
③使用(查看用户变量的值)
Select @用户变量名;
案例:查看
查看count所赋的值
查看
eg. Select @count;
- 局部变量
作用域(局部有效):仅仅在定义它的begin end种有效
局部变量应用在begin end中!且必须放在begin end中的第一句话
局部变量严格遵循三步骤
①声明(与用户变量主要的不同之处:声明的类型)
Declare 变量名 类型;
Declare 变量名 类型 default 值;(注:值的类型要与前面声明的类型要一致或者兼容)
②赋值
方式一: 通过set或select (一般用于赋简单的值)
Set 局部变量名=值;
Set 局部变量名:=值;
select @用户变量名:=值;
方式二: 通过select into(一般用于赋表 中的字段值)
Select 字段 into @变量名
From 表;
③使用:
select 局部变量名;
二者的区别:
作用域 定义和使用的位置 语法
用户变量 当前会话 会话中的任何地方 必须加@,不用限定类型
局部变量 begin end中 begin end中且为第一句话 一般不用加@,需要限定类型
除了这种
案例:声明两个变量并赋初始值,求和,并打印
1.用户变量
2.局部变量
Declare m int default 1;
Declare n int default 2;
Declare sum int;
Set sum = m+n;
Select sum;
以上局部变量报错
注:因为begin end中才可以放声明,不能随便找一个位置放