小白终是踏上了这条不归路----小文的mysql学习笔记(20)--------变量

**
小白终是踏上了这条不归路----小文的mysql学习笔记(1)

小白终是踏上了这条不归路----小文的mysql学习笔记(2)----条件查询

小白终是踏上了这条不归路----小文的mysql学习笔记(3)----排序询查

小白终是踏上了这条不归路----小文的mysql学习笔记(4)----常见的基本函数

小白终是踏上了这条不归路----小文的mysql学习笔记(5)----分组查询


小白终是踏上了这条不归路----小文的mysql学习笔记(目录)
**
首先我们来看一看变量的分类一共分两大类和四小类;

分类:

    系统变量:      全局变量
                            会话变量
    自定义变量:  用户变量
                            局部变量

一、系统变量

说明: 变量由系统提供,不是用户定义,属于服务器层面。

系统变量使用的语法:
1、查看所有的系统变量
语法:	show  global variables;  查看系统全局变量
	    show session variables;  查看系统会话变量     
	    show variables  查询会话变量   

注意: show variables; 不写 session 也可以指查询会话变量

例1:查询系统全局变量
在这里插入图片描述

例2:查询系统会话变量
在这里插入图片描述

2、查看满足条件的部分系统变量
	语法:   show global /session】 variables like  条件;

举例:查询字符集变量(因为字符集大都包括char所以我们可以用 like “%char%”)
在这里插入图片描述

3、查看指定的某个系统变量的值
语法:  select @@global/session.系统变量名;
4、为某个系统变量赋值
语法:  
    方式一:
    set  global/session】  系统变量名=值;
    方式二:
    set  @@global/session.系统变量名=值;

注意: 如果是全局级别则需要添加 global ,如果是会话级别则需要添加 session
如果不写,系统默认是会话变量

全局变量

作用域: 针对于所有的会话(连接)有效,但不能跨重启,因为服务器每次启动都将为所有的全局变量赋初始值。

语法:
1、查看所有的全局变量;

语法:   show  global  variables

2、查看部分的全局变量

语法:  show  global  variables  like  筛选条件;

举例:查询字符集变量(因为字符集大都包括char所以我们可以用 like “%char%”)【哈哈哈还是上面那个栗子】
在这里插入图片描述
3、查看指定的某个全局变量的值

语法:  select  @@global.系统变量名;

举个栗子:查询系统的autocommit变量
在这里插入图片描述
4、为某个指定的全局变量赋值

语法:
	方式一:
	 set  @@global.系统变量名 = 值;
	 方式二:
	 set  global  系统变量名 = 值; 

举个例子:将自动提交功能关闭(即将autocommit变量设置为0)
在这里插入图片描述
当我们再举一个栗子将他变回来:用第二种方式将自动提交功能开启(即将autocommit变量设置为1)
在这里插入图片描述

会话变量

语法:
1、查看所有的会话变量。

语法:
	方式一:
	SHOW VARIABLES;
	方式二:
	SHOW SESSION VARIABLES;

示例:查看 所有的会话变量
在这里插入图片描述

2、查看部分的会话变量

语法:  SHOW VARIABLES LIKE 限制条件;

示例:
在这里插入图片描述
3、查看指定的某个会话变量

语法: 
	方式一:
	 SELECT @@session.变量名;
	 方式二:
	 SELECT @@变量名;

示例:
在这里插入图片描述
4、为某个会话变量赋值

语法:
	方式一:
	set  @@【session.系统变量名 =值;
	方式二:
	set  session  系统变量名 =

示例:用方式一来将自动提交功能关闭。
在这里插入图片描述
示例:用方式二来将自动提交功能开启
在这里插入图片描述

二、自定义变量

含义: 该变量是由用户自定义的,而不是由系统提供的。

使用步骤:
              声明
              赋值
              使用(查看、比较、运算)

1、用户变量

作用域: 针对于当前会话(连接)有效,和会话变量的作用域一样
             可以应用在任何地方,也就是begin end里面或者begin end外面都可以。

ps:那么我们到底该如何使用呢,下面我们来按照使用的几个步骤 一起来看看

第一步: 声明并初始化(三种方式)

	方式一:
	SET @用户变量名=;
	方式二:
	SET @用户变量名:=;
	方式三:
	SELECT @用户变量名:=;

注意: 如果用set 则两种写法都可以;但是如果用selet 则等号前面必须加上冒号

第二步: 赋值(更新用户变量的值)两种方式

	方式一:通过setselect	
		SET  @用户变量名=;
		SET  @用户变量名:=;
		SELECT  @用户变量名:=;
	方式二:通过 SELECT INTO
		SELECT  字段  INTO  变量名
		FROM;

第三步: 使用(查看用户变量的值)

语法:  SELECT @用户变量名;

那么我们举一个简单的栗子:
在这里插入图片描述

2、局部变量

作用域: 仅仅在定义它的begin end中有效。

应用: 应用在begin end中的第一句话。

ps:当然我们的局部变量的使用和我们的用户变量一样要严格遵守我们的三个步骤

第一步: 声明

语法:	DECLARE 变量名 类型;
		DECLARE 变量名 类型 DEFAULT;(如果要初始化就这么写)

注意: 当然这里初始化的值要和前面设置的类型一致

第二步: 赋值

语法:
	方式一:通过setselect	
		SET 局部变量名=;
		SET 局部变量名:=;
		SELECT @局部变量名:=;
    方式二:通过 SELECT  INTO
		SELECT 字段 INTO 局部变量名
		FROM;	

第三步: 使用

语法:	SELECT 局部变量名;

三、对比用户变量和局部变量:

        用户变量的作用域为当前会话,定义和使用的位置可以是会话中的任何位置,语法不用限定类型,但必须加@符号;

       而局部变量的作用域仅仅为 BEGIN  END中 ,并且定义和使用的位置只能是在BEGIN  END 中的第一句话,语法必须限定类型,但是一般不用加@符号

**
ps:变量在后面的过程和函数中会有用到,所以我们还是要先了解
**
The more you care about something what will torture you .
                                 ------------你越在意什么,什么就会就会折磨你

原创文章 33 获赞 159 访问量 1万+

猜你喜欢

转载自blog.csdn.net/qq_45948983/article/details/105896462