变量分为两种:系统变量和自定义变量
系统变量
系统定义好的变量:大部分的时候用户根本不需要使用系统变量:系统变量是用来控制服务器的表现的:如autocommit,auto increment increment等。
查看系统变量
Show variables; 查看所有系统变量
Select @@变量名; 查看具体变量值,任何一个有数据返回的内容都是由select查看
修改系统变量
修改系统变量分为两种方式:会话级别和全局级别
会话级别:临时修改,当前客户端档次连接有效
Set 变量名 = 值; 或者 set @@变量名 = 值;
全局级别:一次修改,永久生效(对所有客户端都生效)
Set galobal 变量名= 值;
如果其他客户端当前已经连接上服务器,那么当次修改无效,要退出重新登陆才生效。
自定义变量
定义变量
系统为了区分系统变量,规定用户自定义变量必须使用一个@符号
Set @变量名 = 值;
自定义变量也是类似系统变量查看
Select @变量名;
在MySQL中,“=”会默认的当做比较符号处理(很多地方),MySQL为了区分比较和赋值的概念:重新定义了一个新的赋值符号: “ := ”
MySQL允许从数据表中获取数据,然后赋值给变量:两种方式
方案1:边赋值,边查看结果 得到的是最后一条
Select @变量名 := 字段名 from 数据源; 从字段中取值赋值给变量名,如果使用 =会变成比较
方案2:只有赋值不看结果:要求很严格:数据记录最多只允许获取一条:mysql不支持数组
Select 字段列表 from 表名 into 变量列表;
所有自定义的变量都是会话级别:当前客户端档次连接有效
所有自定义变量不区分数据库(用户级别)