一、系统变量
系统变量:1、全局变量 2、会话变量
--全局变量的作用范围是针对整个服务器的,服务器每次启动将为所有的全局变量赋予初始值,针对于所有的会话连接有效,但是不能跨重启,如果想要每次重启都要使用更改过后的变量,这时候需要改变配置文件
--会话变量只对当前的会话有效,与全局变量只区别于作用域上面
自定义变量:1、用户变量 2、局部变量
系统变量是由系统提供的,不是用户定义的,属于服务器层面,根据作用域不同,分为全局和绘画
因为不用定义,所以声明语法就没有,只有赋值和使用
- 查看所有的变量
-- 查看全局变量
show global variables;
-- 查看会话变量
show session variables;
-- 不指定默认会话变量
2.查看满足条件的部分系统变量
-- 查看满足条件的部分系统变量
show global [session] variables like '%char%'
-- 查看指定的某个系统变量的值
select @@global[session].系统变量名;
3. 为某个系统变量赋值
-- 两种方式
set gloabal [session] 系统变量名 = 值
set @@global [session].系统变量名 = 值
4.演示
-- 查看指定的全局变量的值
select @@global.autocommit;
select @@tx_isolation;
-- 为某个指定的全局变量赋值
set @@global.autocommit = 0;
--全局变量的作用范围是针对整个服务器的,服务器每次启动将为所有的全局变量赋予初始值,针对于所有的会话连接有效,但是不能跨重启
-- 如果想要每次重启都要使用更改过后的变量,这时候需要改变配置文件
二、自定义变量
使我们自己定义的。
声明
赋值
使用(查看、比较、运算等)
1、用户变量:作用域针对于当前会话(连接)有效,同于会话变量的作用域;应用在任何地方,也就是begin end 里面外面都可以
-- 1、声明并初始化
set @用户变量名 = 值;
set @用户变量名 := 值; 推荐
select @用户变量名:=值;
-- 2、更新用户变量值
-- 方式一:通过set或select
set @用户变量名 = 值;
set @用户变量名 := 值; 推荐
select @用户变量名:=值;
# 案例
set @name = 'join'
set @name = 100
# 虽然类型不同但可以更改,因为是弱类型
-- 方式二:通过select into
select 字段 into 变量名 from 表; 前提是查询的这个字段是一个值,如果是一组值将不能赋值给变量
-- 比如查询个数,将员工表的员工个数赋值给count这个变量
set @count = 1
select count(*) into @count from employee;
-- 查询
select @count;
2、局部变量:仅仅作用于他的begin end中有效,而且是begin end中的第一句话
第一步:可以只声明,不用初始化,但是必须制定类型
--声明
declare 变量名 类型;
declare 变量名 类型 default 值;
第二步:赋值
-- 方式一:通过set或者select;这时候set需要加上@
set 局部变量名=值;
set 局部变量名:= 值;
select @局部变量名:=值;
--方式二:通过select into
select 字段 into 变量名 from 表
第三步:查询
select 局部变量名