mysql变量技巧(mysql用户变量与set语句示例详解)
mysql变量技巧
mysql用户变量与set语句示例详解目录
- 1 用户变量介绍
- 2 用户变量定义
-
3 用户变量的使用
- 3.1 通过set的实例
- 3.2 通过select的实例
- 4 用户变量注意事项
- 5 补充知识:mysql语句do
- 总结
1 用户变量介绍
用户变量即用户自己定义的变量,我们可以给用户变量分配值,并且可用在任何可以正常使用标量表达式的地方。
引入用户变量之前我们必须使用set语句或select语句来定义它,然后为它赋一个值,否则变量就只有一个空值。
用户变量与连接有关。也就是说,一个客户端定义的变量不能被其它客户端看到或使用。当客户端退出时,该客户端连接的所有变量将自动释放。
2 用户变量定义
set语句可用于向系统变量或用户变量赋值,针对用户变量的定义如下:
|
SET @var_name = expr [, @var_name = expr] ... |
也可使用select语句来定义:
|
SELECT @var_name := expr [, @var_name = expr] ... |
用户变量:以"@"开始,形式为"@var_name",以区分用户变量及列名。它可以是任何随机的,复合的标量表达式,只要其中没有列指定。
一个变量名可以由当前字符集的数字字母字符和“_”、“$”和“.”组成。缺省字符集是ISO-8859-1 Latin1;这可以用mysqld 的--default-character-set 选项更改字符集。
对于SET,可以使用=或:=来赋值,对于SELECT只能使用:=来赋值。
我们可以使用一条简单的select语句查询定义的用户变量的值。
3 用户变量的使用
3.1 通过set的实例
用来把一个值赋给一个变量的标量表达式可以是复合表达式。计算,函数,系统标量以及其他用户变量都是允许的,子查询也是允许的。然后通过select语句可以获取一个用户变量的值,结果是带有一行的一个表。
|
mysql> set @var1=1, @var2= 'vartest' , @var3= abs (-2), @var4=( select count (*) from mysql. user ); mysql> select @var1, @var2, @var3, @var4; + -------+---------+-------+-------+ | @var1 | @var2 | @var3 | @var4 | + -------+---------+-------+-------+ | 1 | vartest | 2 | 25 | + -------+---------+-------+-------+ |
在用来为一个用户变量赋值的表达式中,也可以指定其它的用户变量,需要注意的是mysql首先确定所有表达式的值,之后才会把值赋给变量。
例如:
|
mysql> set @varA = 2; |
对于下面两个例子,varB的值是不同的。
例1:
|
mysql> set @varA = 3, @varB = @varA; mysql> select @varB; + -------+ | @varB | + -------+ | 2 | + -------+ |
例2:
|
mysql> set @varA = 3; mysql> set @varB = @varA; mysql> select @varB; + -------+ | @varB | + -------+ | 3 | + -------+ |
3.2 通过select的实例
相对set语句而言,使用select定义变量,会返回一个表格形式的结果。
|
mysql> select @var1:=1, @var2:= 'vartest' , @var3:= abs (-2), @var4:=( select count (*) from mysql. user ); + ----------+------------------+----------------+------------------------------------------+ | @var1:=1 | @var2:= 'vartest' | @var3:= abs (-2) | @var4:=( select count (*) from mysql. user ) | + ----------+------------------+----------------+------------------------------------------+ | 1 | vartest | 2 | 25 | + ----------+------------------+----------------+------------------------------------------+ mysql> select @var1, @var2, @var3, @var4; + -------+---------+-------+-------+ | @var1 | @var2 | @var3 | @var4 | + -------+---------+-------+-------+ | 1 | vartest | 2 | 25 | + -------+---------+-------+-------+ + -------+---------+-------+-------+ | 1 | vartest | 2 | 25 | + -------+---------+-------+-------+ |
4 用户变量注意事项
4.1 用户变量用在where或having子句中,他们必须首先用另一条语句来定义,如下面例子,初次查询没有返回结果,先定以后在查询才有输出。
|
mysql> select @H:= 'localhost' from mysql. user where host = @H; Empty set (0.00 sec) mysql> select @H:= 'localhost' ; + -----------------+ | @H:= 'localhost' | + -----------------+ | localhost | + -----------------+ 1 row in set (0.00 sec) mysql> select @H:= 'localhost' , user from mysql. user where host = @H; + -----------------+-----------------+ | @H:= 'localhost' | user | + -----------------+-----------------+ | localhost | | | localhost | jesse | | localhost | local | | localhost | root | | localhost | user_tab_update | + -----------------+-----------------+ |
4.2 用户变量为session级别,当我们关闭客户端或退出登录时用户变量全部消失。如果想用就保存自定义的变量,需要自行创建一个表,将标量insert到表里。
4.3 用户变量名对大小写不敏感。
4.4 未定义的变量初始化是null。
5 补充知识:mysql语句do
在do语句中,使用了一个或多个标量表达式,mysql会一条一条的处理它们,但并不显示表达式的结果。例如我们可以调用函数执行后台的某些事情,而不需要看到其结果。
例如:
|
mysql> do sleep(5); Query OK, 0 rows affected (5.00 sec) |
总结
到此这篇关于mysql用户变量与set语句的文章就介绍到这了,更多相关mysql用户变量与set语句内容请搜索开心学习网以前的文章或继续浏览下面的相关文章希望大家以后多多支持开心学习网!
原文链接:https://blog.csdn.net/JesseYoung/article/details/40779631
- mysql详细学习笔记(Mysql常用命令 详细整理版)
- 关于mysql性能优化的描述(Mysql性能优化之索引下推)
- mysql图形化管理工具
- mysql将字符串转换为日期的函数(Mysql中时间戳转为Date的方法示例)
- mysql权限收回(MySQL如何利用DCL管理用户和控制权限)
- mysql数据库迁移命令(MySQL数据迁移相关总结)
- mysql忽略大小写(MySQL大小写敏感的注意事项)
- mysql快速备份数据(如何使用Maxwell实时同步mysql数据)
- mysql数据库下载安装步骤(MySQL数据库压缩版本安装与配置详细教程)
- 对mysql性能优化的看法(聊聊MySQL的COUNT的性能,看看怎么最快?)
- mysql变量技巧(mysql用户变量与set语句示例详解)
- mysql权限管理详解(Mysql 用户权限管理实现)
- mysql主从同步复制原理(MYSQL数据库GTID实现主从复制实现超级方便)
- 最新版mysql 安装教程(新手如何安装Mysql亲测有效)
- navicatformysql怎么激活(一文读懂navicat for mysql基础知识)
- 怎么用docker中的mysql连接数据库(连接docker里面的mysql失败解决方法)
- 美国数十万加仑牛奶倒下水道怎么回事 原因曝光令人心痛(美国数十万加仑牛奶倒下水道怎么回事)
- 探索中国神秘文字(探索中国神秘文字)
- 重温《蜗居》 宋思明选中海藻为红颜知己,纯属巧合,与爱无关(宋思明选中海藻为红颜知己)
- 越南旅游攻略(越南旅游攻略自由行)
- 成都旅游攻略(成都旅游攻略自由行最佳线路)
- 给儿童吃什么最好(给儿童吃什么最好消化)
热门推荐
- python图书馆管理系统源码(python实现图书借阅系统)
- 自动化播放声音(video实现有声音自动播放的实现方法)
- nginx配置404状态码(解决Nginx 配置 proxy_pass 后 返回404问题)
- echarts组合柱状图(ECharts多图表联动功能的实现过程)
- python dict 操作(Python中dict和set的用法讲解)
- sql性能优化案例(SQL性能优化之定位网络性能问题的方法DEMO)
- asp.net MVC处理流程
- sqlserver索引实例(SQL Server索引的原理深入解析)
- 游标和sql语句区别(详解SQL游标的用法)
- svn中tree conflicts错误的解决方法
排行榜
- 1
- 2
- 3
- 4
- 5
- 6
- 7
- 8
- 9