变量
变量分为系统变量和自定义变量。
系统变量
概念:系统变量由系统提供,不是用户定义,属于服务器层面。系统变量分为全局变量和会话变量
1、全局变量
作用域:服务器每次启动将为所有的全局变量赋初始值,针对于所有的会话有效,但不能跨重启。
①查看所有全局变量
SHOW GLOBAL VARIABLES;
②查看部分全局变量
SHOW GLOBAL VARIABLES LIKE "%char%";
③查看指定的全局变量
SELECT @@global.tx_isolation;
SELECT @@global.autocommit;
④为某个指定的全局变量赋初值
SET @@global.tx_isolation=0;
SET @@global.tx_isolation=1;
2、局部变量
作用域:仅仅针对当前的会话有效
①查看所有的会话变量
SHOW SESSION VARIABLES;
②查看部分会话变量
SHOW SESSION VARIABLES LIKE "char";
③查看指定的会话变量法
SELECT @@session.tx_isolation;
SELECT @@tx_isolation;
④为某个会话变量赋值
SET @@tx_isolation="READ-COMMITTED";
SET SESSION tx_isolation="READ-COMMITTED";
自定义变量
自定义变量是用户定义的,不是由系统定义的。自定义变量分为用户变量和局部变量
1、用户变量
作用域:针对于当前会话有效,等同于会话变量的作用域
①声明并初始化
SET @用户变量名=值;
SET @用户变量名:=值;
SELECT @用户变量名:=值;
②赋值
# 方式一:通过SET或SELECT
SET @用户变量名=值;
SET @用户变量名:=值;
SELECT @用户变量名:=值;
# 方式二:通过INSERT INTO
SELECT 字段值 INTO 变量名 FROM 表;
③使用(查看用户变量的值)
SELECT @用户变量名;
例子:
SET @count=0;
SELECT COUNT(*) INTO count FROM employees;
SELECT @count;
2、局部变量
作用域:仅仅是定义在它的BEGIN END中有效,出了这个范围就没效了。
①声明
DECLARE 变量名 类型;
DECLARE 变量名 类型 DEFAULT 值;
②赋值
#方式一:通过 SET 或 SELECT
SET 局部变量名=值;
SET 局部变量名:=值;
SELECT 局部变量名:=值;
# 方式二:通过SELECT INTO
SELECT 字段 INTO 局部变量名 FROM 表;
③使用
SELECT 局部变量名;
3、对比用户变量和局部变量
作用域 | 定义和使用的位置 | 语法 | |
---|---|---|---|
用户变量 | 当前会话 | 会话中的任何地方 | 必须加@符号,不用限定类型 |
局部变量 | BEGIN END中 | 只能在BEGIN END中 | 一般不用加@符号,需要限定类型 |