information_schema
中的视图是符合 SQL 标准的视图,用于描述数据库的目录条目。这些视图可以过滤以获取特定列或表的信息。DuckDB 的实现基于 PostgreSQL 的信息模式。
列 |
描述 |
类型 |
示例 |
character_set_catalog |
当前未实现 – 始终为 NULL 。 |
VARCHAR |
NULL |
character_set_schema |
当前未实现 – 始终为 NULL 。 |
VARCHAR |
NULL |
character_set_name |
字符集名称,目前实现为显示数据库编码的名称。 |
VARCHAR |
'UTF8' |
character_repertoire |
字符集曲目,如果编码为 UTF8 则显示 UCS ,否则仅显示编码名称。 |
VARCHAR |
'UCS' |
form_of_use |
字符编码形式,与数据库编码相同。 |
VARCHAR |
'UTF8' |
default_collate_catalog |
包含默认排序规则的数据库名称(始终为当前数据库)。 |
VARCHAR |
'my_db' |
default_collate_schema |
包含默认排序规则的模式名称。 |
VARCHAR |
'pg_catalog' |
default_collate_name |
默认排序规则的名称。 |
VARCHAR |
'ucs_basic' |
描述列目录信息的视图是 information_schema.columns
。它列出了数据库中存在的列,并具有以下布局
列 |
描述 |
类型 |
示例 |
table_catalog |
包含表的数据库名称(始终为当前数据库)。 |
VARCHAR |
'my_db' |
table_schema |
包含表的模式名称。 |
VARCHAR |
'main' |
表名 (table_name) |
表的名称。 |
VARCHAR |
'widgets' |
列名 (column_name) |
列的名称。 |
VARCHAR |
'price' |
ordinal_position |
列在表中的序数位置(计数从 1 开始)。 |
INTEGER |
5 |
column_default |
列的默认表达式。 |
VARCHAR |
1.99 |
is_nullable |
如果列可能可空,则为 YES ,如果已知不可空,则为 NO 。 |
VARCHAR |
'YES' |
data_type |
列的数据类型。 |
VARCHAR |
'DECIMAL(18, 2)' |
character_maximum_length |
如果 data_type 标识字符或位字符串类型,则为声明的最大长度;对于所有其他数据类型或未声明最大长度的情况,则为 NULL 。 |
INTEGER |
255 |
character_octet_length |
如果 data_type 标识字符类型,则为数据值的最大可能八位组(字节)长度;对于所有其他数据类型,则为 NULL 。最大八位组长度取决于声明的字符最大长度(见上文)和字符编码。 |
INTEGER |
1073741824 |
numeric_precision |
如果 data_type 标识数值类型,则此列包含此列类型的(声明或隐式)精度。精度表示有效数字的数量。对于所有其他数据类型,此列为 NULL 。 |
INTEGER |
18 |
numeric_scale |
如果 data_type 标识数值类型,则此列包含此列类型的(声明或隐式)刻度。精度表示有效数字的数量。对于所有其他数据类型,此列为 NULL 。 |
INTEGER |
2 |
datetime_precision |
如果 data_type 标识日期、时间、时间戳或间隔类型,则此列包含此列类型的(声明或隐式)秒小数精度,即秒值中小数点后保留的小数位数。DuckDB 当前不支持秒小数。对于所有其他数据类型,此列为 NULL 。 |
INTEGER |
0 |
此视图描述了当前数据库中被某些约束使用的所有列。对于检查约束,此视图标识在检查表达式中使用的列。对于非空约束,此视图标识定义约束的列。对于外键约束,此视图标识外键引用的列。对于唯一或主键约束,此视图标识受约束的列。
列 |
描述 |
类型 |
示例 |
table_catalog |
包含表且该表包含被某些约束使用的列的数据库名称(始终为当前数据库) |
VARCHAR |
'my_db' |
table_schema |
包含表且该表包含被某些约束使用的列的模式名称 |
VARCHAR |
'main' |
表名 (table_name) |
包含被某些约束使用的列的表的名称 |
VARCHAR |
'widgets' |
列名 (column_name) |
被某些约束使用的列的名称 |
VARCHAR |
'price' |
constraint_catalog |
包含约束的数据库名称(始终为当前数据库) |
VARCHAR |
'my_db' |
constraint_schema |
包含约束的模式名称 |
VARCHAR |
'main' |
constraint_name |
约束名称 |
VARCHAR |
'exam_id_students_id_fkey' |
列 |
描述 |
类型 |
示例 |
constraint_catalog |
包含约束的数据库名称(始终为当前数据库)。 |
VARCHAR |
'my_db' |
constraint_schema |
包含约束的模式名称。 |
VARCHAR |
'main' |
constraint_name |
约束名称。 |
VARCHAR |
'exams_exam_id_fkey' |
table_catalog |
包含表且该表包含受此约束限制的列的数据库名称(始终为当前数据库)。 |
VARCHAR |
'my_db' |
table_schema |
包含表且该表包含受此约束限制的列的模式名称。 |
VARCHAR |
'main' |
表名 (table_name) |
包含受此约束限制的列的表的名称。 |
VARCHAR |
'exams' |
列名 (column_name) |
受此约束限制的列的名称。 |
VARCHAR |
'exam_id' |
ordinal_position |
列在约束键中的序数位置(计数从 1 开始)。 |
INTEGER |
1 |
position_in_unique_constraint |
对于外键约束,引用列在其唯一约束中的序数位置(计数从 1 开始);否则为 NULL 。 |
INTEGER |
1 |
列 |
描述 |
类型 |
示例 |
constraint_catalog |
包含约束的数据库名称(始终为当前数据库)。 |
VARCHAR |
'my_db' |
constraint_schema |
包含约束的模式名称。 |
VARCHAR |
main |
constraint_name |
约束名称。 |
VARCHAR |
exam_id_students_id_fkey |
unique_constraint_catalog |
包含外键约束所引用的唯一约束或主键约束的数据库名称。 |
VARCHAR |
'my_db' |
unique_constraint_schema |
包含外键约束所引用的唯一约束或主键约束的模式名称。 |
VARCHAR |
'main' |
unique_constraint_name |
外键约束所引用的唯一约束或主键约束的名称。 |
VARCHAR |
'students_id_pkey' |
match_option |
外键约束的匹配选项。始终为 NONE 。 |
VARCHAR |
NONE |
update_rule |
外键约束的更新规则。始终为 NO ACTION 。 |
VARCHAR |
NO ACTION |
delete_rule |
外键约束的删除规则。始终为 NO ACTION 。 |
VARCHAR |
NO ACTION |
顶层目录视图是 information_schema.schemata
。它列出了数据库中存在的目录和模式,并具有以下布局
列 |
描述 |
类型 |
示例 |
catalog_name |
模式所在的数据库名称。 |
VARCHAR |
'my_db' |
schema_name |
模式名称。 |
VARCHAR |
'main' |
schema_owner |
模式所有者的名称。尚未实现。 |
VARCHAR |
'duckdb' |
default_character_set_catalog |
适用于 DuckDB 中不可用的功能。 |
VARCHAR |
NULL |
default_character_set_schema |
适用于 DuckDB 中不可用的功能。 |
VARCHAR |
NULL |
default_character_set_name |
适用于 DuckDB 中不可用的功能。 |
VARCHAR |
NULL |
sql_path |
适用于 DuckDB 中不可用的功能。 |
VARCHAR |
NULL |
描述表和视图目录信息的视图是 information_schema.tables
。它列出了数据库中存在的表,并具有以下布局
列 |
描述 |
类型 |
示例 |
table_catalog |
表或视图所属的目录。 |
VARCHAR |
'my_db' |
table_schema |
表或视图所属的模式。 |
VARCHAR |
'main' |
表名 (table_name) |
表或视图的名称。 |
VARCHAR |
'widgets' |
table_type |
表的类型。以下之一:BASE TABLE 、LOCAL TEMPORARY 、VIEW 。 |
VARCHAR |
'BASE TABLE' |
self_referencing_column_name |
适用于 DuckDB 中不可用的功能。 |
VARCHAR |
NULL |
reference_generation |
适用于 DuckDB 中不可用的功能。 |
VARCHAR |
NULL |
user_defined_type_catalog |
如果表是类型化表,则为包含基础数据类型的数据库名称(始终为当前数据库),否则为 NULL 。当前未实现。 |
VARCHAR |
NULL |
user_defined_type_schema |
如果表是类型化表,则为包含基础数据类型的模式名称,否则为 NULL 。当前未实现。 |
VARCHAR |
NULL |
user_defined_type_name |
如果表是类型化表,则为基础数据类型的名称,否则为 NULL 。当前未实现。 |
VARCHAR |
NULL |
is_insertable_into |
如果表可插入,则为 YES ,否则为 NO (基本表始终可插入,视图不一定)。 |
VARCHAR |
'YES' |
is_typed |
如果表是类型化表,则为 YES ,否则为 NO 。 |
VARCHAR |
'NO' |
commit_action |
尚未实现。 |
VARCHAR |
'NO' |
列 |
描述 |
类型 |
示例 |
constraint_catalog |
包含约束的数据库名称(始终为当前数据库)。 |
VARCHAR |
'my_db' |
constraint_schema |
包含约束的模式名称。 |
VARCHAR |
'main' |
constraint_name |
约束名称。 |
VARCHAR |
'exams_exam_id_fkey' |
table_catalog |
包含表的数据库名称(始终为当前数据库)。 |
VARCHAR |
'my_db' |
table_schema |
包含表的模式名称。 |
VARCHAR |
'main' |
表名 (table_name) |
表的名称。 |
VARCHAR |
'exams' |
constraint_type |
约束类型:CHECK 、FOREIGN KEY 、PRIMARY KEY 或 UNIQUE 。 |
VARCHAR |
'FOREIGN KEY' |
is_deferrable |
如果约束是可延迟的,则为 YES ,否则为 NO 。 |
VARCHAR |
'NO' |
initially_deferred |
如果约束是可延迟的且初始时已延迟,则为 YES ,否则为 NO 。 |
VARCHAR |
'NO' |
enforced |
始终为 YES 。 |
VARCHAR |
'YES' |
nulls_distinct |
如果约束是唯一约束,则如果约束将 NULL 值视为不同则为 YES ,如果视为不不同则为 NO ;对于其他类型的约束,则为 NULL 。 |
VARCHAR |
'YES' |
还提供了几个函数来查看数据库中配置的目录和模式的详细信息。
函数 |
描述 |
示例 |
结果 |
current_catalog() |
返回当前活动的目录名称。默认值为 memory。 |
current_catalog() |
'memory' |
current_schema() |
返回当前活动的模式名称。默认值为 main。 |
current_schema() |
'main' |
current_schemas(boolean) |
返回模式列表。传递参数 true 以包含隐式模式。 |
current_schemas(true) |
['temp', 'main', 'pg_catalog'] |