
# 语法概览
ResourceQL能够提供类似SQL的服务来灵活地查询您的云资源。
```
SELECT name, created, updated FROM resources WHERE region_id = 'regionid1'
```
语句不区分大小写，即'SELECT COUNT(\*)' 和'select CoUnT(\*)'没有区别。用单引号表示字符串字面量。
ResourceQL支持以下7种数据类型。其中数组类型用'\[\]'来索引某个位置（标号从'1'开始）。
表1支持的数据类型 
| 类型名 | 类型英文         |
|:---|:---|
| 整型  | int/integer  |
| 浮点型 | float/double |
| 布尔型 | boolean      |
| 数组型 | array        |
| 字符串 | string       |
| 字典型 | object       |
| 时刻型 | date         |
   
您的所有云资源构成了一张表，表名固定为resources。您的资源聚合器下的资源构成了一张表，表名固定为aggregator_resources。表中每一行记录了一条数据，每一列约定如下：
表2resources参数含义 
| 资源参数               | 参数类型                        | 含义       |
|:---|:---|:---|
| id                 | String                      | 资源ID。    |
| name               | String                      | 资源名称。    |
| provider           | String                      | 云服务名称。   |
| type               | String                      | 资源类型。    |
| region_id          | String                      | 区域ID。    |
| project_id         | String                      | 项目ID。    |
| ep_id              | String                      | 企业项目ID。  |
| checksum           | String                      | 资源详情校验码。 |
| created            | Date                        | 资源创建时间。  |
| updated            | Date                        | 资源更新时间。  |
| provisioning_state | String                      | 资源操作状态。  |
| tag                | Array(Map\<String,String\>) | 资源Tag。   |
| properties         | Map\<String,Object\>        | 资源详细属性。  |
   
资源聚合器表aggregator_resources则额外支持资源参数domain_id，类型为String，含义为账号ID。
不同类型的资源可以用'provider'和'type'来区分，它们对应的'properties'字段的结构也就不一样。 例如ecs的cloudservers包含字段flavor，而vpc的publicips包含字段bandwidth。
各个资源类型properties内支持的字段以及类型可以通过配置审计控制台和API接口两种方式查看，具体请参见[如何获取各对接云服务上报Config的资源属性？](https://support.huaweicloud.com/rms_faq/rms_08_0100.html#section6)。
对于某个具体的资源类型，我们可以用'.'嵌套的方式去查询'properties'下的具体字段。例如，弹性云服务器的'properties'里有'status'和'addresses'字段，可以用如下语句查询正在运行的弹性云服务器及其地址。
```
SELECT name, created, updated, properties.addresses FROM resources 
WHERE provider = 'ecs' AND type = 'cloudservers' AND properties.status = 'ACTIVE'
```
