sqlserver变量 和 mysql变量

1 SQL Server 变量

分为全局变量和局部变量

全部变量:以@@声明,为系统变量,所有实例都能访问,用户只能访问,不能赋值

局部变量:生命周期只在一个批处理内有效

局部变量经常使用的三种用途:
1 用于在循环语句中记录循环的次数或者用户控制循环的次数
2 用于控制流程走向 比如 if (@i =1)
3 用于存储过程或者函数的返回值

注意:
1 局部变量声明的类型不能为 text ntext image,
2 当对于字符型变量只提供数据类型没有提供数据长度时,默认为1,
3 一切只声明没有赋值的局部变量的初始值都为 NULL

局部变量的赋值:
可以使用set 或者Select实现
二者区别:
在 T-sql中,select支持多个变量赋值,每个变量的赋值用逗号分隔
set只支持一次对一个变量赋值

使用set进行赋值时,当表达式返回多个值,则报错,
而使用select在赋值表达式返回多个值时,取最后一个

当表达式未返回值时:

使用set对局部变量赋值时:如果赋值表达式未返回值,则局部变量变为null
而select对表达式赋值时,如果表达式未返回值,则局部变量保持原值

局部表变量:
局部表变量是一个特殊的局部变量,和临时表不同,局部表变量具有一切局部变量的特点,在查询中,因为局部表变量是存在内存中,而不是硬盘中,

所以速度会远远快于临时表或者实际表,局部表变量最多的使用是在查询中充当多个表做连接时候的中间表

声明一个表变量:

DECLARE @TempTable TABLE
(
NAME NVARCHAR(20)
Age INT
)
注意:使用临时表的时候,可以考虑使用表变量,这样可以大大提高性能

2 MySQL 变量

@是用户定义的变量,如set @a=1.

@@是系统变量,例如查看系统参数,select @@global.log_error_verbosity,则查询全局的log_error_verbosity参数值;如果不带global参数,则默认是查询会话级的参数值,但是如果select @@var,该var没有会话级别的选项,那么当然是显示全局级别的值;会话级的参数也可以通过select @@session.var方式来查看。

设置事务隔离级别:

mysql> set session transaction isolation level repeatable read;

Query OK, 0 rows affected (0.00 sec)

mysql> select @@transaction_isolation;

±------------------------+

| @@transaction_isolation |

±------------------------+

| REPEATABLE-READ |

±------------------------+

1 row in set (0.00 sec)

mysql> select @@global.transaction_isolation;

±-------------------------------+

| @@global.transaction_isolation |

±-------------------------------+

| READ-COMMITTED |

±-------------------------------+

1 row in set (0.00 sec)

mysql> select @@session.transaction_isolation;

±--------------------------------+

| @@session.transaction_isolation |

±--------------------------------+

| REPEATABLE-READ |

±--------------------------------+

1 row in set (0.00 sec)

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值