SQL——变量
环境
DBMS:MySQL 8.0.17
工具:Navicat Premium 11.2.16
概述
变量分为系统变量和自定义变量两种。
系统变量
系统变量是由数据库系统内置的变量,分为会话变量和全局变量两种。
会话变量
会话变量作用于当前会话。
查看会话变量:
SHOW SESSION VARIABLES[ LIKE <匹配串>];
like用于模糊匹配。
查看MySQL所有会话变量:
一共有572条记录,表示有572个会话变量。
查询指定会话变量的取值:
SELECT @@session.<变量名>;
设置会话变量:
SET SESSION <变量名>=<值>;
关闭自动提交:
查看是否关闭:
全局变量
全局变量作用于服务器关闭前的所有会话。
查看全局变量:
SHOW GLOBAL VARIABLES[ LIKE <匹配串>];
like用于模糊匹配。
查看MySQL所有全局变量:
一共有552条记录,表示有552个全局变量。
查询指定全局变量的取值:
SELECT @@global.<变量名>;
设置全局变量:
SET GLOBAL <变量名>=<值>;
关闭自动提交:
查看是否关闭:
自定义变量
自定义变量是由用户自己定义的变量,分为用户变量和局部变量两种。
自定义变量必须先声明才能够使用。
用户变量
用户变量可以在任意位置使用。
声明、赋值:
SET @<变量名>:=<值>;
赋值符号使用的是“:=”。
可以将查询结果赋给变量:
SELECT <字段> INTO @<变量名> FROM <表>;
查询结果必须是一个值。
查看:
SELECT @<变量名>;
声明一个用户变量count表示学生人数:
查询学生总人数,并赋值给count:
查看count:
局部变量
局部变量只能在SQL块中使用。SQL块是指包含在begin、end之间的一个或多个SQL语句。
声明:
DECLARE <变量名> <数据类型>[ DEFAULT <值>];
使用declare声明局部变量,可以使用default在声明变量时赋值。
赋值:
SET <变量名>:=<值>;
赋值符号使用的是“:=”。
可以将查询结果赋值给变量:
SELECT <字段> INTO <变量名> FROM <表>;
查询结果必须是一个值,而且该值必须与局部变量的数据类型对应。
查看:
SELECT <变量名>;
定义一个存储结构getCount获取学生人数:
调用存储过程getCount: