你是不是暗恋我,那就给我发个消息呀,让我知道o(∩∩)o
分类: Mysql/postgreSQL
2014-05-28 15:51:33
MySQL数据库中的变量分为MySQL系统变量和MySQL用户变量,下面就为您介绍MySQL用户变量的应用,供您参考学习之用。
MySQL用户变量:
基于会话变量实现的, 可以暂存值, 并传递给同一连接里的下一条sql使用的变量.
当客户端连接退出时,变量会被释放.
MySQL用户变量应用场景:
同一连接,未关闭情况下,帮你暂存一些计算结果.
比如
select @admin_id:=max(id) from user_info;
select * from user_info where id = @admin_id
以上两条sql在同一connection中完成.
另外,注意,用户变量前只有1个@, 2个@是用于存取系统变量的.
业务相关的变量定义太多,无法区分系统全局变量?
这类问题,可以通过mysql提供的结构化系统变量来解决.
他们有独特的表示形式:
instance_name.test_var
比一般的变量多了一个instance_name.这样,你就可以很方便地对他们进行分类,比如 app.test_var,就可以区别于系统的var了.
1. 用户变量
用户变量是指通过set语句:set @var_name = expr [, @var_name = expr]对指定变量名赋值,然后在以后引用它。用户变量的形式为@var_name,以后的引用也是这样。
set语句注意点:
1) 可以使用=或:=作为分配符。
2) 变量expr可以为整数、实数、字符串或者NULL值。
3) 可以使用非set语句代替set来为用户变量分配一个值,此时分配符必须为:=而不能用=。
4) 使用没有初始化的用户变量,其值为NULL,类型为字符串。
用户变量注意点:
1) 用户变量和连接有关。(这意味着:一个客户端定义的变量不能被其它客户端看到或使用。当客户端退出时,该客户端连接的所有变量将自动释放。)
2) 用户变量不使用查询缓存。
3) 用户变量大小写不敏感。(mysql5.0及其以上版本)
4) 用户变量不能准确的指定类型。
select user();
select database();
show grants for test@"localhost";