本文翻译自官网,官网地址:(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. 用Toad for Oracle创建数据库表空间和用户

    打开Toad, 1,菜单栏Session—>new Connection….打开如下窗口: 2,进入之后,菜单DatebaseàSechema  Brower...找到Table Space(表 ...

  2. Python的 json 、 hashlib 、 Base64 模块

    json模块 简介 全称"JavaScript Object Notation" (JavaScript对象表示法)它是一种基于文本,独立于语言的轻量级数据交换格式 以易于让人阅读 ...

  3. AtCoder - 2565(思维+暴力)

    题意 https://vjudge.net/problem/AtCoder-2565 将一个H*W的矩形切成三份,每一次只能水平或者垂直切,问最大块的面积-最小快的面积 的最小值是多少. 思路 先枚举 ...

  4. vue操作select获取option值

    如何实时的获取你选中的值 只用@change件事 @change="changeProduct($event)" 动态传递参数 vue操作select获取option的ID值 如果 ...

  5. vue+node+elementUI实现分页功能

    第1===>收集当前页码 和 每页显示条数 第2==>发送ajax请求页码 和 每页显示条数发送给后端 第3===>接收后端返回的数据总条数 total 和 当前页码的数据 data ...

  6. 26.Java基础_状态修饰符

    状态修饰符: final(最终态),static(静态) final关键字: 修饰类: 修饰局部变量: static关键字: 修饰变量:   修饰函数:

  7. golang 服务端和客户端(二)

    1.golang服务端 package main import( "net/http" ) func main(){ //注册处理函数,用户连接,自动调用指定的处理函数 http. ...

  8. CSP2019-S1 游记

    估分 83 分qwq 上午照常起床,先跑去学校考了一场化学(黑人问号),然后8:30从学校开溜. 8:50到考点,发现淮安S组只有两个考场... 在考点外遇到一群 金湖中学 的. 不怕了,有水军帮忙垫 ...

  9. 2019 SDN阅读作业

    2019 SDN阅读作业 1.为什么需要SDN?SDN特点? 答:因为随着网络规模的不断扩大,封闭的网络设备内置了过多的复杂协议,增加了运营商定制优化网络的难度,科研人员无法在真实环境中规模部署新协议 ...

  10. RPC调用和HTTP调用的区别

    很长时间以来都没有怎么好好搞清楚RPC(即Remote Procedure Call,远程过程调用)和HTTP调用的区别,不都是写一个服务然后在客户端调用么?这里请允许我迷之一笑~Naive!本文简单 ...