信息 schema
信息 schema 由一组视图组成,其中包含当前数据库中定义的对象的相关信息。
表
information_schema.tables
视图包含当前数据库中定义的所有表、视图、sink 和物化视图。
note
物化视图是 RisingWave 的信息 schema 特有的,不包括在 PostgreSQL 的信息 schema 中。
information_schema.tables
视图包含以下列。
列 | 类型 | 描述 |
---|---|---|
table_catalog | varchar | 当前数据库的名称 |
table_schema | varchar | 包含表、视图或物化视图的 schema 的名称。用户创建对象的默认 schema 是 public 。 |
table_name | varchar | 表、视图或物化视图的名称 |
table_type | varchar | 表、视图或物化视图的类型。用户定义的表的类型为 BASE TABLE ,非物化视图的视图的类型为 VIEW ,物化视图的类型为 MATERIALIZED VIEW ,系统表的类型为 SYSTEM TABLE 。 |
is_insertable_into | varchar | 如果表或视图是可插入的,则为 YES ,否则为 NO 。用户定义的表始终是可插入的,而视图和物化视图不一定可插入。 |
视图
information_schema.views
视图包含数据库中视图的信息。
它包含以下列。
列 | 类型 | 类型 |
---|---|---|
table_catalog | varchar | 当前数据库的名称 |
table_schema | varchar | 包含视图的 schema 的名称 |
table_name | varchar | 视图的名称 |
view_definition | varchar | 定义视图的 SQL 语句 |
临时限制
拥有对 information_schema.views
的访问权限的用户可能可以访问所有视图,这可能存在安全风险。我们正在努力解决这一限制。修复完成后,此消息将被删除。
列
information_schema.columns
视图包含数据库中所有表、视图和物化视图的列信息。
列 | 类型 | 描述 |
---|---|---|
table_catalog | varchar | 当前数据库的名称 |
table_schema | varchar | 包含表、sink、视图或物化视图的 schema 名称。用户创建对象的默认 schema 是 public 。 |
table_name | varchar | 表、sink、视图或物化视图的名称 |
column_name | varchar | 列的名称 |
ordinal_position | int32 | 列在表中的序数位置(计数从 1 开始) |
is_nullable | varchar | 如果列可能为可空,则为 YES ;如果列不为空,则为 NO 。 |
data_type | varchar | 列的数据类型 |
如何使用信息 schema 视图?
可以使用各种信息 schema 视图来确定数据库中表、sink、视图和物化视图的构成。
例如,可以查询当前数据库中所有表、视图和物化视图的名称和类型:
SELECT table_name, table_type
FROM information_schema.tables;
查询名为 taxi_trip
的表、sink、视图或物化视图中的所有列:
SELECT column_name
FROM information_schema.columns
WHERE table_name='taxi_trip';
要查找包含名为 trip_id
的列的表、sink、视图和物化视图:
SELECT table_name
FROM information_schema.columns
WHERE column_name='trip_id';