mysql--变量的学习

变量
学习变量:为什么要学习变量,因为我们在后面的函数和存储过程的学习过程中要使用到变量,所以这块知识其实是比较重要的。
变量的分类:
系统变量:
                        全局变量
				会话变量
自定义变量:
				用户变量
				局部变量
				
				
一:系统变量
说明:变量由系统提供,不是用户定义,属于服务器层面。
语法;
1.查看所有的系统变量
show GLOBAL|[SESSION] VARIABLES;
2.查看满足条件的部分系统变量
show GLOBAL |[session] VARIABLES like '%char%';

3.查看指定的某个系统变量的值
select @@global|[session] .系统变量;

4.为某个系统变量赋值
方式一:
set GLOBAL|[session] 系统变量名=值;
方式二:
set  @@global|[session] .系统变量名=值;

举例子:全局变量
全局变量
作用域:服务每次重新启动将为所有的全局变量付初始值,针对于所有的会话连接都有效,但是不能跨重启,重新启动之后,我们发现还是之前的老样子,要是重新启动之后有效果,那只能关掉服务,修改配置文件了。,一般情况下,我们也不这样操作。
1.查看所有全局变量
show GLOBAL VARIABLES;

2.查看部分的全局变量
show global VARIABLES like '%char%';

3。查看指定的全局变量
select @@global.autocommit;
select @@tx_isolation;

4.为某个指定的全局变量赋值,,这种赋值是跨链接的。
set @@global.autocommit=0;
set @@global.autocommit=1;


会话变量
特点,仅仅针对于当前会话连接有效
1.查看所有的会话变量
show VARIABLES;
show SESSION VARIABLES;--这两种写法最终出来的效果是一样的

2.查看部分的会话变量
show VARIABLES like '%char%';
show session variables like '%char%';

3.查看指定的某个会话变量
select @@tx_isolation;
select @@session.tx_isolation;

4.为某个会话变量赋值
方式一
set @@tx_isolation='read-UNCOMMITTED';

方式二
set session tx_isolation='read-UNCOMMITTED';--这两种方式都是可以的


#################################################华丽丽滴分割线######################################################################


二、自定义变量
说明:变量是用户自定义的,不是由系统提供的
使用步骤:
声明
赋值
使用(查看、比较、运算等)

一共分为一下两类
1、用户变量
赋值的操作符:=或:=
作用域:针对当前会话有效,同于会话变量的作用域
应用在任何地方,也就是begin end 里面或者外边

(1)声明并初始化
set @用户变量名=值;或
set @用户变量名:=值;或
select @用户变量名:=值;

(2) 赋值(更新用户变量的值)
方式一:通过set和select 
	set @用户变量名=值;或
	set @用户变量名:=值;或
	select @用户变量名:=值;

案例:这是一种弱类型语言,不用声明变量的类型
set @name='john';
set @name=100;
方式二:通过select into  
	  select 字段 into 变量名 from 表;
		
案例
set @count=1;#先声明这个变量,并给这个变量附上默认值
#将员工表中的记录条数查询出来赋值给这个变量
select count(*) into @count from employees;


(3) 使用(查看用户变量的值)
select @用户变量名;
select @count;--结果:107

2、局部变量
作用域:仅仅在定义它的begin end中是有效的,应用在begin end中的第一句话
(1)声明
declare 变量名  类型;
DECLARE 变量名  类型 default 值;
(2)赋值
方式一:通过set和select 
		set 局部变量名=值;或
		set 局部变量名:=值;或
		select @局部变量名:=值;
	
方式二:通过select into  
	  select 字段 into 局部变量名 from 表;
		
(3)使用
select 局部变量名

对比用户变量和局部变量;


案例:申明两个变量并附初始值,求和,并进行打印
1.用户变量
set @m=1;
set @n=1;
set @sum= @m+@n;
SELECT @sum;--结果显示:2

2.局部变量
declare m int default 1;
DECLARE n int default 2;
set sum=m+n;
select sum;
运行结果:> 1064 - You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near 'declare m int default 1' at line 1
意思是:declare只能使用begin end中的第一句,这样使用是不行的;

  

猜你喜欢

转载自www.cnblogs.com/dongyaotou/p/12358824.html