本文翻译自官网,官网地址:(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子句组成的。


一、SELECT子句

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

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

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


二、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子句中还支持正则表达式

关于引号

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

官方推荐,虽然有些标识符不是必须使用双引号,但是推荐对所有标识符使用双引号!


示例sql

  1. 从单个measurement中查询该measurement所有的tag和field

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

  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,如下:


4.InfluxDB-InfluxQL基础语法教程--基本select语句的更多相关文章

  1. 2.InfluxDB-InfluxQL基础语法教程--目录

    本文翻译自官网,官方文档地址:(https://docs.influxdata.com/influxdb/v1.7/query_language/data_exploration/) InfluxQL ...

  2. [SQL基础教程] 2-1 SELECT语句基础

    [SQL基础教程] 2-1 SELECT语句基础 列的查询 Syntax SELECT<列名>,..... FROM<表名>; SELECT col_1, col_2 FROM ...

  3. SQLite使用教程9 Select 语句

    http://www.runoob.com/sqlite/sqlite-select.html SQLite Select 语句 SQLite 的 SELECT 语句用于从 SQLite 数据库表中获 ...

  4. 基础语法-判断结构if语句

    基础语法-判断结构if语句 作者:尹正杰 版权声明:原创作品,谢绝转载!否则将追究法律责任. 一.单分支语句 /** * 判断结构if单分支语句 * @author 尹正杰 * */ public c ...

  5. 6.InfluxDB-InfluxQL基础语法教程--GROUP BY子句

    本文翻译自官网,官网地址:(https://docs.influxdata.com/influxdb/v1.7/query_language/data_exploration/) GROUP BY子句 ...

  6. 5.InfluxDB-InfluxQL基础语法教程--WHERE子句

    本文翻译自官网,官网地址:(https://docs.influxdata.com/influxdb/v1.7/query_language/data_exploration/) WHERE子句 语法 ...

  7. 前端开发利器 Emmet 介绍与基础语法教程

    在前端开发的过程中,编写 HTML.CSS 代码始终占据了很大的工作比例.特别是手动编写 HTML 代码,效率特别低下,因为需要敲打各种“尖括号”.闭合标签等.而现在 Emmet 就是为了提高代码编写 ...

  8. MySQL8.0关系数据库基础教程(三)-select语句详解

    1 查询指定字段 在 employee 表找出所有员工的姓名.性别和电子邮箱. SELECT 表示查询,随后列出需要返回的字段,字段间逗号分隔 FROM 表示要从哪个表中进行查询 分号为语句结束符 这 ...

  9. JavaSE入门学习6:Java基础语法之运算符和语句(上)

    继续接着上篇:JavaSE入门学习5:Java基础语法(一)来看Java的基础语法. 五运算符 运算符是一种"功能"符号,用以通知Java进行相关的运算.比方.我们须要将变量age ...

随机推荐

  1. 谈谈你对OOM的理解?

    (1)整体架构 (1)ByteBuffer使用native方法,直接在堆外分配内存. 当堆外内存(也即本地物理内存)不够时,就会抛出这个异常     ----GC Direct buffer memo ...

  2. Vuex简介

    一. 什么是Vuex?   Vuex Vuex是一个专门为Vue.js应用程序开发的状态管理模式, 它采用集中式存储管理所有组件的公共状态, 并以相应的规则保证状态以一种可预测的方式发生变化. Vue ...

  3. luoguP4113 [HEOI2012]采花

    经典颜色问题推荐博文 https://www.cnblogs.com/tyner/p/11519506.html https://www.cnblogs.com/tyner/p/11616770.ht ...

  4. luoguP3071 [USACO13JAN]座位Seating

    https://www.luogu.org/problem/P3071 AC代码: https://www.luogu.org/blog/user33426/solution-p3071 莫名其妙RE ...

  5. Linux shell 判断字符串为空等常用命令

    1.判断字符串为空 if [ -z "$str" ]; then echo "empty string" fi 2.判断文件是否存在 if [ -f /home ...

  6. 201871010116-祁英红《面向对象程序设计(java)》第6-7周学习总结

    项目 内容 <面向对象程序设计(java)> https://home.cnblogs.com/u/nwnu-daizh/ 这个作业的要求在哪里 https://www.cnblogs.c ...

  7. [C4] Andrew Ng - Improving Deep Neural Networks: Hyperparameter tuning, Regularization and Optimization

    About this Course This course will teach you the "magic" of getting deep learning to work ...

  8. 第十 构建Web内容的技术

    第十章 构建Web内容的技术 一.HTML HTML(HyperText Markup Language,超文本标记语言)是为了发送Web 上的超文本(Hypertext)而开发的标记语言.超文本是一 ...

  9. 【oracle】update

  10. EM-高斯混合模型

    EM-高斯混合模型 认识 前面为了直观认识 EM 算法, 用的"扔硬币"的案例, 是为了简化和直观, 而稍微偏应用和深入一点是高斯模型分类,这样一个话题. 就好比我们现在有一堆的数 ...