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>
例項演示
下面給出幾個簡答的演示例項,分別介紹查詢指定的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="[email protected]",blog="http://spring.hhui.top",id=27
# 查詢
> select * from "1D".yhh
name: yhh
time blog email id name phone
---- ---- ----- -- ---- -----
1565693045801509796 http://spring.hhui.top [email protected] 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 key
或field key
請使用雙引號括起來 - 如果型別為string,請用單引號把過濾條件括起來
如下面這種寫法,否則可能會出現問題
select * from yhh where "name"='一灰灰'
複製程式碼
下一篇,我們將介紹查詢語句中常見的分組,排序,分頁等場景的使用姿勢
II. 其他
0. 系列博文
- 190730-Influx Sql系列教程七:delete 刪除資料
- 190729-Influx Sql系列教程六:insert 修改資料
- 190726-Influx Sql系列教程五:insert 新增資料
- 190723-Influx Sql系列教程四:series/point/tag/field
- 190721-Influx Sql系列教程三:measurement 表
- 190719-Influx Sql系列教程二:retention policy 儲存策略
- 190718-Influx Sql系列教程一:database 資料庫
- 190717-Influx Sql系列教程零:安裝及influx-cli使用姿勢介紹
- 190509-InfluxDb之時間戳顯示為日期格式
- 190506-InfluxDB之配置修改
- 190505-InfluxDB之許可權管理
- 180727-時序資料庫InfluxDB之備份和恢復策略
- 180726-InfluxDB基本概念小結
- 180725-InfluxDB-v1.6.0安裝和簡單使用小結
參考博文
1. 一灰灰Blog: liuyueyi.github.io/hexblog
一灰灰的個人部落格,記錄所有學習和工作中的博文,歡迎大家前去逛逛
2. 宣告
盡信書則不如,已上內容,純屬一家之言,因個人能力有限,難免有疏漏和錯誤之處,如發現bug或者有更好的建議,歡迎批評指正,不吝感激
- 微博地址: 小灰灰Blog
- QQ: 一灰灰/3302797840
3. 掃描關注
一灰灰blog