#变量
/*
系统变量:
全局变量
会话变量
自定义变量:
用户变量
局部变量
*/
#一、系统变量
SHOW GLOBAL VARIABLES;#全局
SHOW SESSION VARIABLES;#会话
#查询某个系统变量的值
SELECT @@global.auto_increment_increment;
#为系统变量赋值
/*
方式一:
set global|【session】 变量名=
方式二:
set @@global|【session】.变量名=
*/
/*
1.全局变量:
作用域:服务器每次启动将为所有的全局变量赋初始值,针对所有的会话框都有效,但不能跨重启。
2.会话变量:
作用域:只针对于当前的会话框有效
*/
#二、自定义变量
/*
说明:变量是用户自定义的,不是由系统的
使用步骤:
声明
赋值
使用(查看、运算、比较等)
1.用户变量
作用域:只针对当前会话(连接)有效,同于会话变量的作用域。
用户变量可以放在任意地方,即begin end里面或外边都可以。
#声明及初始化
set @用户变量名 =值;
set @用户变量名:=值;
select @用户变量名:=值;
#赋值(更新用户变量名)
方式一:同声明及初始化
方式二:通过select into
select 字段 into @用户变量 from 表;
#使用(查看)
select @用户变量名
*/
#1.用户变量
#声明及初始化
SET @count = 0;
#赋值
USE myemployees;
SELECT COUNT(*) INTO @count FROM employees;
#查看
SELECT @count;
#2,局部变量
/*
作用域:仅仅在定义它的begin end里有效。
应用在begin end 中的第一句话。
#声明
declare 变量名 类型;
declare 变量名 类型 default 值;
#赋值
方式一:
set 变量名 = 值;
set 变量名:= 值;
select @局部变量名 := 值;
方式二:
select 字段 into 局部变量名 from 表;
#使用(查询)
select 局部变量名;
*/
/*
对比用户变量和局部变量:
作用域 声明和使用的地方 语法
用户变量 当前会话 当前会话中的任意地方 变量名前要加@
局部变量 定义的begin end中 begin end中的第一句话 变量名前一般不加@,除非是赋值的第一种方式的select方法
*/
#举例:
#用户变量
SET @m = 1;
SET @n := 5;
SET @sum=@m+@n;
SELECT @sum;
#局部变量
DECLARE m INT DEFAULT 1;
DECLARE n INT DEFAULT 5;
DECLARE SUM INT;
SET SUM = m+n;
SELECT SUM;