本文翻譯自官網,官網地址:(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
在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
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
從單個measurement中查詢該measurement全部的tag和field
blog
從單個measurement中查詢指定的tag和field flux
從單個measurement中查詢指定的tag和field,並指定它們的標識類型
這種方式通常使用較少。
從measurement中查詢全部的field
The SELECT clause supports combining the * syntax with the :: syntax.
在查詢時進行基本的數學運算
InfluxDB遵循標準的四則運算規則。更多操做詳見Mathematical Operators。
同時從多個measurement中查詢它們的全部數據
從一個全路徑的measurement中查詢數據
可見,所謂的全路徑,其實就是指在FROM子句中,指定了measurement所在的DB,以及要查詢數據所在的retention policy。
查詢指定數據庫中的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 子句中,必需要有至少一個field key!若是在SELECT子句中只有一個或多個tag key,那麼該查詢會返回空。這是由InfluxDB底層存儲數據的方式所致使的結果。
示例:
上面的查詢結果返回爲空,是由於在它的SELECT子句中,只查詢了location這個tag key。
若是想要查詢跟location這個tag key有關的任何數據,則在SELECT字句中必須至少要包含一個field key,以下: