MySql的回顾十二:变量

  这是个光荣而又艰巨的任务!

  光荣在于平淡,艰巨在于漫长!

  又是一个周末,又可以带领各位小伙伴们继续学习探索MySql的知识了,今天一起来学习变量,有人可能就会问变量!!!,MySql还有变量?emmmm其实学之前我也是这么认为的,事实却是....真的有!所有还是要学,来来来慢慢往下看,最好看的时候拉起你的客户端工具,也试试,的确是有的,不骗你的。

系统变量:
全局变量:整个服务器
会话变量:客户端的一次连接

自定义变量:
用户变量
局部变量

#一.系统变量
说明:变量由系统提供,不是用户定义,属于服务器层面。
注意:
如果是全局级别,则需要加GLOBAL,如果是会话级别,需要加SESSION,什么都不写默认是SESSION
使用的语法:#系统的变量不用定义直接使用。
SHOW GLOBAL|【SESSION】 VARIABLES;
1.查看所有的系统变量
SHOW GLOBAL VARIABLES;
查看会话的
SHOW SESSION VARIABLES;

2.查看满足条件的部分系统变量
SHOW GLOBAL|【SESSION】 VARIABLES LIKE '%char%';

3.查看指定的某个系统变量的值
SELECT @@GLOBAL.系统变量名;
SELECT @@SESSION.系统变量名;

4.为某个系统变量赋值
方式一:
SET GLOBAL 系统变量名 = 值;
SET SESSION 系统变量名 = 值;
方式二:
SET @@GLOBAL.系统变量=值;
SET @@SESSION.系统变量=值;

#1.全局变量
#①查看所有的全局变量
SHOW GLOBAL VARIABLES;

#②查看部分的全局变量
SHOW GLOBAL VARIABLES LIKE '%char%';

#③查看指定的全局变量的值
SELECT @@global.autocommit;

#查看隔离级别
SELECT @@tx_isolation;

#查看某个指定的全局变量赋值(注意中间的那个点)
#先修改
#再次查看
SET @@GLOBAL.autocommit=0;
SELECT @@GLOBAL.autocommit;

重新开启一个会话,再次查询

#会话变量
作用域:仅仅针对于当前会话(连接)有效

#查看所有的会话变量
SHOW SESSION VARIABLES;
SHOW VARIABLES;

#查看部分的会话变量
SHOW VARIABLES LIKE '%char%';
SHOW SESSION VARIABLES LIKE '%char%'; 

#③查看指定的某个会话变量
SELECT @@tx_isolation;
SELECT @@SESSION.tx_isolation;

#为某个会话变量赋值
方式一:
SET @@SESSION.tx_isolation='read-uncommitted';
#查看当前的隔离级额别的会话变量
SELECT @@SESSION.tx_isolation;

方式二:
SET SESSION tx_isolation='read-committed';
#查看当前的隔离级额别的会话变量
SELECT @@SESSION.tx_isolation;

#二.自定义变量
说明:变量是用户自定义的。
使用步骤:
声明
赋值
使用(查看,比较,运算等)

#1.用户变量
作用域:针对当前会话(连接)有效,同于会话变量的作用域。
应用在任何地方,也就是begin end里面或者begin end外面。

#声明并初始化
方式一:
SET @用户变量名=值;
方式二:
SET @用户变量名:=值;
方式三:
SELECT @用户名:=值;

#②赋值(更新用户变量的值)
方式一:通过SET或SELECT
SET @用户变量名=值;
SET @用户变量名:=值;
SELECT @用户名:=值;
#例:赋值.弱类型语言,第一次赋值字符串varchar,第二次复制INT
SET @NAME='john';
SET @NAME=100;
方式二:通过SELECT INTO
SELECT 字段 INTO @变量名
FROM 表;

#例:变量赋值
SET @COUNT=1;
SELECT COUNT(*) INTO @COUNT
FROM employees;
#使用(查看某个用户变量的值)
SELECT @用户变量名;
#例:查看变量
SELECT @COUNT;

#2.局部变量
作用域:仅仅在定义它的begin end中有效。
应用在begin end中的第一句话!!!

#①声明
DECLARE 变量名 类型;
DECLARE 变量名 类型 DEFAULT 值;

#②赋值
方式一:通过SET或者SELECT
SET 局部变量名=值;
SET 局部变量名:=值;
SELECT @局部变量名:=值;

方式二:通过SELECT INTO
SELECT 字段 INTO 局部变量名
FROM 表;

#③使用
SELECT 局部变量名;

对比用户变量和局部变量

#案例:声明两个变量并复制,求和,并打印
#用户变量
SET @m=1;
SET @n=2;
SET @SUM=@m+@n;
SELECT @SUM;

变量到此结束,看到这里的读者们现在应该相信了MySql里面的确是有变量的,那屏幕前的你一定就会好奇,搞了这些东西,那在哪用呢?

要不你猜猜?

其是在存储过程里面用的,MySql基础回顾系列的最终回《存储过程与流程控制》将在下篇文章带领读者彻底介绍完成。

posted @ 2020-08-29 13:24  木卯生十木  阅读(219)  评论(0编辑  收藏  举报