一、分类
- 系统变量(全局变量、会话变量)
- 自定义变量(用户变量、局部变量)
二、系统变量
1、查看所有系统变量
show globall或session variables;
2、查看满足条件的部分系统变量
show globall或session variables like‘’;
globall是全局变量,session是会话变量,是默认值,可以省略
3、查看指定的某个系统变量
select @@globall或session .系统变量名;
4、为某个系统变量赋值
方式1
set globall或session 系统变量名=值
方式2
set @@globall或session .系统变量名=值;
服务器每次启动将为所有的全局变量附初始值,针对所有会话(连接)有效,但不能跨重启
三、自定义变量(使用步骤:声明、赋值、使用)
1、用户变量
作用域:针对当前会话(连接)有效,等同于会话变量的作用域。应用在任何地方
(1)声明并初始化
方式一
set @用户变量名=值;
方式二
set @用户变量名:=值;
方式三
select @用户变量名:=值;
(2)赋值(更新用户变量的值)
方式一
set @用户变量名=值;
set @用户变量名:=值;
select @用户变量名:=值;
方式二
select 字段 into @变量名 from 表;
(3)使用(查看用户变量的值)
select @用户变量名;
2、局部变量
作用域:仅仅在定义他的begin end 中有效,是begin end 的第一句话
(1)声明
方式一
declare 变量名 类型;
方式二
declare 变量名 类型 default 值;
(2)赋值
方式一
set 局部变量名=值;
set 局部变量名:=值;
select @局部变量名:=值;
方式二
select 字段 into 局部变量名 from 表;
(3)使用(查看用户变量的值)
select 局部变量名;
对比用户变量和局部变量
作用域 定义和使用的位置 语法
用户变量 当前会话 会话中的任何地方 必须加@,不用限定类型,必须初始化
局部变量 begin end 中 只能是begin end 中第一句 不加@,必须限定类型