名稱 | 描述 | SQL |
對阿里云資源計數(shù) | 返回有權限的資源總數(shù)。 | -- 使用COUNT()函數(shù)返回資源的數(shù)量。
-- resources表存儲了資源屬性的相關信息。
SELECT
COUNT(*)
FROM
resources;
|
對ECS實例資源計數(shù) | 返回有權限的ECS實例總數(shù)。 | -- 可以將"resource_type = 'ACS::ECS::Instance'"更改為其他查詢條件,表示對特定范圍內(nèi)的資源計數(shù)。
-- 在控制臺左側(cè)的資源屬性列表中單擊資源類型或?qū)傩詴r,會自動創(chuàng)建查詢條件并填充到查詢語句中。
SELECT
COUNT(*)
FROM
resources
WHERE
resource_type = 'ACS::ECS::Instance';
|
列出所有阿里云資源 | 返回所有有權限的資源,并按照資源類型和資源ID排列。 | -- 本例展示了資源的所有核心屬性,可以添加或刪除屬性,您也可以通過設置properties來展示資源擴展屬性。
-- 使用“ORDER BY”指定排序規(guī)則。可以使用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實例資源,并按資源名稱升序排列。 | -- 可以更改排序依據(jù)的屬性和排列順序。未指定順序時,默認為升序("ASC")。
-- 選擇排序依據(jù)的屬性時,建議避開有空值的屬性或進行特殊處理,否則這部分資源無法被正確排序。
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" 用于指定返回結果的最大數(shù)量。范圍是1~1000。如果未指定,默認返回最多1000條記錄。
-- 如果排序列的屬性值存在重復,多次執(zhí)行查詢可能會返回不一致的結果,可以添加排序列保證結果的一致性。
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" 用于指定返回結果的最大數(shù)量,"OFFSET" 用于指定從哪個位置開始返回結果。
-- 這個機制可以用于分頁查詢。每次查詢時,通過指定 "LIMIT" 限制返回結果的數(shù)量,通過增加 "OFFSET" 獲取下一頁的結果。為了保證在一致的列表中截取連續(xù)的數(shù)據(jù),應使用 "ORDER BY" 指定排序方式。
-- 如果排序列的屬性值存在重復,多次執(zhí)行查詢可能會返回不一致的結果,可以添加排序列保證結果的一致性。
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;
|
列出不同資源類型的資源數(shù)量 | 列出不同資源類型的資源數(shù)量,并按照數(shù)量降序排列。 | -- 使用 "GROUP BY" 可以按照某個屬性對資源進行分組歸類。
-- 如果查詢結果返回兩列,一列為字符串,另一列為數(shù)值,可以通過圖表的方式查看結果。
SELECT
resource_type,
COUNT(*) AS cnt
FROM
resources
GROUP BY
resource_type
ORDER BY
cnt DESC;
|
列出不同地域的資源數(shù)量 | 列出不同地域的資源數(shù)量,并按照數(shù)量降序排列。 | -- 如果查詢結果返回兩列,一列為字符串,另一列為數(shù)值,可以通過圖表的方式查看結果。
SELECT
region_id,
COUNT(*) AS cnt
FROM
resources
GROUP BY
region_id
ORDER BY
cnt DESC;
|
列出不同資源組的資源數(shù)量 | 列出不同資源組的資源數(shù)量,并按照數(shù)量降序排列。 | --如果查詢結果返回兩列,一列為字符串,另一列為數(shù)值,可以通過圖表的方式查看結果。
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;
|
列出指定資源組下的不同資源類型的資源數(shù)量 | 列出指定資源組下的所有資源類型的資源數(shù)量,并按照數(shù)量降序排列。 | -- 如果查詢結果返回兩列,一列為字符串,另一列為數(shù)值,可以通過圖表的方式查看結果。
SELECT
resource_type,
COUNT(*) AS cnt
FROM
resources
WHERE
resource_group_id = 'rg-xxx'
GROUP BY
resource_type
ORDER BY
cnt DESC;
|
列出ECS產(chǎn)品所有類型的資源 | 列出ECS產(chǎn)品所有類型的資源,并按照資源類型和創(chuàng)建時間排序。 | --本例使用 "ACS::ECS::%" 來匹配以 "ACS::ECS::" 開頭的資源類型code。查詢結果將包括 ECS 產(chǎn)品中所有類型的資源。
--本例首先對資源按照資源類型進行升序排列,然后在每個資源類型內(nèi)部,再按照創(chuàng)建時間進行升序排列。
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”的所有資源。 | --本例使用了一個嵌套查詢。內(nèi)部查詢首先執(zhí)行,并將查詢結果作為一個臨時表。外部查詢在這個臨時表中進行查詢。
--使用JSONB_OBJECT_KEYS()函數(shù)可以將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()函數(shù)可以將數(shù)組展開為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;
|
列出指定時間后創(chuàng)建的ECS實例 | 列出指定時間后創(chuàng)建的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天內(nèi)創(chuàng)建的資源 | 列出30天內(nèi)創(chuàng)建的資源列表,并按照創(chuàng)建時間升序排列。 | -- 可以在查詢條件中進行計算,以實現(xiàn)精確范圍內(nèi)的查詢。
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實例的狀態(tài)、內(nèi)存、規(guī)格、計費方式等擴展屬性。 | --可以通過對不同類型資源的properties字段進行查詢,以獲取資源的擴展屬性信息。
--在控制臺左側(cè)的資源屬性列表中點擊資源類型或?qū)傩詴r,會自動創(chuàng)建查詢條件并填充到查詢語句中。
--使用CASE子句,可以對屬性的不同取值進行定義,使查詢結果更易于理解。
SELECT
resource_id,
resource_name,
properties ->> 'Status' AS "實例狀態(tài)",
properties ->> 'InstanceNetworkType' AS "網(wǎng)絡類型",
properties ->> 'Memory' AS "內(nèi)存",
properties ->> 'Cpu' AS Cpu,
properties ->> 'InstanceType' AS "規(guī)格",
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;
|
列出按照操作系統(tǒng)屬性分類的ECS實例數(shù)量 | 列出按照操作系統(tǒng)屬性分類的ECS實例數(shù)量。 | --如果查詢結果返回兩列,一列為字符串,另一列為數(shù)值,可以通過圖表的方式查看結果。
SELECT
properties ->> 'OSType' AS OSType,
COUNT(*) AS num
FROM
resources
WHERE
resource_type = 'ACS::ECS::Instance'
GROUP BY
properties ->> 'OSType';
|
列出已停止的ECS實例 | 列出當前已停止的ECS實例資源。 | --使用CASE子句,可以對屬性的不同取值進行定義,使查詢結果更易于理解。
--使用CONCAT()函數(shù),可以將多個屬性字段合并展示在一列中,方便查看。本例使用“/”作為分隔符。
SELECT
resource_id,
resource_name,
CONCAT(region_id, '/', zone_id) AS "地域/可用區(qū)",
CASE
properties ->> 'Status'
WHEN 'Pending' THEN '創(chuàng)建中'
WHEN 'Running' THEN '運行中'
WHEN 'Starting' THEN '啟動中'
WHEN 'Stopping' THEN '停止中'
WHEN 'Stopped' THEN '已停止'
END AS "狀態(tài)",
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實例關聯(lián)的磁盤 | 列出ECS實例關聯(lián)的磁盤資源。 | -- 使用JOIN關鍵字可以對多個表進行聯(lián)合查詢,根據(jù)連接條件和篩選條件獲取所需的查詢結果。
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';
|
列出待掛載的磁盤 | 列出待掛載狀態(tài)下的磁盤資源。 | SELECT
resource_id,
resource_name,
properties ->> 'Status' AS "云盤狀態(tài)",
CASE
properties ->> 'Type'
WHEN 'system' THEN '系統(tǒng)盤'
WHEN 'data' THEN '數(shù)據(jù)盤'
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天的資源定義為即將到期的資源,可以根據(jù)實際需求對此條件進行調(diào)整。
--使用TO_TIMESTAMP()函數(shù),可以將表示時間的字符串轉(zhuǎn)換為格式化的時間戳,以便進行相關的運算。
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 "實例狀態(tài)",
properties ->> 'DBInstanceType' AS "實例類型",
CONCAT(
properties ->> 'Engine',
' ',
properties ->> 'EngineVersion'
) AS "數(shù)據(jù)庫類型",
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;
|