• 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中的第一句,这样使用是不行的;

    对比用户变量和局部变量

    
    
     作用域定义和使用位置语法
    用户变量 当前会话 会话中的任何地方 必须加@符号,不用限定类型
    局部变量 begin end中 只能在begin end中,且未第一句话 一般不用加@符号,需要限定类型
    
    

      

  • 相关阅读:
    第六周
    第五周(实验报告)
    第四周(实验报告)
    第三周(实验报告)
    Java第二周学习总结
    第一周
    2019课程总结
    第十四周课程总结
    第十三周总结
    第十二周总结
  • 原文地址:https://www.cnblogs.com/dongyaotou/p/12358824.html
Copyright © 2020-2023  润新知