Influx Sql系列教程八:query数据查询基本篇

前面几篇介绍了InfluxDB的添加,删除修改数据,接下来进入查询篇,掌握必定的SQL知识对于理解本篇博文有更好的帮助,下面在介绍查询的基础操做的同时,也会给出InfluxSql与SQL之间的一些差异git

在开始以前,先看一下供查询的数据github

> show measurements
name: measurements
name
----
yhh
> select * from yhh
name: yhh
time                age blog                 id name phone
----                --- ----                 -- ---- -----
1563889538654374538 26  http://blog.hhui.top 10 一灰灰
1563889547738266214 30  http://blog.hhui.top 11 一灰灰
1563889704754695002 30  http://blog.hhui.top 11 一灰灰2
1563889723440000821 30  http://blog.hhui.top 11 一灰灰3 110
> show tag keys from yhh
name: yhh
tagKey
------
name
phone

1. 基本查询

基本查询语法以下spring

SELECT <field_key>[,<field_key>,<tag_key>] FROM <measurement_name>[,<measurement_name>]

上面的语法中,划分了select和from两块sql

select语句数据库

  • select * : 表示查询全部的field和tag对应的值
  • select field_key: 表示查询特定的field对应的值
  • select tag_key: 表示查询的特定的tag对应的值
  • SELECT "<field_key>"::field,"<tag_key>"::tag: 注意::field::tag用来限定这个数据的类型为tag或者是field

from语句express

from后面须要接上measurement,表示从这个mesaurement中查询数据bash

  • FROM <measurement_name> 从指定的measurement中获取数据
  • FROM <measurement_name>,<measurement_name> 从多个measurement中获取数据
  • FROM <database_name>.<retention_policy_name>.<measurement_name> 从某个数据库中某个保留策略中查询measurement中的数据

实例演示学习

下面给出几个简答的演示实例,分别介绍查询指定的field/tag的方式ui

> select age from yhh;
name: yhh
time                age
----                ---
1563889538654374538 26
1563889547738266214 30
1563889704754695002 30
1563889723440000821 30
> select "age"::field, "name"::tag from yhh;
name: yhh
time                age name
----                --- ----
1563889538654374538 26  一灰灰
1563889547738266214 30  一灰灰
1563889704754695002 30  一灰灰2
1563889723440000821 30  一灰灰3

2. 保留策略数据查询

上面的定义中,说明了能够查询指定保留策略中的数据,下面演示一下应该如何实现code

# 建立保留策略
> create retention policy "1D" duration 1d on test
# 插入一条数据
> insert into "1D" yhh,name=二灰,phone=119 email="bangzewu@126.com",blog="http://spring.hhui.top",id=27
# 查询
> select * from "1D".yhh
name: yhh
time                blog                   email            id name phone
----                ----                   -----            -- ---- -----
1565693045801509796 http://spring.hhui.top bangzewu@126.com 27 二灰   119
>

查询语句和通常的select没有什么特别的区别,惟一须要注意的是measurement前面须要加上保留策略

3. Where语句

前面的查询主要是限定须要获取的数据,而咱们实际的场景中,更多的是查询某类知足条件的数据,也就是常见的SQL中加上where查询条件限定

语法以下

SELECT_clause FROM_clause WHERE <conditional_expression> [(AND|OR) <conditional_expression> [...]]

主要看一下where后面的条件表达式,由于influxdb中的数据能够划分为两类,这两种不一样的类型,在构建查询语句的时候,会有一些区别

field查询条件

咱们已知field的类型有四种:string|int|boolean|float,因此它支持的操做符有

操做符 说明
= 相等
<>, != 不相同
>, >= 大于,大于等于
<, <= 小于,小于等于

tag查询条件

在influxdb中tag都是string类型,会创建索引,因此基于tag的查询效率通常来说是优于field查询的,它支持的操做符为

操做符 说明
= 相等
<>, != 不相同

在influxdb中没有in查询,不一样的查询条件可使用and/or来链接,表示同时知足or一个知足便可,下满给出几个简单的实例

# 根据field进行查询
> select * from yhh where age=26
name: yhh
time                age blog                 id name phone
----                --- ----                 -- ---- -----
1563889538654374538 26  http://blog.hhui.top 10 一灰灰
# 根据tag进行查询
> select * from yhh where phone!=''
name: yhh
time                age blog                 id name phone
----                --- ----                 -- ---- -----
1563889723440000821 30  http://blog.hhui.top 11 一灰灰3 110
# 简单的运算查询
> select * from yhh where age + 2>30
name: yhh
time                age blog                 id name phone
----                --- ----                 -- ---- -----
1563889547738266214 30  http://blog.hhui.top 11 一灰灰
1563889704754695002 30  http://blog.hhui.top 11 一灰灰2
1563889723440000821 30  http://blog.hhui.top 11 一灰灰3 110
> select * from yhh where "name"='一灰灰'
name: yhh
time                age blog                 id name phone
----                --- ----                 -- ---- -----
1563889538654374538 26  http://blog.hhui.top 10 一灰灰
1563889547738266214 30  http://blog.hhui.top 11 一灰灰

4. 小结

这一小节内容,介绍的是最基础的inflxudb查询操做,和咱们了解的SQL基本上没有太多的区别,可能惟一须要注意的就是制定保留策略查询时,须要使用"<retention policy>".<measurement>的方式跟在from语句以后

其次一个须要注意的时,查询语句中,推荐的写法是

  • tag keyfield key请使用双引号括起来
  • 若是类型为string,请用单引号把过滤条件括起来

以下面这种写法,不然可能会出现问题

select * from yhh where "name"='一灰灰'

下一篇,咱们将介绍查询语句中常见的分组,排序,分页等场景的使用姿式

II. 其余

0. 系列博文

参考博文

1. 一灰灰Bloghttps://liuyueyi.github.io/hexblog

一灰灰的我的博客,记录全部学习和工做中的博文,欢迎你们前去逛逛

2. 声明

尽信书则不如,已上内容,纯属一家之言,因我的能力有限,不免有疏漏和错误之处,如发现bug或者有更好的建议,欢迎批评指正,不吝感激

3. 扫描关注

一灰灰blog
image

相关文章
相关标签/搜索