MySQL变量——系统变量、自定义变量

变量

系统变量:
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’;

两种方式为变量赋值,在新的连接中查看隔离级别时并未被修改,所以只针对当前会话有效。

二、自定义变量——用户变量

说明: 变量是用户自定义的,不是由系统提供的
使用步骤:
声明
赋值
使用(如:查看<某个变量的值>、比较….、运算等等)

  1. 用户变量
    作用域:针对于当前会话(连接)有效,同于会话变量的作用域
    用户变量可以应用在任何地方,也就是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;

  1. 局部变量
    作用域(局部有效):仅仅在定义它的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中才可以放声明,不能随便找一个位置放

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值