MySQL中的变量

本文最后更新于2015年6月13日,已超过 1 年没有更新,如果文章内容失效,还请反馈给我,谢谢!

MySQL中的变量分为用户变量系统变量

用户变量:

用户变量与数据库连接有关,在这个连接中声明的变量,在连接断开的时候,就会消失;在此连接中声明的变量无法在另一连接中使用;用户变量的变量名的形式为 @varname 的形式,名字必须以@开头。

声明变量的时候需要使用 set 语句,比如下面的语句声明了一个名为 @a 的变量。

声明一个名为@a的变量,并将它赋值为1,MySQL里面的变量是不严格限制数据类型的,它的数据类型根据你赋给它的值而随时变化。{SQL SERVER中使用declare语句声明变量,且严格限制数据类型。}

我们还可以使用 select 语句为变量赋值。

比如:

如果直接写:

如果这个查询返回多个值的话,那 @name 变量的值就是最后一条记录的 user 字段的值。

系统变量:

系统变量又分为全局变量(global variables)会话变量(session variables)

全局变量在MySQL启动的时候由服务器自动将它们初始化为默认值,这些默认值可以通过更改 my.ini 这个配置文件来更改。

会话变量在每次建立一个新的连接的时候,由MySQL来初始化。MySQL会将当前所有全局变量的值复制一份。来做为会话变量。{也就是说,如果在建立会话以后,没有手动更改过会话变量与全局变量的值,那所有这些变量的值都是一样的。}

全局变量与会话变量的区别就在于,对全局变量的修改会影响到整个服务器,但是对会话变量的修改,只会影响到当前的会话。

参考链接:
一些MySQL语句:

&

声明: 除非注明,ixyzero.com文章均为原创,转载请以链接形式标明本文地址,谢谢!
https://ixyzero.com/blog/archives/2253.html

《MySQL中的变量》上有3条评论

  1. mysql int field growing bigger than 11 digits
    https://stackoverflow.com/questions/7776862/mysql-int-field-growing-bigger-than-11-digits

    即,一个典型的 int 类型使用 4 字节的存储空间,表示范围是:
    有符号类型(-2^31 ~ 2^31-1): -2147483648 to 2147483647
    无符号类型(0 ~ 2^32-1): 0 to 4294967295

    而,一个典型的 bigint 类型使用 8 字节的存储空间,表示范围是:
    有符号类型(-2^63 ~ 2^63-1): -9223372036854775808 to 9223372036854775808
    无符号类型(0 ~ 2^64-1): 0 to 18446744073709551615

    Why can’t I insert 10 digits when my column is INT(10)
    https://stackoverflow.com/questions/14393672/why-cant-i-insert-10-digits-when-my-column-is-int10

    为什么 int(10) 类型的字段无法存储 10位的整型数字?

    因为,一个典型的 int 类型使用 4 字节的存储空间,表示范围是:
    有符号类型(-2^31 ~ 2^31-1): -2147483648 to 2147483647
    无符号类型(0 ~ 2^32-1): 0 to 4294967295

发表评论

电子邮件地址不会被公开。 必填项已用*标注