MySQL基础--变量
变量 常用命令:查看所有的系统变量: show 【global | session】 variables; 查看指定条件的系统变量: show 【global | session】 variables like '%char%' 查看某个系统变量: select @@【globla | sesssion】.系统变量名
|
为某个系统变量赋值: set 【global | session】 系统变量名=值 set @@【global | session】.系统变量名=值 用户变量名赋值和更新: set @用户变量名=值; set @用户变量名:=值; select @用户变量名:=值;
|
select 字段名 into 用户变量名from 表名 查看用户变量名: select @用户变量名;
局部变量: declare 变量名 类型 set 局部变量名=值 select 局部变量名 |
-
系统变量:
说明: 变量由系统提供的,不是用户定义,属于服务器层面
注意:
如果是全局级别,则需要加dOBAL,如果是会话级别,则需要加SESSION,如果不写,则默认SESSION-
全 局变量(globlal.*)
作用域:服务器每次启动将为所有的全局变量赋初始值,针对于所有的会话(连接)有效,但不能跨重启 -
会话变量作用域(session.)
variables系统变量,默认只能在本会话中起作用
-
说明:变量由系统提供的,不用自定义
语法:
①查看系统变量
show [globa1|session ] variables like ”;如果没有显式声明globa1还是session,则默认是session
②查看指定的系统变量的值
select @@ [global|session] . 变量名;如果没有显式声明globa1还是session,则默认是session
③为系统变量赋值
方式-:
set [globallsession ]变量名=值;如果没有显式声明global1还是session, 则默认是session
方式二:
set Qzlobal.变量名=值;
set @0变量名=值;
-
-
自定义变量:
-
说明:变量是用户自定义的,不是由系统的
使用步骤:
声明
赋值
使用(查看、比较、运算等) -
作用域:针对于当前会话(连接)|
-
声明并初始化:
set 用户变量名=值;
set 用户变量名:=值;
select 用户变量名:=值;
-
赋值(更新变量):
set 用户变量名=值;
set 用户变量名:=值;
select 用户变量名:=值;
select 字段 into 变量名 from 表;
-
作用域:针对于当前连接(会话)生效
位置: begin end里面, 也可以放在外面
使用:
①声明并赋值:
set变量名=值;或
set
@变量名:=值;或
select
变量名:=值; -
②更新值
方式一:
set变量名=值;或
set变量名:=值;或
select变量名:=值;
方式二:
select xx into @变量名from 表; -
③使用
select变量名; .
-
-
局部变量
-
作用域:仅仅在定义他的begin end中有效
应该在begin end 中的第一句话!!
-
①声明
DECLARE变量名类型;
DECLARE变量名类型DEFAULT 值; -
②赋值
方式一:通过SET或SELECT
SET局部变量名=值;或
SET局部变量名:=值;或
SELECT Q局部变量名:=值;
方式二:通过SELECT INTo
SELECT字段INTO 局部变量名
FROM表; -
③使用
SELECT局部变量名; -
#系统变量的使用:
show session variables;
show variables;
show variables like '%char%';
select @@session.autocommit;
set autocommit=0;
set @@session.autocommit=1;#用户变量的使用:
set @one=1;set @one=2;
set @one:=3;
select @one:=4;
select 5 into @one;select @one;
#局部变量的使用
declare $
create procedure test_jb()
begin
declare i int default 1;
set i=1;
set i:=2;
select 4 into i;
select i;
end $
-
作用域 | 定义和使用位置 | 语法 | |
用户变量 | 当前会话 | 会话中的任何位置 | 必须加@符号,不用限定类型 |
局部变量 | BEGIN END 中 | 只能在BEGIN END 中,且只能是是第一句 | 一般不用加@符号,需要限定类型 |