要使用存储过程,就必须先了解变量的语法
变量
尝鲜
理解枯燥的概念前,可以先试试,下面的SQL语句,看会打印出什么?
- 系统变量
SHOW GLOBAL VARIABLES; -- 查看所有的全局变量
SHOW SESSION VARIABLES; -- 查看所有的会话变量
SHOW SESSION VARIABLES like '%char%'; -- 筛选显示会话变量
select @@global.character_set_client; -- 查看某个具体的全局变量的值
select @@session.character_set_client;-- 查看某个具体的会话变量 的值
set global character_set_client = gbk; -- 设置全局的编码为gbk
select @@global.character_set_client; -- 查询编码 显示gbk
set @@global.character_set_client = utf8; -- 设置编码为utf8,作用第6条一样
set @@session.character_set_client = utf8; -- 设置会话变量为utf8
- 自定义变量
set @m = 1;
set @n = 2;
set @sum = @m + @n;
select @sum; -- 打印结果:3
分类
变量分为以下4种,从属关系如下:
系统变量
- 全局变量: 类似于我们操作系统的环境变量,针对所有的用户的,大家都有效
- 会话变量: 只对本次会话有效,修改对其他会话无效的
使用语法
全局变量和会话变量的语法如下:
- 查看所有的变量
SHOW GLOBAL|[SESSION] VARIABLES; -- session可以不写
- 查看满足条件的部分变量
SHOW GLOBAL |[SESSION] VARIABLES like '%条件%'; -- like就是筛选条件
- 查看指定的某个系统的变量的值
select @@global|[session].系统变量名;
- 为某个变量赋值
set global|[session] 系统变量名 = 值;
或者
set @@global|[session].系统变量名 = 值;
自定义变量
- 用户变量: 本次会话有效,使用前必须声明并初始化
- 局部变量: 只能在begin end 中使用,并且必须放在第一句话,注意需要限定类型
用户变量使用语法
- 声明的三种方式
SET @用户变量名=值;
SET @用户变量名:=值;
select @用户变量名:=值;
- 赋值(再次声明也可以算赋值),也可以在查询中赋值(用户变量)
select 字段 into 变量名 from 表;
- 使用(用户变量)
select @变量名;
局部变量使用语法
- 声明也分为2种,必须放在begin end中,可以在存储过程中学习
DECLARE 变量名 类型;
DECLARE 变量名 类型 DEFAULT 值; -- 设默认值
- 赋值
SET 局部变量名=值;
SET 局部变量名:=值;
select @局部变量名:=值; --注意设立有@
或者
select 字段 into 变量名 from 表;
- 使用方式在存储过程中学习吧
select @变量名;