变量的分类
变量的作用
如上图所示变量主要是系统变量和自定义变量,其中系统变量主要是mysql数据库系统自带的,启动即加载。
系统变量注意点:
1.全局变量作用域:当前会话及后开启的新会话(数据库未重启状态下);
2.会话变量作用域:当前会话,新开启会话无效,数据库重启后变量无效;
3.想要变量永久生效?只能写入配置文件中,并重启数据库。
4.select @@autocommit
=0
; --查询会话变量
select @@global.autocommit
=0
; --查询全局变量
熟知的一些系统变量:
mysql
> show variables
; --查询所有会话变量
mysql
> show global variables
; --查询所有全局变量
这个我还没整理出来,平时用到的比较少,比如autocommit、隔离级别之类的。
自定义变量注意点:
1.局部变量作用域:仅限begin end中,超出范围无效;
2.用户变量作用域:仅限当前会话;
变量的使用
1.系统变量因为其作用于数据库系统,所以都是有固定参数设置,比如开启1、关闭0之类的。 2.自定义变量作用于业务sql语句中,所以使用比较多,尤其是存储过程中(终于说到了重点)
由于系统变量都是系统自带的,下面不作更多的分析(这个属于系统层面的优化吧?)
变量的申明:
局部变量:
mysql
> declare test int default 0
;
语法:declare 变量名 类型 default 初始化值;
用户变量:
mysql
> set @test
=1
;
mysql
> set @test1:
=1
;
mysql
> select @ test2:
=2
;
变量的赋值:
局部变量:
mysql
> ……
mysql
> begin
mysql
> declare test int default 0
;
mysql
> select 1 into
test ;
mysql
> end
;
用户变量:
mysql
> set @test
=1
;
Query OK, 0 rows affected
(0.01 sec
)
mysql
> set @test
=1+1
;
Query OK, 0 rows affected
(0.01 sec
)
mysql
> select @test
;
+-------+
| @test
|
+-------+
| 2
|
+-------+
1 row
in set (0.00 sec
)
mysql
> set @test
=1+@test
;
Query OK, 0 rows affected
(0.00 sec
)
mysql
> select @test
;
+-------+
| @test
|
+-------+
| 3
|
+-------+
1 row
in set (0.00 sec
)
今天变量就到这里,我要去复习存储过程了!各位加油鸭!