mysql用户变量

用户变量即用户自己定义的变量,我们可以给用户变量分配值,并且可用在任何可以正常使用标量表达式的地方。

引入用户变量之前我们必须使用set语句或select语句来定义它,然后为它赋一个值,否则变量就只有一个空值。

用户变量与连接有关。也就是说,一个客户端定义的变量不能被其它客户端看到或使用。当客户端退出时,该客户端连接的所有变量将自动释放。


 set语句可用于向系统变量或用户变量赋值,针对用户变量的定义如下:SET @var_name = expr [, @var_name = expr] ...

  也可使用select语句来定义:SELECT @var_name := expr [, @var_name = expr] ...  

用户变量:以"@"开始,形式为"@var_name",以区分用户变量及列名。它可以是任何随机的,复合的标量表达式,只要其中没有列指定。
    一个变量名可以由当前字符集的数字字母字符和“_”、“$”和“.”组成。缺省字符集是ISO-8859-1 Latin1;这可以用mysqld 的--default-character-set 选项更改字符集。
    对于SET,可以使用=或:=来赋值,对于SELECT只能使用:=来赋值。

 我们可以使用一条简单的select语句查询定义的用户变量的值。


通过set的实例
    用来把一个值赋给一个变量的标量表达式可以是复合表达式。计算,函数,系统标量以及其他用户变量都是允许的,子查询也是允许的。然后通过select语句可以获取一个用户变量的值,结果是带有一行的一个表。


在用来为一个用户变量赋值的表达式中,也可以指定其它的用户变量,需要注意的是mysql首先确定所有表达式的值,之后才会把值赋给变量。

例如,下面的两个例子,varB值是不一样的。

例1:


例2:



通过select的实例
    相对set语句而言,使用select定义变量,会返回一个表格形式的结果。




注意:用户变量用在where或having子句中,他们必须首先用另一条语句来定义,如下面例子,初次查询没有返回结果,先定义以后在查询才有输出。




用户变量为session级别,当我们关闭客户端或退出登录时用户变量全部消失。如果想用就保存自定义的变量,需要自行创建一个表,将标量insert到表里。

用户变量名对大小写不敏感。

未定义的变量初始化是null。


  • 0
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
mysql定义变量的方法有多种。根据mysql手册,mysql变量可以分为系统变量用户变量两种。此外,在实际使用中,还会遇到诸如局部变量、会话变量等概念。根据个人感觉,mysql变量大体可以分为四种类型。 声明一个变量可以使用以下方法: - 使用declare语句定义局部变量,语法形式为DECLARE var_name [, var_name]... data_type [ DEFAULT value ]。这种变量的作用域仅限于该语句块,在语句块执行完毕后该变量就会消失。可以使用default来说明默认值。 - 使用set语句来设置不同类型的变量,包括会话变量和全局变量。例如,可以使用set语句为变量赋值,比如set @name = ''; select @name:=password from user limit 0,1;#从数据表中获取一条记录password字段的值给@name变量。在执行后输出到查询结果集上面。 总之,mysql定义变量的方法有多种,可以根据实际需求选择适合的方法进行变量的定义。<span class="em">1</span><span class="em">2</span><span class="em">3</span> #### 引用[.reference_title] - *1* [mysql 变量简介](https://blog.csdn.net/lxgwm2008/article/details/7738306)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v93^chatsearchT3_1"}}] [.reference_item style="max-width: 50%"] - *2* *3* [mysql中各种类型变量的定义以及赋值使用](https://blog.csdn.net/JQ_AK47/article/details/52087484)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v93^chatsearchT3_1"}}] [.reference_item style="max-width: 50%"] [ .reference_list ]

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值