会话变量
作⽤域
针对当前会话(连接)有效,不能跨连接。
会话变量是在连接创建时由mysql⾃动给当前会话设置的变量。
示例
查看所有会话变量
/*①查看所有会话变量*/
show session variables;
查看满⾜条件的会话变量
/*②查看满⾜条件的步伐会话变量*/
/*查看包含`char`字符变量名的会话变量*/
show session variables like '%char%';
查看指定的会话变量的值
/*③查看指定的会话变量的值*/
/*查看事务默认⾃动提交的设置*/
select @@autocommit;
select @@session.autocommit;
/*查看事务隔离级别*/
select @@tx_isolation;
select @@session.tx_isolation;
为某个会话变量赋值
/*④为某个会话变量赋值*/
set @@session.tx_isolation='read-uncommitted';set @@tx_isolation='read-committed';
set session tx_isolation='read-committed';
set tx_isolation='read-committed';
效果:
mysql> select @@tx_isolation;
+----------------+
| @@tx_isolation |
+----------------+
| READ-COMMITTED |
+----------------+
1 row in set, 1 warning (0.00 sec)
mysql> set tx_isolation='read-committed';
Query OK, 0 rows affected, 1 warning (0.00 sec)
mysql> select @@tx_isolation;
+----------------+
| @@tx_isolation |
+----------------+
| READ-COMMITTED |
+----------------+
1 row in set, 1 warning (0.00 sec)
⾃定义变量
概念
变量由⽤户⾃定义的,⽽不是系统提供的。
使⽤
使⽤步骤:
1. 声明
2. 赋值
3. 使⽤(查看、⽐较、运算)分类
• ⽤户变量
• 局部变量
⽤户变量
作⽤域
针对当前会话(连接)有效,作⽤域同会话变量。
⽤户变量可以在任何地⽅使⽤也就是既可以在begin end⾥⾯使⽤,也可以在他外⾯使
⽤。
使⽤
声明并初始化(要求声明时必须初始化)
/*⽅式1*/
set @变量名=值;
/*⽅式2*/
set @变量名:=值;
/*⽅式3*/
select @变量名:=值;
注意:
上⾯使⽤了@符合,⽽上⾯介绍全局变量使⽤了2个@符号,这点注意区分⼀下。
set中=号前⾯冒号是可选的,select⽅式=前⾯必须有冒号
赋值(更新变量的值)
/*⽅式1:这块和变量的声明⼀样*/
set @变量名=值;
set @变量名:=值;
select @变量名:=值;/*⽅式2*/
select 字段 into @变量名 from 表;
注意上⾯select的两种⽅式。
使⽤
select @变量名;
综合示例
/*set⽅式创建变量并初始化*/
set @username='路⼈甲java';
/*select into⽅式创建变量*/
select 'javacode2018' into @gzh;
select count(*) into @empcount from employees;
/*select :=⽅式创建变量*/
select @first_name:='路⼈甲Java',@email:='javacode2018@163.com';
/*使⽤变量*/
insert into employees (first_name,email) values (@first_name,@email);