4.InfluxDB-InfluxQL基礎語法教程--基本select語句

本文翻譯自官網,官網地址:(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子句組成的。sql


1、SELECT子句

在SELECT字句中,有以下幾種形式,分別用於查詢各類指定的數據:數據庫

語法 意思
SELECT * 查詢measurement中全部的fields和 tags。示例sql:<kbd>select * from h2o_feet;</kbd>
SELECT "<field_key>" 查詢指定的一個field。示例sql:<kbd>select water_level from h2o_feet;</kbd>
SELECT "<field_key>","<field_key>" 查詢多個field。示例sql:<kbd>select "level description", "water_level" from h2o_feet;</kbd>
SELECT "<field_key>","<tag_key>"  查詢指定的field和tag。示例sql:<kbd>select water_level,location from h2o_feet;</kbd> :在SELECT子句中,若是包含了tag,那麼此時就必須指定至少一個field。好比以下的sql就是錯誤的,由於它只select了一個tag,而沒有field:<kbd>select location from h2o_feet;</kbd>
SELECT "<field_key>"::field,"<tag_key>"::tag 跟上面同樣,也是查詢指定的field和tag。 ::[field | tag]語法用來指定標識符的類型,由於有時候tag和field有可能同名,所以用 ::[field | tag]語法來加以區分。

在SELECT子句中,還包含數學運算聚合函數基本的類型轉換正則表達式等express


2、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子句中還支持正則表達式spa

關於引號

若是measurement、tag、field等的標識符除了[A-z,0-9,_]以外,還有其餘字符,或者標識符是keyword關鍵字,那麼在引用的時候必須加上雙引號。好比在表 h2o_feet 中,"level description"就是一個帶有空格的field,如此一來在查詢到的時候,就必須加上雙引號了。以下圖,在查詢level description時若不加雙引號,則會報錯。
翻譯

<font color=DarkRed size=4>官方推薦,雖然有些標識符不是必須使用雙引號,可是推薦對全部標識符使用雙引號!</font>code


示例sql

  1. 從單個measurement中查詢該measurement全部的tag和field
    blog

  2. 從單個measurement中查詢指定的tag和field flux

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

相關文章
相關標籤/搜索