set names gbk;
变量
变量分为两种:系统变量,自定义变量
系统变量:系统定义好的,大部分情况用户不需要使用系统变量,如autocommit,auto_increment_increment等
查看系统变量:
show variables;-- 查看所有
查看具体变量值:任何一个有数据返回的内容都是由select查看
select @@version;@@autocommit,@@auto_increment_offset;
修改系统变量:
两种方式:回话级别,全局级别
回话级别:临时修改,当前客户端当次连接有效
set autocommit = 0;
set @@变量名=值;
全局级别:一次修改,对所有客户端永久生效
set global 变量名=值;
如果其他客户端已经连接上服务器,那么当次修改无效,退出再等了才生效
自定义变量:
定义变量:系统为了区分系统变量,用户自定义变量必须使用一个@符号
set @name = '张三';
查看自定义变量:
select @name;
在mysql中,"="会默认的当做比较符号处理(很多地方),为了区分比较和赋值概念,从新定义了一个赋值符号 ":="
mysql允许从数据表中取数据赋值给变量:两种方式
方案1:边赋值,变查看结果(一般不使用这种)
select @变量名 := 字段名 from 数据源; -- 从字段取值赋值给变量(如果使用=,会变成比较)
方案2:只有赋值,不看结果,要求很严格,你的数据记录最多只允许获取一条,因为mysql不支持数据,
select 字段列表 from 表名 into 变量列表;
-- select name ,age, from my_student where id = 1 into @name ,@age;
select @name,@age;
所有自定义的变量都是回话级别,当前客户端当次连接有效
自定义变量是用户级别(不区分数据库)