mysql中局部变量_MySQL中变量的总结

打印 上一主题 下一主题

主题 1027|帖子 1027|积分 3081

本文对MySQL中局部变量、用户变量、体系变量的理解举行总结。
   一、局部变量
   局部变量由DECLARE语句声明:
   DECLARE var_name[,...] type [DEFAULT value]
   默认值由DEFAULT子句来声明,默认值也可以是一个表达式。
   局部变量的作用范围仅限在它被声明的BEGIN...END块内,当语句实行完毕,局部变量就消失了。
   二、用户变量
   可以先在用户变量中保存值然后在以后引用它;这样可以将值从一个语句通报到另一个语句。用户变量与连接有关。也就是说,一个客户端定义的变量不能被其它客户端看到或使用。当客户端退出时,该客户端连接的全部变量将自动释放。用户变量名对巨细写不敏感!
   对用户变量的定义有两种方式:
   第一种是实行SET语句
   SET @var_name = expr [, @var_name = expr] ...
   对于SET,可以使用=或:=作为分配符。分配给每个变量的expr可以为整数、实数、字符串大概NULL值。
   第二种是使用SELECT语句
   使用SELECT定义用户变量只能使用:=作为分配符(由于在非SET语句中 = 被视为一个‘比力操纵符’)
   mysql> SET @t1=0, @t2=0, @t3=0;
   mysql> SELECT @t1:=(@t2:=1)+@t3:=4,@t1,@t2,@t3;+----------------------+------+------+------+
   | @t1:=(@t2:=1)+@t3:=4 | @t1 | @t2 | @t3 |
   +----------------------+------+------+------+
   | 5 | 5 | 1 | 4 |
   +----------------------+------+------+------+
   三、体系变量
   MySQL服务器维护两种变量:全局变量影响服务器团体操纵;会话变量影响具体客户端连接的操纵。
   1、全局变量
   当服务器启动时,它将全部全局变量初始化为默认值。这些默认值可以在配置文件(my.ini)中或在命令行中指定的选项举行更改。服务器启动后,通过连接服务器并实行SET GLOBAL var_name语句,可以动态更改这些全局变量。要想更改全局变量,必须具有SUPER权限。
   要想设置一个GLOBAL变量的值,使用下面的语法:
   mysql> SET GLOBAL sort_buffer_size=value;
   mysql> SET @@global.sort_buffer_size=value;
   要想查察一个GLOBAL变量的值,使用下面的语法:
   mysql> SELECT @@global.sort_buffer_size;
   mysql> SHOW GLOBAL VARIABLES like 'sort_buffer_size';
   2、会话变量
   服务器还为每个连接的客户端维护一系列会话变量。在连接时使用相应全局变量的当前值对客户端的会话变量举行初始化。对于动态会话变量,客户端可以通过SET SESSION var_name语句更改它们。设置会话变量不需要特别权限,但客户端只能更改自己的会话变量,而不能更改其它客户端的会话变量。当前连接断开后,其设置的全部会话变量均
   会自动释放
   要想设置一个SESSION变量的值,使用下面的语法:
   mysql> SET SESSION sort_buffer_size=value;
   mysql> SET @@session.sort_buffer_size=value;
   mysql> SET sort_buffer_size=value;
   要想查察一个SESSION变量的值,使用下面的语法:
   mysql> SELECT @@sort_buffer_size;
   mysql> SELECT @@session.sort_buffer_size;
   mysql> SHOW SESSION VARIABLES like 'sort_buffer_size';
   留意:
   对于全局变量的更改可以被访问该全局变量的任何客户端瞥见。然而,它只影响更改后连接的客户的从该全局变量初始化的相应会话变量。不影响现在已经连接的客户端的会话变量(纵然客户端实行SET GLOBAL语句也不影响)。
   当你用SELECT @@var_name搜索一个变量时(也就是说,不指定global.、session.),MySQL返回SESSION值(如果存在),否则返回GLOBAL值。
   对于SHOW VARIABLES,如果不指定GLOBAL、SESSION大概LOCAL,MySQL返回SESSION值。
   通用的赋值方式:
   SELECT...INTO语句
   SELECT col_name[,...] INTO var_name[,...] table_expr
   这个SELECT语法把选定的列直接存储到变量
   四、用户变量与会话变量的区别:
   用户变量是用户定义的变量,是MySQL服务器定义和维护的变量,所以用户变量和会话变量之间的区别在于,是谁在维护这些变量。用户变量和体系会话变量在当前客户端退出后都会自动释放。而体系会话变量的不通之处在于,在客户端创建连接时会创建一系列会话变量,并以全局变量的当前值初始化会话变量(会话变量相当于体系全局变量的副本),对体系会话变量的操纵修改仅对当前客户端产生影响,并不会修改体系全局变量。自定义的会话变量的特性与用户变量就没有什么区别了。
   (个人参考MySQL文档的理解和总结,如有问题请指正,谢谢)
   相干资源:mysql存储过程中变量的定义与赋值操纵_mysql存储过程设置变量...
   屁乎小铭
   关注
   1
   0
   1
   ————————————————
   版权声明:本文为CSDN博主「屁乎小铭」的原创文章,遵循CC 4.0 BY-SA版权协议,转载请附上原文出处链接及本声明。
   原文链接:https://blog.csdn.net/weixin_42641385/article/details/113168108
         ©    著作权归作者全部,转载或内容合作请联系作者     

喜欢的朋侪记得点赞、收藏、关注哦!!!

免责声明:如果侵犯了您的权益,请联系站长,我们会及时删除侵权内容,谢谢合作!更多信息从访问主页:qidao123.com:ToB企服之家,中国第一个企服评测及商务社交产业平台。

本帖子中包含更多资源

您需要 登录 才可以下载或查看,没有账号?立即注册

x
回复

使用道具 举报

0 个回复

倒序浏览

快速回复

您需要登录后才可以回帖 登录 or 立即注册

本版积分规则

tsx81429

论坛元老
这个人很懒什么都没写!
快速回复 返回顶部 返回列表