TABLES 视图¶
此 Information Schema 视图为指定(或当前)数据库中的每个表和视图显示一行,包括 INFORMATION_SCHEMA 架构本身中的视图。
- 另请参阅:
列¶
列名称 |
数据类型 |
描述 |
---|---|---|
TABLE_CATALOG |
TEXT |
表所属的数据库。 |
TABLE_SCHEMA |
TEXT |
表所属的架构。 |
TABLE_NAME |
TEXT |
表的名称。 |
TABLE_OWNER |
TEXT |
拥有表的角色的名称。 |
TABLE_TYPE |
TEXT |
指示表类型。有效值为 |
IS_TRANSIENT |
TEXT |
指示这是否为瞬态表。 |
CLUSTERING_KEY |
TEXT |
表的群集密钥。 |
ROW_COUNT |
NUMBER |
表中的行数。 |
BYTES |
NUMBER |
通过表的扫描访问的字节数。 |
RETENTION_TIME |
NUMBER |
为 Time Travel 保留历史数据的天数。 |
SELF_REFERENCING_COLUMN_NAME |
TEXT |
不适用于 Snowflake。 |
REFERENCE_GENERATION |
TEXT |
不适用于 Snowflake。 |
USER_DEFINED_TYPE_CATALOG |
TEXT |
不适用于 Snowflake。 |
USER_DEFINED_TYPE_SCHEMA |
TEXT |
不适用于 Snowflake。 |
USER_DEFINED_TYPE_NAME |
TEXT |
不适用于 Snowflake。 |
IS_INSERTABLE_INTO |
TEXT |
不适用于 Snowflake。 |
IS_TYPED |
TEXT |
不适用于 Snowflake。 |
COMMIT_ACTION |
TEXT |
不适用于 Snowflake。 |
CREATED |
TIMESTAMP_LTZ |
表的创建时间。 |
LAST_ALTERED |
TIMESTAMP_LTZ |
上次更改对象的日期和时间。请参阅 使用说明。 |
LAST_DDL |
TIMESTAMP_LTZ |
对表或视图执行的上次 DDL 操作的时间戳。 所有支持的表/视图 DDL 操作都会更新此字段:
所有 ALTER TABLE 操作都会更新此字段,包括设置或取消设置表参数(例如,COMMENT、DATA_RETENTION_TIME 等)以及对表列的更改 (ADD / MODIFY / RENAME / DROP)。 有关详细信息,请参阅 使用说明。 |
LAST_DDL_BY |
TEXT |
上次执行 DDL 操作的用户的当前用户名。如果用户已被删除,则显示 对于已删除的用户,您可以将 |
AUTO_CLUSTERING_ON |
BOOLEAN |
指示是否为表启用自动聚类。 |
COMMENT |
TEXT |
为表添加注释。 |
IS_TEMPORARY |
TEXT |
指示这是否为临时表。有效值为 |
IS_ICEBERG |
TEXT |
指示该表是否为 Iceberg 表。有效值为 |
IS_DYNAMIC |
TEXT |
指示该表是否为 动态表。有效值为 |
IS_IMMUTABLE |
TEXT |
指示该表是否使用 READ ONLY 属性创建。有效值为 |
使用说明¶
该视图仅显示会话的当前角色已被授予访问权限的对象。该视图不遵循 MANAGE GRANTS 权限,因此,当拥有被授予 MANAGE GRANTS 权限的角色同时执行视图和 SHOW 命令时,视图显示的信息可能比命令少。
此行为也适用于具有相应 SHOW 命令的其他账户级别 权限 和 Information Schema 视图。
查询表的总和(字节)并不表示总存储使用量,因为该数量不包括 Time Travel 和故障安全使用量。
该视图不包括已删除的表。要查看删除的表,请改用 SHOW TABLES。
要仅查看查询中的表,请使用 WHERE 子句进行筛选,例如:
... WHERE table_schema != 'INFORMATION_SCHEMA'
对对象执行以下操作时,将更新 LAST_ALTERED 列:
DDL 操作。
DML 操作(仅适用于表)。
由 Snowflake 对元数据执行的后台维护操作。
对于视图和表,请使用 LAST_DDL 列存储上次修改对象的时间。
LAST_DDL 列中的值更新如下:
创建表或视图时,LAST_DDL 时间戳与 CREATED 时间戳相同。
删除表或视图时,LAST_DDL 时间戳与 DELETED 时间戳相同。
最后的 DDL 数据不适用于在 添加 列之前执行的操作。一直到执行 DDL 操作为止,新的 DDL 字段都包含
null
。对于复制的数据库,仅针对主要数据库中的对象更新 LAST_DDL 和 LAST_DDL_BY 字段。故障转移后,LAST_DDL 和 LAST_DDL_BY 字段将更新,以便对新提升的主要数据库中的表和视图执行 DDL 操作。对于现在的次要数据库中的对象,这些字段将保持不变。
对于在刷新操作期间新创建的次要数据库中的对象,这些字段为
null
。
示例¶
检索 mydatabase
数据库中所有架构中所有表的大小(以字节为单位):
SELECT TABLE_SCHEMA,SUM(BYTES) FROM mydatabase.information_schema.tables GROUP BY TABLE_SCHEMA;