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

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

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

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

基本查詢語法以下spring

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

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

select語句數據庫

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

from語句express

from後面須要接上measurement,表示從這個mesaurement中查詢數據bash

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

實例演示學習

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

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

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

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

相關文章
相關標籤/搜索