MYSQL中的变量分为三类,系统变量、用户自定义变量、局部变量。
一、系统变量
系统变量是mysql服务器提供,不是用户定义的,属于服务器层面。分为全局变量(GLOBAL)、会话变量(SESSION)。(全局变量在全局范围内可用,即所有会话下都可用,会话变量在当前会话可用,一个会话即为mysql中打开的一个窗口)
若未指定变量是全局变量还是会话变量,则默认为会话变量。
不管你对系统变量做了什么修改,在mysql服务器重新启动后,所有的系统变量都会恢复默认值,要想永久修改,需要更改配置文件。
二、用户自定义变量
用户自定义变量是用户根据需要自己定义的变量,用户变量不用提前声明,在用的时候直接用“@变量名”使用就可以。其作用域为当前连接。(两个@符是系统变量,一个@符是用户自定义变量)。
用户定义的变量无需对其进行声明或初始化,当你SELECT未赋值或未声明的用户自定义变量时,得到的值为NULL。
三、局部变量
局部变量是根据需要在局部生效的变量,访问之前,需要DECLARE声明。可用作存储过程或函数内的局部变量和输入参数,局部变量的作用范围是声明它的那个BEGIN...END块内。