变量分类: 和大部分编程语言一样,SQL中的变量总的分为系统变量和自定义变量。
系统变量
定义: 系统定义好的变量,大部分时候用户根本不需要使用系统变量,系统变量是用来控制服务器的表现的,如:autocommit、auto_increment等;
查看系统变量的方法: show variables [like 'patterns'];
//经查看总的系统变量有三百多个。其中,like部分和show tables语句中的like部分相同。
//基本语法:
show variables [like 'patterns'];//经查看总的系统变量有三百多个。其中,like部分和show tables语句中的like部分相同
查看具体的变量值: 任何一个由数据返回的内容都是由select查看
//基本语法
select @@变量名;
修改系统变量: 修改系统变量分为两种方式,会话级别和全局级别
1、会话级别:临时修改,当前客户端当次有效
//基本语法
set 变量名=值; //修改的结果局部有效
set @@变量名=值; //修改的结果全局有效
2、全局级别:一次修改,永久有效
//基本语法
set global 变量名=变量值;
自定义变量
定义自定义变量: 系统为了区分系统变量,规定了用户自定义变量必须使用一个@符号,如定义”name”变量:set @name;
定义自定义变量的基本语法: set @变量名 := 值;
注意! 在mysql中,=
会默认的当做比较符号处理(在很多地方),mysql为了区分比较和赋值的概念,重新定义了一个新的赋值符号:=
符: mysql允许从数据表中获取数据,然后赋值给变量
//方案:边赋值、边查看结果
select @变量名 := 字段名 from 数据源; 从字段中取出值赋给变量名,绝对不能写成”=”号
select 字段列表 from 数据源 where 条件 into @变量名1,....,变量名n;//只能赋值一条记录
//注意:上面所有自定义的变量都是会话级别(用户变量),当次连接有效;
用户变量: 每个用户都可以在mysql中创建属于自己的私有变量,但是其只是用来临时存放数据的,一旦用户下线后,变量即被收回。并且此变量只能被定义者使用,其他用户不能使用和查看该变量。其用途有保存查询结果、作为存储过程接收返回值得对象。
局部变量: 定义方法declare 变量名 数据类型
;