名称 | 描述 | SQL |
对阿里云资源计数 | 返回有权限的资源总数。 | -- 使用COUNT()函数返回资源的数量。
-- resources表存储了资源属性的相关信息。
SELECT
COUNT(*)
FROM
resources;
|
对ECS实例资源计数 | 返回有权限的ECS实例总数。 | -- 可以将"resource_type = 'ACS::ECS::Instance'"更改为其他查询条件,表示对特定范围内的资源计数。
-- 在控制台左侧的资源属性列表中单击资源类型或属性时,会自动创建查询条件并填充到查询语句中。
SELECT
COUNT(*)
FROM
resources
WHERE
resource_type = 'ACS::ECS::Instance';
|
列出所有阿里云资源 | 返回所有有权限的资源,并按照资源类型和资源ID排列。 | -- 本例展示了资源的所有核心属性,可以添加或删除属性,您也可以通过设置properties来展示资源扩展属性。
-- 使用“ORDER BY”指定排序规则。可以使用DESC、ASC更改排列顺序。未指定顺序时,默认为升序("ASC")。
-- 使用resource_type、resource_id的排序方式可以加速查询。
SELECT
resource_id,
resource_name,
region_id,
zone_id,
resource_type,
account_id,
create_time,
resource_group_id,
tags,
ip_addresses,
vpc_id,
v_switch_id
FROM
resources
ORDER BY
resource_type,
resource_id
LIMIT
1000 OFFSET 0;
|
列出所有ECS实例资源 | 返回所有有权限的ECS实例资源,并按资源名称升序排列。 | -- 可以更改排序依据的属性和排列顺序。未指定顺序时,默认为升序("ASC")。
-- 选择排序依据的属性时,建议避开有空值的属性或进行特殊处理,否则这部分资源无法被正确排序。
SELECT
resource_id,
resource_name,
region_id,
zone_id,
resource_type,
account_id,
create_time,
resource_group_id,
tags,
ip_addresses,
vpc_id,
v_switch_id
FROM
resources
WHERE
resource_type = 'ACS::ECS::Instance'
ORDER BY
resource_name
LIMIT
1000 OFFSET 0;
|
查询按资源类型和资源ID排序的前20个资源 | 按照资源类型和资源ID排列,并返回前20个资源的列表。 | -- "LIMIT" 用于指定返回结果的最大数量。范围是1~1000。如果未指定,默认返回最多1000条记录。
-- 如果排序列的属性值存在重复,多次执行查询可能会返回不一致的结果,可以添加排序列保证结果的一致性。
SELECT
resource_id,
resource_name,
region_id,
resource_type,
account_id
FROM
resources
ORDER BY
resource_type,
resource_id
LIMIT
20;
|
查询按资源类型和资源ID排序的第11到第30个资源 | 按照资源类型和资源ID排列,并返回第11到第30个资源的列表。 | -- 使用 "LIMIT" 和"OFFSET"可以限制返回结果的范围。"LIMIT" 用于指定返回结果的最大数量,"OFFSET" 用于指定从哪个位置开始返回结果。
-- 这个机制可以用于分页查询。每次查询时,通过指定 "LIMIT" 限制返回结果的数量,通过增加 "OFFSET" 获取下一页的结果。为了保证在一致的列表中截取连续的数据,应使用 "ORDER BY" 指定排序方式。
-- 如果排序列的属性值存在重复,多次执行查询可能会返回不一致的结果,可以添加排序列保证结果的一致性。
SELECT
resource_id,
resource_name,
region_id,
zone_id,
resource_type,
account_id,
create_time,
resource_group_id,
tags,
ip_addresses,
vpc_id,
v_switch_id
FROM
resources
ORDER BY
resource_type,
resource_id
LIMIT
20 OFFSET 10;
|
列出不同资源类型的资源数量 | 列出不同资源类型的资源数量,并按照数量降序排列。 | -- 使用 "GROUP BY" 可以按照某个属性对资源进行分组归类。
-- 如果查询结果返回两列,一列为字符串,另一列为数值,可以通过图表的方式查看结果。
SELECT
resource_type,
COUNT(*) AS cnt
FROM
resources
GROUP BY
resource_type
ORDER BY
cnt DESC;
|
列出不同地域的资源数量 | 列出不同地域的资源数量,并按照数量降序排列。 | -- 如果查询结果返回两列,一列为字符串,另一列为数值,可以通过图表的方式查看结果。
SELECT
region_id,
COUNT(*) AS cnt
FROM
resources
GROUP BY
region_id
ORDER BY
cnt DESC;
|
列出不同资源组的资源数量 | 列出不同资源组的资源数量,并按照数量降序排列。 | --如果查询结果返回两列,一列为字符串,另一列为数值,可以通过图表的方式查看结果。
SELECT
CASE
WHEN resource_group_id IS NULL THEN '未接入资源组'
ELSE resource_group_id
END AS resource_group_id,
COUNT(*) AS cnt
FROM
resources
GROUP BY
resource_group_id
ORDER BY
cnt DESC;
|
列出指定资源组下的不同资源类型的资源数量 | 列出指定资源组下的所有资源类型的资源数量,并按照数量降序排列。 | -- 如果查询结果返回两列,一列为字符串,另一列为数值,可以通过图表的方式查看结果。
SELECT
resource_type,
COUNT(*) AS cnt
FROM
resources
WHERE
resource_group_id = 'rg-xxx'
GROUP BY
resource_type
ORDER BY
cnt DESC;
|
列出ECS产品所有类型的资源 | 列出ECS产品所有类型的资源,并按照资源类型和创建时间排序。 | --本例使用 "ACS::ECS::%" 来匹配以 "ACS::ECS::" 开头的资源类型code。查询结果将包括 ECS 产品中所有类型的资源。
--本例首先对资源按照资源类型进行升序排列,然后在每个资源类型内部,再按照创建时间进行升序排列。
SELECT
resource_id,
resource_name,
region_id,
zone_id,
resource_type,
account_id,
create_time,
resource_group_id,
tags,
ip_addresses,
vpc_id,
v_switch_id
FROM
resources
WHERE
resource_type LIKE 'ACS::ECS::%'
ORDER BY
resource_type,
create_time;
|
列出包含指定标签的资源 | 列出包含指定标签键和值的所有资源。 | -- 可以将指定的标签键 "KEY" 和标签值 "VALUE" 更改为任何所需的其他标签键和值。
SELECT
resource_id,
resource_name,
region_id,
zone_id,
resource_type,
account_id,
create_time,
resource_group_id,
tags,
ip_addresses,
vpc_id,
v_switch_id
FROM
resources
WHERE
tags ->> 'KEY' = 'VALUE';
|
列出标签键包含“test”的资源 | 列出标签键包含“test”的所有资源。 | --本例使用了一个嵌套查询。内部查询首先执行,并将查询结果作为一个临时表。外部查询在这个临时表中进行查询。
--使用JSONB_OBJECT_KEYS()函数可以将map类型的对象展开,返回键的集合。可以对展开后的集合进行查询。
--本例使用%test%的模式匹配所有包含"test"的标签键,不论其前后有什么其他字符。
SELECT
*
FROM
(
SELECT
resource_id,
resource_name,
region_id,
zone_id,
resource_type,
account_id,
create_time,
resource_group_id,
tags,
ip_addresses,
vpc_id,
v_switch_id,
JSONB_OBJECT_KEYS(tags) AS tag_key
FROM
resources
) AS r
WHERE
r.tag_key LIKE '%test%'
ORDER BY
r.resource_type,
r.resource_id;
|
列出包括指定IP的资源 | 列出包括指定IP的所有资源。 | -- 使用JSONB_ARRAY_ELEMENTS_TEXT()函数可以将数组展开为text值的集合。可以对展开后的集合进行查询。
SELECT
*
FROM
(
SELECT
resource_id,
resource_name,
region_id,
zone_id,
resource_type,
account_id,
create_time,
resource_group_id,
tags,
ip_addresses,
vpc_id,
v_switch_id,
JSONB_ARRAY_ELEMENTS_TEXT(ip_addresses) AS ip
FROM
resources
) AS r
WHERE
r.ip = 'xxx.xxx.xxx.xxx'
ORDER BY
r.resource_type,
r.resource_id;
|
列出指定时间后创建的ECS实例 | 列出指定时间后创建的ECS实例资源。 | -- 使用AND连接多个查询条件,将返回同时满足这些查询条件的资源
SELECT
resource_id,
resource_name,
region_id,
zone_id,
resource_type,
account_id,
create_time,
resource_group_id,
tags,
ip_addresses,
vpc_id,
v_switch_id
FROM
resources
WHERE
resource_type = 'ACS::ECS::Instance'
AND create_time > '2023-08-07'
ORDER BY
create_time;
|
列出30天内创建的资源 | 列出30天内创建的资源列表,并按照创建时间升序排列。 | -- 可以在查询条件中进行计算,以实现精确范围内的查询。
SELECT
resource_id,
resource_name,
region_id,
zone_id,
resource_type,
account_id,
create_time,
resource_group_id,
tags,
ip_addresses,
vpc_id,
v_switch_id
FROM
resources
WHERE
create_time > TO_CHAR(NOW() - interval '30 day', 'YYYY-MM-DD')
ORDER BY
create_time;
|
列出指定VPC下挂载的资源 | 列出指定VPC下挂载的资源列表,并按照资源类型升序排列。 | SELECT
resource_id,
resource_name,
region_id,
zone_id,
resource_type,
account_id,
create_time,
resource_group_id,
tags,
ip_addresses,
vpc_id,
v_switch_id
FROM
resources
WHERE
vpc_id = 'vpc-xxx'
ORDER BY
resource_type,
resource_id;
|
列出ECS实例的扩展属性 | 列出ECS实例的状态、内存、规格、计费方式等扩展属性。 | --可以通过对不同类型资源的properties字段进行查询,以获取资源的扩展属性信息。
--在控制台左侧的资源属性列表中点击资源类型或属性时,会自动创建查询条件并填充到查询语句中。
--使用CASE子句,可以对属性的不同取值进行定义,使查询结果更易于理解。
SELECT
resource_id,
resource_name,
properties ->> 'Status' AS "实例状态",
properties ->> 'InstanceNetworkType' AS "网络类型",
properties ->> 'Memory' AS "内存",
properties ->> 'Cpu' AS Cpu,
properties ->> 'InstanceType' AS "规格",
CASE
properties ->> 'InstanceChargeType'
WHEN 'PrePaid' THEN '包年包月'
WHEN 'PostPaid' THEN '按量付费'
ELSE properties ->> 'InstanceChargeType'
END AS "付费方式",
region_id,
zone_id,
resource_type,
account_id,
create_time,
resource_group_id,
ip_addresses
FROM
resources
WHERE
resource_type = 'ACS::ECS::Instance'
ORDER BY
resource_id;
|
列出按照操作系统属性分类的ECS实例数量 | 列出按照操作系统属性分类的ECS实例数量。 | --如果查询结果返回两列,一列为字符串,另一列为数值,可以通过图表的方式查看结果。
SELECT
properties ->> 'OSType' AS OSType,
COUNT(*) AS num
FROM
resources
WHERE
resource_type = 'ACS::ECS::Instance'
GROUP BY
properties ->> 'OSType';
|
列出已停止的ECS实例 | 列出当前已停止的ECS实例资源。 | --使用CASE子句,可以对属性的不同取值进行定义,使查询结果更易于理解。
--使用CONCAT()函数,可以将多个属性字段合并展示在一列中,方便查看。本例使用“/”作为分隔符。
SELECT
resource_id,
resource_name,
CONCAT(region_id, '/', zone_id) AS "地域/可用区",
CASE
properties ->> 'Status'
WHEN 'Pending' THEN '创建中'
WHEN 'Running' THEN '运行中'
WHEN 'Starting' THEN '启动中'
WHEN 'Stopping' THEN '停止中'
WHEN 'Stopped' THEN '已停止'
END AS "状态",
CONCAT(
properties ->> 'Cpu',
' vCPU ',
(properties -> 'Memory') :: int / 1024,
' GiB ',
properties ->> 'InstanceType'
) AS "配置",
properties ->> 'InstanceChargeType' AS "付费方式",
resource_type,
account_id,
create_time,
resource_group_id,
tags,
ip_addresses,
properties
FROM
resources
WHERE
resource_type = 'ACS::ECS::Instance'
AND properties ->> 'Status' = 'Stopped'
ORDER BY
resource_id;
|
列出ECS实例关联的磁盘 | 列出ECS实例关联的磁盘资源。 | -- 使用JOIN关键字可以对多个表进行联合查询,根据连接条件和筛选条件获取所需的查询结果。
SELECT
a.resource_type AS resource_type_disk,
b.resource_type AS resource_type_instance,
a.resource_id AS disk_id,
a.region_id AS instance_region_id,
b.resource_id AS instance_id,
b.region_id AS disk_region_id
FROM
resources a
LEFT JOIN resources b ON a.properties ->> 'InstanceId' = b.resource_id
WHERE
a.resource_type = 'ACS::ECS::Disk'
AND b.resource_type = 'ACS::ECS::Instance';
|
列出待挂载的磁盘 | 列出待挂载状态下的磁盘资源。 | SELECT
resource_id,
resource_name,
properties ->> 'Status' AS "云盘状态",
CASE
properties ->> 'Type'
WHEN 'system' THEN '系统盘'
WHEN 'data' THEN '数据盘'
ELSE properties ->> 'Type'
END AS "云盘类型",
properties ->> 'DiskChargeType' AS "云盘计费类型",
CASE
properties ->> 'Portable'
WHEN 'true' THEN '支持'
ELSE '不支持'
END AS "可卸载",
CASE
properties ->> 'DeleteWithInstance'
WHEN 'true' THEN '云盘随实例释放自动快照不随云盘释放'
ELSE '云盘不随实例释放自动快照不随云盘释放'
END AS "释放行为",
region_id,
zone_id,
resource_type,
account_id,
create_time,
resource_group_id,
tags
FROM
resources
WHERE
properties ->> 'Status' = 'Available'
AND resource_type = 'ACS::ECS::Disk'
ORDER BY
resource_id;
|
列出磁盘容量大于40G的ECS磁盘资源 | 列出磁盘容量大于40G的ECS磁盘资源,并按照磁盘容量排序。 | SELECT
resource_id,
resource_name,
region_id,
zone_id,
resource_type,
account_id,
create_time,
resource_group_id,
tags,
ip_addresses,
vpc_id,
v_switch_id,
(properties ->> 'Size') :: int AS disk_size
FROM
resources
WHERE
resource_type = 'ACS::ECS::Disk'
AND (properties ->> 'Size') :: int > 40
order by
disk_size;
|
列出即将到期的预付费RDS实例 | 列出即将到期的预付费RDS实例资源。 | --本例将到期时间小于30天的资源定义为即将到期的资源,可以根据实际需求对此条件进行调整。
--使用TO_TIMESTAMP()函数,可以将表示时间的字符串转换为格式化的时间戳,以便进行相关的运算。
SELECT
*
FROM
(
SELECT
resource_id,
resource_name,
account_id,
resource_type,
region_id,
zone_id,
create_time,
to_timestamp(
(properties ->> 'ExpireTime') :: varchar,
'YYYY-MM-DD HH24:MI:SS'
) AS "过期时间",
properties ->> 'DBInstanceStatus' AS "实例状态",
properties ->> 'DBInstanceType' AS "实例类型",
CONCAT(
properties ->> 'Engine',
' ',
properties ->> 'EngineVersion'
) AS "数据库类型",
vpc_id,
tags
FROM
resources
WHERE
resource_type = 'ACS::RDS::DBInstance'
and properties ->> 'PayType' = 'Prepaid'
order by
create_time
) AS t
WHERE
t."过期时间" < NOW() + interval '30 day'
ORDER BY
t.resource_id;
|