分类:
(1)系统变量:全局变量、会话变量
(2)自定义变量:用户变量、局部变量
一、系统变量
说明:变量由系统提供,不是用户定义,属于服务器层面
(1)全局变量
作用域:服务器每次启动为所有的全局变量赋初始值,针对于所有的会话(连接),但不能跨重启
(2)会话变量
作用域:仅仅针对于当前会话(连接)有效
使用语法:
1、查看所有的系统变量
SHOW GLOBAL(全局变量) / SESSION(会话变量) VARIABLES;
2、查看满足条件的部分系统变量
SHOW VARIABLES LIKE '%char%';
3、查看指定的某个系统变量
SELECT @@ GLOBAL / SESSION 系统变量名;
4、为某个系统变量赋值
SET GLOBAL / SESSION 系统变量名 = 值;
或:
SET @@ global / session . 系统变量名 = 值;
<注:全局级别需要加gloabl,会话级别需要加session,如果不加默认为session>
eg1.查看所有全局变量
SHOW GLOBAL VARIABLES;
eg2.查看包含character的全局变量
SHOW VARIABLES LIKE '%char%';
eg3.查看指定变量的值
SELECT @@global.autocommit;
SELECT @@tx_isolation;
eg4.为某个全局变量赋值
set @@global.autocommit=0;
二、自定义变量
说明:变量使用户自定义的,不是由系统定义
使用步骤:
声明、赋值、使用(查看、比较、运算等)
1、用户变量
作用域:针对当前会话(连接)游戏哎,同于系统变量中的会话变量作用域
应用在任何地方,也就是begin end里面或begin end外面
(1)声明并初始化
赋值操作符:= 或:=
#方法一 SET @用户变量名=值;
#方法二 SET @用户变量名:=值;
#方法三 SELECT @用户变量名:=值;
(2)赋值或更新用户变量值
#方法一 :通过set或select
SET @用户变量名=值;
SET @用户变量名:=值;
SELECT @用户变量名:=值;
#方法二 :通过select into
SELECT 字段 INTO 变量名
FROM 表;
eg1:将员工个数赋值到count变量中
SELECT COUNT(*) INTO @count
FROM employees;
(3)使用(查看用户变量的值)
SELECT @用户变量名;
eg1:SELECT @count;
2、局部变量
作用域:仅仅在定义它的begin end中有效
应用在begin end中的第一句话
(1)声明
DECLARE 变量名 类型;
或:
DECLARE 变量名 类型 DEFAULT 值;
(2)赋值
#方法一 :通过set或select
SET 局部变量名=值;
SET 局部变量名:=值;
SELECT @局部变量名:=值;
#方法二 :通过select into
SELECT 字段 INTO 局部变量名
FROM 表;
(3)使用
SELECT 局部变量名;
#用户变量与局部变量对比:
eg1.声明两个变量并赋初值,求和,并打印
#用户变量
SET @m=1;
SET @n=2;
SET @sum=@m+@n;
SELECT @sum;