用户变量(@var_name)
用户变量的形式为@var_name,其中变量名var_name可以由当前字符集的文字数字字符、‘.’、‘_’和‘$’组成。 默认字符集是cp1252 (Latin1)。用户变量名对大小写不敏感。如果使用没有初始化的变量,其值是NULL。
用户变量前只有1个@, 2个@是用于存取系统变量的。
用户变量中保存值然后在以后引用它;这样可以将值从一个语句传递到另一个语句。一个客户端定义的变量不能被其它客户端看到或使用。当客户端退出时,该客户端连接的所有变量将自动释放。
如: SET @t1=0, @t2=0, @t3=0;
系统变量(@@var_name)
影响整个mysql实例的全局设置,大部分作为mysql的服务器调节参数存在。新增或修改这类变量, 会影响mysql的运行方式
mysqld服务器维护两种变量。全局变量影响服务器整体操作。会话变量影响具体客户端连接的操作。
1.全局变量(global)
当服务器启动时,它将所有全局变量初始化为默认值。这些默认值可以在选项文件中或在命令行中指定的选项进行更改。服务器启动后,通过连接服务器并执行SET GLOBAL var_name语句,可以动态更改这些全局变量。
比如更改系统全局事务隔离等级:set global transaction isolation level repeatable read;
2.会话变量(session)
服务器还为每个连接的客户端维护一系列会话变量。在连接时使用相应全局变量的当前值对客户端的会话变量进行初始化。对于动态会话变量,客户端可以通过SET SESSION var_name语句更改它们。设置会话变量不需要特殊权限,但客户端只能更改自己的会话变量,而不能更改其它客户端的会话变量。
比如更改会话事务隔离等级:set sessiontransaction isolation level repeatable read;