mysql变量篇

    技术2022-07-10  106

    变量的分类

    变量的作用

    如上图所示变量主要是系统变量和自定义变量,其中系统变量主要是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语句专门用于定义局部变量

    语法:declare 变量名 类型 default 初始化值;

    用户变量:

    mysql> set @test=1; mysql> set @test1:=1; mysql> select @ test2:=2; #用户变量申明时顺带就赋值了,赋值时可以用=也可以用:=,使用select赋值时必须使用:=

    变量的赋值:

    局部变量:

    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)

    今天变量就到这里,我要去复习存储过程了!各位加油鸭!

    Processed: 0.013, SQL: 9