4.InfluxDB-InfluxQL基础语法教程--基本select语句

本文翻译自官网,官网地址:(https://docs.influxdata.com/influxdb/v1.7/query_language/data_exploration/)
基本语法以下:正则表达式

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

可见,select语句是由SELECT子句和FROM子句组成的。sql


1、SELECT子句

在SELECT字句中,有以下几种形式,分别用于查询各类指定的数据:数据库

语法 意思
SELECT * 查询measurement中全部的fields和 tags。示例sql:<kbd>select * from h2o_feet;</kbd>
SELECT "<field_key>" 查询指定的一个field。示例sql:<kbd>select water_level from h2o_feet;</kbd>
SELECT "<field_key>","<field_key>" 查询多个field。示例sql:<kbd>select "level description", "water_level" from h2o_feet;</kbd>
SELECT "<field_key>","<tag_key>"  查询指定的field和tag。示例sql:<kbd>select water_level,location from h2o_feet;</kbd> :在SELECT子句中,若是包含了tag,那么此时就必须指定至少一个field。好比以下的sql就是错误的,由于它只select了一个tag,而没有field:<kbd>select location from h2o_feet;</kbd>
SELECT "<field_key>"::field,"<tag_key>"::tag 跟上面同样,也是查询指定的field和tag。 ::[field | tag]语法用来指定标识符的类型,由于有时候tag和field有可能同名,所以用 ::[field | tag]语法来加以区分。

在SELECT子句中,还包含数学运算聚合函数基本的类型转换正则表达式等express


2、FROM子句

FROM子句用于指定要查询的measurement,支持的语法以下:函数

语法 意思
FROM <measurement_name> 从指定measurement中查询数据。这种方式会从当前DB、默认retention policy的measurement中查询数据。
FROM <measurement_name>,<measurement_name> 从多个measurement中查询数据
FROM <database_name>.<retention_policy_name>.<measurement_name> 从指定DB、指定retention policy的measurement中查询数据
FROM <database_name>..<measurement_name> 从指定DB、默认retention policy的measurement 中查询数据

FROM子句中还支持正则表达式spa

关于引号

若是measurement、tag、field等的标识符除了[A-z,0-9,_]以外,还有其余字符,或者标识符是keyword关键字,那么在引用的时候必须加上双引号。好比在表 h2o_feet 中,"level description"就是一个带有空格的field,如此一来在查询到的时候,就必须加上双引号了。以下图,在查询level description时若不加双引号,则会报错。
翻译

<font color=DarkRed size=4>官方推荐,虽然有些标识符不是必须使用双引号,可是推荐对全部标识符使用双引号!</font>code


示例sql

  1. 从单个measurement中查询该measurement全部的tag和field
    blog

  2. 从单个measurement中查询指定的tag和field flux

  3. 从单个measurement中查询指定的tag和field,并指定它们的标识类型
    这种方式通常使用较少。

  4. 从measurement中查询全部的field

    The SELECT clause supports combining the * syntax with the :: syntax.

  5. 在查询时进行基本的数学运算
    InfluxDB遵循标准的四则运算规则。更多操做详见Mathematical Operators

  6. 同时从多个measurement中查询它们的全部数据

  7. 从一个全路径的measurement中查询数据

    可见,所谓的全路径,其实就是指在FROM子句中,指定了measurement所在的DB,以及要查询数据所在的retention policy。

  8. 查询指定数据库中的measurement的数据

    The query selects data in the NOAA_water_database, the DEFAULT retention policy, and the h2o_feet measurement. The .. indicates the DEFAULT retention policy for the specified database.


关于SELECT语句的常见疑问

在SELECT 子句中,必需要有至少一个field key!若是在SELECT子句中只有一个或多个tag key,那么该查询会返回空。这是由InfluxDB底层存储数据的方式所致使的结果。
示例


上面的查询结果返回为空,是由于在它的SELECT子句中,只查询了location这个tag key。
若是想要查询跟location这个tag key有关的任何数据,则在SELECT字句中必须至少要包含一个field key,以下:

相关文章
相关标签/搜索