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子句組成的。


一、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,如下:



免責聲明!

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



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