变量分为两种:系统变量和自定义变量
系统变量
系统定义好的变量:大部分的时候用户根本不需要使用系统变量,系统变量用来控制服务器的表现,如autocommit,auto_increment等。
查看系统变量:show variables;
查看变量值:select @@变量名;
修改系统变量:两种方式:会话级别和全局级别
会话级别:临时修改,当前客户端当次连接有效
set 变量名 = 值;
set @@变量名 = 值;
全局级别:一次修改,永久生效(对所有客户端都生效)
set global 变量名 = 值;
如果其他客户端当前已经连接上服务器,那么当次修改无效,要退出重新登录才会生效。
自定义变量
系统为了区分系统变量,规定用户自定义变量必须使用一个@符号。
set @变量名 = 值;
自定义变量查看类似系统变量查看
select @变量名 = 值;
MySQL中”=“通常默认是用于比较,所以为了区分比较和赋值的概念,MySQL重新定义了一个新的赋值符号”:=“。
MySQL允许从数据表中获取数据,然后赋值给变量,有两种方式
方案1:边赋值,边查看结果
select @变量名 := 字段名 from 数据源; --从字段中取值赋值给变量名,如果使用=会变成比较。
方案2:只有赋值不看结果。要求很严格,数据纪录只允许获取一条,因为MySQL不支持数组
select 字段列表 from 表名 into 变量列表;
所有自定义变量都是会话级别:当前客户端当次连接有效。