Influx Sql系列教程八:query數據查詢基本篇


前面幾篇介紹了InfluxDB的添加,刪除修改數據,接下來進入查詢篇,掌握一定的SQL知識對於理解本篇博文有更好的幫助,下面在介紹查詢的基礎操作的同時,也會給出InfluxSql與SQL之間的一些差別

在開始之前,先看一下供查詢的數據

> 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. 基本查詢

基本查詢語法如下

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

上面的語法中,划分了select和from兩塊

select語句

  • select * : 表示查詢所有的field和tag對應的值
  • select field_key: 表示查詢特定的field對應的值
  • select tag_key: 表示查詢的特定的tag對應的值
  • SELECT "<field_key>"::field,"<tag_key>"::tag: 注意::field::tag用來限定這個數據的類型為tag或者是field

from語句

from后面需要接上measurement,表示從這個mesaurement中查詢數據

  • FROM <measurement_name> 從指定的measurement中獲取數據
  • FROM <measurement_name>,<measurement_name> 從多個measurement中獲取數據
  • FROM <database_name>.<retention_policy_name>.<measurement_name> 從某個數據庫中某個保留策略中查詢measurement中的數據

實例演示

下面給出幾個簡答的演示實例,分別介紹查詢指定的field/tag的方式

> 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. 保留策略數據查詢

上面的定義中,說明了可以查詢指定保留策略中的數據,下面演示一下應該如何實現

# 創建保留策略
> 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


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM