KEY_COLUMN_USAGE 视图
KEY_COLUMN_USAGE
视图包含 TABLE_CONSTRAINTS
中的表的各列,这些表作为键受到 PRIMARY KEY
和 FOREIGN KEY
限制条件制约。
架构
INFORMATION_SCHEMA.KEY_COLUMN_USAGE
视图具有如下架构:
列名 | 数据类型 | 价值 |
---|---|---|
|
|
限制条件项目名称。 |
|
|
限制条件数据集名称。 |
|
|
限制条件名称。 |
|
|
受限表的项目名称。 |
|
|
受限表的数据集名称。 |
|
|
受限表的名称。 |
|
|
受限列的名称。 |
|
|
列在限制条件键内的序号位置(从 1 开始)。 |
|
|
对于外键,这是列在主键限制条件内的序号位置(从 1 开始)。对于主键限制条件,此值为 NULL 。 |
范围和语法
针对此视图的查询必须包括数据集限定符。对于包含数据集限定符的查询,您必须拥有数据集的权限。如需了解详情,请参阅语法。下表展示了此视图的区域和资源范围:
视图名称 | 资源范围 | 区域范围 |
---|---|---|
[PROJECT_ID.]DATASET_ID.INFORMATION_SCHEMA.KEY_COLUMN_USAGE; |
数据集级 | 数据集位置 |
- 可选:
PROJECT_ID
:您的 Google Cloud 项目的 ID。如果未指定,则使用默认项目。
对于包含数据集限定符的查询,您必须拥有数据集的权限。对于包含区域限定符的查询,您必须拥有项目的权限。
示例
示例 1:
以下查询展示了数据集中单个表的限制条件:
SELECT * FROM PROJECT_ID.DATASET.INFORMATION_SCHEMA.KEY_COLUMN_USAGE WHERE table_name = TABLE;
请替换以下内容:
PROJECT_ID
:可选。您的 Cloud 项目的名称。如果未指定,则此命令会使用默认项目。DATASET
:您的数据集的名称。TABLE
:表格的名称。
与上述查询相反,以下查询展示了单个数据集中所有表的键列使用情况。
SELECT * FROM PROJECT_ID.DATASET.INFORMATION_SCHEMA.KEY_COLUMN_USAGE;
如果表或数据集没有任何限制条件,则查询结果如下所示:
+-----------------------------+ | There is no data to display | +-----------------------------+
示例 2:
以下 DDL 语句会创建一个主键表和一个外键表。
CREATE TABLE composite_pk (x int64, y string, primary key (x, y) NOT ENFORCED);
CREATE TABLE table composite_fk (x int64, y string, z string, primary key (x, y) NOT ENFORCED, CONSTRAINT composite_fk foreign key (z, x) REFERENCES composite_pk (y, x) NOT ENFORCED);
如果使用示例 1 中的语句查询,查询结果将类似于以下内容。请注意,示例结果中不包含 CONSTRAINT_CATALOG
、CONSTRAINT_SCHEMA
和重复列。
+---------------------------+--------------+-------------+------------------+-------------------------------+ | CONSTRAINT_NAME | TABLE_NAME | COLUMN_NAME | ORDINAL_POSITION | POSITION_IN_UNIQUE_CONSTRAINT | +---------------------------+--------------+-------------+------------------+-------------------------------+ | composite_pk.pk$ | composite_pk | x | 1 | NULL | | composite_pk.pk$ | composite_pk | y | 2 | NULL | | composite_fk.pk$ | composite_fk | x | 1 | NULL | | composite_fk.pk$ | composite_fk | y | 2 | NULL | | composite_fk.composite_fk | composite_fk | z | 1 | 2 | | composite_fk.composite_fk | composite_fk | x | 2 | 1 | +---------------------------+--------------+-------------+------------------+-------------------------------+