信息模式

信息模式由一组视图构成,它们包含定义在当前数据库中对象的信息。信息模式以 SQL 标准定义,因此能够被移植并且保持稳定 — 系统目录则不同,它们是与瀚高数据库相关的并且是为了实现的考虑而建模的。不过,信息模式视图不包含与瀚高数据库相关特性有关的信息。要咨询那些信息你需要查询系统目录或其他瀚高数据库-相关视图。

注意:
当在数据库中查询约束信息时,一个期望返回一行的标准兼容的查询可能返回多行。这是因为 SQL 标准要求约束名在一个模式中唯一,但是瀚高数据库并不强制这种限制。瀚高数据库自动产生的约束名避免在相同的模式中重复,但是用户能够指定这种重复的名称。这个问题可能在查询信息模式视图时出现,例如check_constraint_routine_usage、check_constraints、domain_constraints和 referential_constraints。一些其他视图也有相似的问题,但是它们包含了表名来帮助区分重复行,例如constraint_column_usage、 constraint_table_usage、table_constraints。

模式

信息模式本身是一个名为information_schema的模式。这个模式自动存在于所有数据库中。这个模式的拥有者是集簇中的初始数据库用户,并且该用户自然地拥有这个模式上的所有特权,包括删除它的能力(但是这样节省的空间是很小的)。

默认情况下,信息模式不在模式搜索路径中,因此你需要使用限定名访问其中的所有对象。因为信息模式中的某些对象的名称是可能出现在用户应用中的一般名称,如果你想把该信息模式放在路径中,你应该小心。

数据类型

信息模式视图的列使用定义在信息模式中的特殊数据类型。它们被定义为普通内建类型之上的简单域。你不应在信息模式之外使用这些类型进行工作,但是如果你的应用从信息模式中进行选择,那你的应用就必须准备好面对它们。

这些类型是:

cardinal_number

一种非负整数。

character_data

一种字符串(没有指定最大长度)。

sql_identifier

一种字符串。这种类型被用于 SQL 标识符,类型character_data被用于任何其他类型的文本数据。

time_stamp

在类型timestamp with time zone之上的一个域。

yes_or_no

一种字符串域,它包含YES或NO。这被用来在信息模式中表示布尔(真/假)(信息模式是在类型boolean被加到 SQL 标准之前被发明的,因此这个惯例是用来使信息模式向后兼容)。

信息模式中的每一列都是这五种类型之一。

information_schema_catalog_name

information_schema_catalog_name是一个表,它总是包含一行和一列,其中包含了当前数据库(SQL 术语中的当前目录)的名字。

名称 数据类型 描述
catalog_name sql_identifier 包含这个信息模式的数据库名

: 表 5.1 information_schema_catalog_name列

administrable_role_authorizations

视图administrable_role_authorizations标识当前用户对其有管理选项的所有角色。

名称 数据类型 描述
grantee sql_identifier 被授予这个角色的成员关系的角色名(可以是当前用户,或者在嵌套角色成员关系情况下的一个不同角色)
role_name sql_identifier 角色名
is_grantable yes_or_no 总是 YES

: 表 5.2 administrable_role_authorizations列

applicable_roles

视图applicable_roles当前用户可以使用其特权的所有角色。这意味着有某种角色授权链从当前用户到讨论中的角色。当前用户本身也是一个可应用的角色。可应用的角色的集合通常被用于权限检查。

名称 数据类型 描述
grantee sql_identifier 被授予这个角色的成员关系的角色名(可以是当前用户,或者在嵌套角色成员关系情况下的一个不同角色)
role_name sql_identifier 一个角色的名字
is_grantable yes_or_no YES表示被授予者在该角色上有管理选项,NO表示没有管理选项

: 表 5.3 applicable_roles列

attributes

视图attributes包含数据库中定义的组合数据类型的属性的有关信息(注意该视图并不给出有关表列的信息,表列有时候在 Highgo上下文环境中也被称为属性)。只有当前用户能够访问(由于是拥有者获得的权限或是在类型上有某些特权)的那些属性会被显示。

名称 数据类型 描述
udt_catalog sql_identifier 包含该数据类型的数据库名(总是当前数据库)
udt_schema sql_identifier 包含该数据类型的模式名
udt_name sql_identifier 数据类型名
attribute_name sql_identifier 属性名
ordinal_position cardinal_number 属性在该数据类型内部的顺序位置(从 1 开始计算)
attribute_default character_data 该属性的默认表达式
is_nullable yes_or_no 如果该属性是可能为空的,值为YES,否则为NO
data_type character_data 如果该属性是一个内建类 型,此列值为该属性的数据类型;如果该属性是某种数组,此列值为ARRAY(在这种情况下,见视图element_types);其他情况,此列值为USERDEFINED(在这种情况下,该类型在attribute_udt_name和相关列中标识)。
character_maximum_length cardinal_number 如果data_type标识一个字符或位串类型,这里是声明的最大长度;如果没有声明最大长度,则对于所有其他数据类型为空。
character_octet_length cardinal_number 如果data_type标识一个字符类型,这里是一个数据的最大可能长度(以字节计);对其他所有数据类型为空。最大字节长度取决于声明的字符最大长度(见上文)和服务器编码。
character_set_catalog sql_identifier 应用于一个瀚高数据库中不可用的特性
character_set_schema sql_identifier 应用于一个瀚高数据库中不可用的特性
character_set_name sql_identifier 应用于一个瀚高数据库中不可用的特性
collation_catalog sql_identifier 包含此属性排序规则的数据库名(总是当前数据库),如果默认或者该属性的数据类型不可排序则为空
collation_schema sql_identifier 包含此属性排序规则的模式名,如果默认或者该属性的数据类型不可排序则为空
collation_name sql_identifier 该属性排序规则的名称,如果默认或者该属性的数据类型不可排序则为空
numeric_precision cardinal_number 如果data_type标识一种数字类型,这列包含这个属性类型的(声明的或隐式的)精度。精度指示了有效位数。它可以按照列numeric_precision_radix中指定的被表示为十进制(基于 10)或二进制(基于 2)。对于所有其他数据类型,这一列为空。
numeric_precision_radix cardinal_number 如果data_type标识一种数字类型,这一列指示numeric_precision和numeric_scale列中的值是基于什么来表示。该值为 2 或 10。对于所有其他数据类型,这一列为空。
numeric_scale cardinal_number 如果data_type标识一种准确数字类型,这列包含这个属性类型的(声明的或隐式的)比例。比例指示了有效位数。它可以按照列numeric_precision_radix中指定的被表示为十进制(基于 10)或二进制(基于 2)。对于所有其他数据类型,这一列为空。
datetime_precision cardinal_number 如果data_type标识一种日期、时间、时间戳或时间间隔类型,这一列包含这个属性类型的(声明的或隐式的)分数秒的精度,也就是秒值的小数点后的十进制位数。对于所有其他数据类型,这一列为空。
interval_type character_data 如果data_type标识一种时间间隔类型,这一列包含时间间隔为这个属性包括哪些域的声明,例如YEAR TO MONTH、DAY TO SECOND等等。如果没有指定域限制(也就是该时间间隔接受所有域),并且对于所有其他数据类型,这个域为空。
interval_precision cardinal_number 应用于一个瀚高数据库中不可用的特性(关于时间间隔类型属性的分数秒精度可见datetime_precision)
attribute_udt_catalog sql_identifier 属性数据类型被定义的数据名(总是当前数据库)
attribute_udt_schema sql_identifier 属性数据类型被定义的模式名
attribute_udt_name sql_identifier 属性数据类型的名称
scope_schema sql_identifier 应用于一个瀚高数据库中不可用的特性
scope_name sql_identifier 应用于一个瀚高数据库中不可用的特性
maximum_cardinality cardinal_number 总是空,因为数组在瀚高数据库中总是有无限制的最大势
dtd_identifier sql_identifier 该列的数据类型描述符的一个标识符,在从属于该表的数据类型标识符之中唯一。这主要用于与这类标识符的其他实例进行连接(该标识符的指定格式没有被定义并且不保证在未来的版本中保持相同)。
is_derived_reference_attribute yes_or_no 应用于一个瀚高数据库中不可用的特性

: 表 5.4 attributes列

关于某些列的详情,参见第 5.17 节之下的一个相似结构的视图。

character_sets

视图character_sets标识当前数据库中可用的字符集。因为瀚高数据库不支持在同一个数据库中有多个字符集,这个视图只显示一个字符集,它就是数据库编码。

注意下列术语在 SQL 标准中是怎样使用的:

字元集(character repertoire)

字符的一个抽象集合,例如UNICODE、UCS或LATIN1。它不作为一个 SQL 对象显示,但是在这个视图中可见。

字符编码形式(character encoding form)

某种字元集的一种编码。大部分较老的字元集只使用一种编码形式,并且因此它们没有独立的名字(例如LATIN1就是一种适用于LATIN1字元集的编码形式)。但是 Unicode 就有几种编码形式如UTF8、UTF16等等(并非全部被瀚高数据库支持)。编码形式不作为一个 SQL 对象显示,但是在这个视图中可见。

字符集(character set)

一个标识一种字元集、一种字符编码以及一种默认排序规则的命名 SQL 对象。一个预定义的字符集通常具有和一种编码形式相同的名字,但是用户可以定义其他名字。例如,字符集UTF8通常标识字元集UCS、编码形式UTF8以及某种默认排序规则。

你可以把瀚高数据库中的一种”编码”想成一个字符集或是一种字符编码形式。它们将具有相同的名字,并且在一个数据库中只能用其中一个。

名称 数据类型 描述
character_set_catalog sql_identifier 当前字符集并未被实现为模式对象,因此这一列为空。
character_set_schema sql_identifier 当前字符集并未被实现为模式对象,因此这一列为空。
character_set_name sql_identifier 该字符集的名字,当前实现为显示该数据库编码的名字
character_repertoire sql_identifier 字元集,如果编码为UTF8则显示UCS,否则只显示编码名称
form_of_use sql_identifier 字符编码形式,与数据库编码相同
default_collate_catalog sql_identifier 包含该默认排序规则的数据库名(如果任意排序规则被标识,总是当前数据库)
default_collate_schema sql_identifier 包含该默认排序规则的模式名
default_collate_name sql_identifier 默认排序规则的名字。该默认排序规则被标识为匹配当前数据库的COLLATE和CTYPE设置的排序规则。如果没有那种排序规则,那么这一列和相关模式以及目录列为空。

: 表 5.5 character_sets列

check_constraint_routine_usage

视图check_constraint_routine_usage标识被检查约束琐事使用的例程(函数和过程)。只有被一个当前启用的角色所拥有的例程才被显示。

名称 数据类型 描述
constraint_catalog sql_identifier 包含该约束的数据库名(总是当前数据库)
constraint_schema sql_identifier 包含该约束的模式名
constraint_name sql_identifier 约束名
specific_catalog sql_identifier 包含该函数的数据库名(总当前数据库)
specific_schema sql_identifier 包含该函数的模式名
specific_name sql_identifier 该函数的“指定名称”。

: 表 5.6 check_constraint_routine_usage列

check_constraints

视图check_constraints包含所有检查约束,不管是定义在一个表上的还是定义在一个域上的,它们被一个当前启用的角色所拥有(表或域的拥有者就是约束的拥有者)。

名称 数据类型 描述
constraint_catalog sql_identifier 包含该约束的数据库名(总是当前数据库)
constraint_schema sql_identifier 包含该约束的模式名
constraint_name sql_identifier 约束名
specific_catalog sql_identifier 包含该函数的数据库名(总当前数据库)
specific_schema sql_identifier 包含该函数的模式名
specific_name sql_identifier 该函数的“指定名称”。

: 表 5.7 check_constraints列

collations

视图collations包含在当前数据库中可用的排序规则。

名称 数据类型 描述
constraint_catalog sql_identifier 包含该排序规则的数据库名(总是当前数据库)
constraint_schema sql_identifier 包含该排序规则的模式名
constraint_name sql_identifier 默认排序规则的名称
pad_attribute character_data 总是NO PAD(另一种选择PAD SPACE没有被瀚高数据库支持)

: 表 5.8 collations列

collation_character_set_applicability

视图collation_character_set_applicability标识可用的排序规则适用于哪些字符集。在瀚高数据库中,每个数据库中只有一种字符集(解释见第 5.7 节),因此这个视图没有提供很有用的信息。

名称 数据类型 描述
constraint_catalog sql_identifier 包含该排序规则的数据库名(总是当前数据库)
constraint_schema sql_identifier 包含该排序规则的模式名
constraint_name sql_identifier 默认排序规则的名称
character_set_catalog sql_identifier 当前字符集还未被实现为模式对象,所以这一列为空
character_set_schema sql_identifier 当前字符集还未被实现为模式对象,所以这一列为空
character_set_name sql_identifier 字符集名称

: 表 5.9 collation_character_set_applicability列

column_column_usage

视图column_column_usage标识依赖于同一表中的另一个基本列生成的所有列。只包含当前启用的角色所拥有的表。

名称 数据类型 描述
table_catalog sql_identifier 包含表的数据库的名称(总是当前数据库)
table_schema sql_identifier 包含表的模式的名称
table_name sql_identifier 表的名称
column_name sql_identifier 生成列所依赖的基本列的名称
dependent_column sql_identifier 生成的列的名称

: 表 5.10 column_column_usage Columns

column_domain_usage

视图column_domain_usage标识所有使用定义在当前数据库中并且被一个当前启用的角色拥有的域的列(表列或视图列)。

名称 数据类型 描述
domain_catalog sql_identifier 包含该域的数据库名(总是当前数据库)
domain_schema sql_identifier 包含该域的模式名
domain_name sql_identifier 域名称
table_catalog sql_identifier 包含该表的数据库名(总是当前数据库)
table_schema sql_identifier 包含该表的模式名
table_name sql_identifier 表名称
column_name sql_identifier 列名称

: 表 5.11 column_domain_usage列

column_options

视图column_options包含为当前数据库中外部表列定义的所有选项。只有当前用户能够访问(作为拥有者或具有某些特权)的那些外部表列才被显示。

名称 数据类型 描述
table_catalog sql_identifier 包含该外部表的数据库名(总是当前数据库)
table_schema sql_identifier 包含该外部表的模式名
table_name sql_identifier 外部表名
column_name sql_identifier 列名称
option_name sql_identifier 一个选项名
option_value sql_identifier 该选项的值

: 表 5.12 column_options列

column_privileges

视图column_privileges标识所有授予给一个当前启用的角色或者被一个当前启用的角色授予的特权。对每一个列、授予者、被授予者的组合只有一行。

如果一个特权被授予在一整个表上,它在这个视图中被显示为在每一列上授予,但是只有可用于列粒度的特权类型才会这样: SELECT、INSERT、 UPDATE、REFERENCES。

名称 数据类型 描述
grantor sql_identifier 授予该特权的角色名
grantee sql_identifier 被授予该特权的角色名
table_catalog sql_identifier 包含该列的表所在的数据库名(总是当前数据库)
table_schema sql_identifier 包含该列的表所在的模式名
table_name sql_identifier 包含该列的表名
column_name sql_identifier 列名称
privilege_type character_data 特权类型:SELECT、NSERT、UPDATE或 REFERENCES
is_grantable yes_or_no 如果该特权是可授予的,则为YES,否则为NO

: 表 5.13 column_privileges列

column_udt_usage

视图column_udt_usage标识所有使用被一个当前启用的角色拥有的数据类型的列。注意在瀚高数据库中,内建数据类型的行为和用户定义的类型相似,因此它们也被包括在这里。详见第 5.17 节。

名称 数据类型 描述
udt_catalog sql_identifier 该列数据类型(如果适用,底层的域类型)被定义的数据库名(总是当前数据库)
udt_schema sql_identifier 该列数据类型(如果适用,底层的域类型)被定义的模式名
udt_name sql_identifier 该列数据类型(如果适用,底层的域类型)的名称
table_catalog sql_identifier 该列数据类型(如果适用,底层的域类型)的名称
table_catalog sql_identifier 包含该表的数据库名(总是当前数据库)
table_schema sql_identifier 包含该表的模式名
table_name sql_identifier 表名称
column_name sql_identifier 列名称

: 表 5.14 column_udt_usage列

columns

视图columns包含数据库中有关所有表列(或视图列)的信息。系统列(ctid等)不被包括在内。只有那些当前用户能够访问(作为拥有者或具有某些特权)的列才被显示。

名称 数据类型 描述
table_catalog sql_identifier 包含该表的数据库名(总是当前数据库)
table_schema sql_identifier 包含该表的模式名
table_name sql_identifier 表名称
column_name sql_identifier 列名称
ordinal_position cardinal_number 该列在表内的顺序位置(从 1开始计)
column_default character_data 该列的默认表达式
is_nullable yes_or_no 如果该列可以为空,则为YES,否则为NO。一个非空约束是让一列成为不能为空的方法,但还有其他方法。
data_type character_data 如果该列的数据类型是一种内建类型,则为该列的数据类型;如果是某种数组(此种情况见视图element_types),则为ARRAY;否则为USERDEFINED(此种情况下该类型被标识在udt_name和相关列中)。如果该列基于一个域,这一列引用该域底层的类型(该列被标识在domain_name和相关列中)。
character_maximum_length cardinal_number 如果data_type标识一种字符或位串类型,这里是声明的最大长度;如果没有声明最大长度或者所有其他数据类型,这里为空。
character_octet_length cardinal_number 如果data_type标识一个字符类型,这里是一个数据的最大可能长度(以字节计);对其他所有数据类型为空。最大字节长度取决于声明的字符最大长度(见上文)和服务器编码。
numeric_precision cardinal_number 如果data_type标识一种数字类型,这列包含这个属性类型的(声明的或隐式的)精度。精度指示了有效位数。它可以按照 列numeric_precision_radix中指定的被表示为十进制(基于 10)或二进制(基 于 2)。对于所有其他数据类型,这一列为空。
numeric_precision_radix cardinal_number 如果data_type标识一种数字类型,这一列指示numeric_precision和numeric_scale列中的值是基于什么来表示。该值为 2 或 10。对于所有其他数据类型,这一列为空。
numeric_scale cardinal_number 如果data_type标识一种准确数字类型,这列包含这个属性类型的(声明的或隐式)比例。比例指示了有效位数。它可以按照列numeric_ precision_radix中指定的被表示为十进制(基于 10)或二进制(基于2)。对于所有其他数据类型,这一列为空。
datetime_precision cardinal_number 如果data_type标识一种日期、时间、时间戳或时间间类型,这一列包含这个属性类型的(声明的或隐式的)分数秒的精度,也就是秒值的小数点后的十进制位数。对于所有其他数据类型,这一列为空。
interval_type character_data 如果data_type标识一种时间间隔类型,这一列包含时间间隔为这个属性包括哪些域的声明,例如YEAR TO MONTH、DAY TO SECOND等等。如果没有指定域限制(也就是该时间间隔接受所有域),并且对于所有其他数据类型,这个域为空。
character_set_catalog sql_identifier 应用于一个瀚高数据库中不可用的特性
character_set_schema sql_identifier 应用于一个瀚高数据库中不可用的特性
character_set_name sql_identifier 应用于一个瀚高数据库中不可用的特性
collation_catalog sql_identifier 包含此属性排序规则的数据库名(总是当前数据库), 如果默认或者该属性的数据类型不可排序则为空
collation_schema sql_identifier 包含此属性排序规则的模式名,如果默认或者该属性的 数据类型不可排序则为空
collation_name sql_identifier 该属性排序规则的名称,如默认或者该属性的数据类型不可排序则为空
domain_catalog sql_identifier 如果该列有一个域类型,这里是该域所在的数据库名(总是当前数据库),否则为空
domain_schema sql_identifier 如果该列有一个域类型,这是该域所在的模式名,否为空。
domain_name sql_identifier 如果该列有一个域类型,这里是该域的名称,否则为空
udt_catalog sql_identifier 该列数据类型(如果适用,底层的域类型)被定义的数库名(总是当前数据库)
udt_schema sql_identifier 该列数据类型(如果适用,底层的域类型)被定义的模式名
udt_name sql_identifier 该列数据类型(如果适用,底层的域类型)的名称
scope_catalog sql_identifier 应用于一个瀚高数据库中不可用的特性
scope_schema sql_identifier 应用于一个瀚高数据库中不可用的特性
scope_name sql_identifier 应用于一个瀚高数据库中不可用的特性
dtd_identifier sql_identifier 该列的数据类型描述符的一个标识符,在从属于该表的数据类型标识符之中唯一。这主要用于与这类标识符的其他实例进行连接(该标识符的指定格式没有被定义并且不保证在未来的版本中保持相同)。
is_self_referencing yes_or_no 应用于一个瀚高数据库中不可用的特性
is_identity yes_or_no 如果该列是一个标识列,则YES,否则为NO。
identity_generation character_data 如果该列是一个标识列,则为ALWAYS或者BY DEFAULT,它反映该列的定义。
identity_start character_data 如果该列是一个标识列,则内部序列的起始值,否则为空。
identity_increment character_data 如果该列是一个标识列,则是内部序列的增量,否则为空。
identity_maximum character_data 如果该列是一个标识列,则是内部序列的最大值,否则为空。
identity_minimum character_data 如果该列是一个标识列,则是内部序列的最小值,否则为空。
identity_cycle yes_or_no 如果该列是一个标识列,则YES和NO分别表示内部序列可循环和不可循环,否则为空。
is_generated character_data 如果列是生成的列,则ALWAYS,否则 NEVER。
generation_expression character_data 如果列是生成的列,则生成表达式,否则为空。
is_updatable yes_or_no 如果该列是可更新的,则为YES,否则为NO(基表中的列总是可更新的,视图中的列则不一定)

: 表 5.15 columns列

因为在 SQL 中有多种方式定义数据类型,而瀚高数据库还包含额外的方式来定义数据类型,它们在信息模式中的表示可能有点困难。列data_type应该标识列的底层内建类型。在瀚高数据库中,这表示定义在系统目录模式pg_catalog中的类型。如果应用能够特别地(例如以不同方式格式化数字类型或使用精度列中的数据)处理总所周知的内建类型,这列可能会有用。列udt_name、udt_schema和udt_catalog总是标识列的底层数据类型,即使该列是基于一个域的(因为瀚高数据库对待内建类型和用户定义类型的方式是一样的,内建类型也出现在这里。这是 SQL 标准的一种扩展)。如果一个应用想要根据该类型以不同的方式处理数据,就应该使用这些列,因为在那种情况下即使该列真地基于一个域也没有关系。如果该列是基于一个域,该域的标识被存储在列domain_name、domain_schema和domain_catalog。

如果你想要把列和它们相关的数据类型配对并且把域视作单独的类型,你可以写coalesce(domain_name, udt_name)等等。

constraint_column_usage

视图constraint_column_usage标识在当前数据库中被某个约束使用的所有列。只有包含在被一个当前启用的角色拥有的表中的那些列才被显示。对于一个检查约束,这个视图标识被用在该检查约束中的列。对于一个外键约束,这个视图标识外键引用的列。对于一个唯一或主键约束,这个视图标识被约束的列。

名称 数据类型 描述
table_catalog sql_identifier 包含被某个约束使用的列的表所在的数据库名(总是当前数据库)
table_schema sql_identifier 包含被某个约束使用的列的表所在的模式名
table_name sql_identifier 包含被某个约束使用的列的表名
column_name sql_identifier 包含被某个约束使用的列名
constraint_catalog sql_identifier 包含该约束的数据库名(总是当前数据库)
constraint_schema sql_identifier 包含该约束的模式名
constraint_name sql_identifier 约束名

: 表 5.16 constraint_column_usage列

constraint_table_usage

视图constraint_table_usage标识在当前数据库中被某个约束使用的所有表(这与视图table_constraints不同,它标识哪些表约束定义在哪些表上)。对于一个外键约束,这个视图标识该外键引用的表。对于一个唯一或主键约束,这个视图仅标识该约束属于的表。

检查约束和非空约束不被包括在这个视图中。

名称 数据类型 描述
table_catalog sql_identifier 包含被某个约束使用的表的数据库名(总是当前数据库)
table_schema sql_identifier 包含被某个约束使用的表的模式名
table_name sql_identifier 包含被某个约束使用的表名
constraint_catalog sql_identifier 包含该约束的数据库名(总是当前数据库)
constraint_schema sql_identifier 包含该约束的模式名
constraint_name sql_identifier 约束名

: 表 5.17 constraint_table_usage列

data_type_privileges

视图data_type_privileges标识当前用户能够访问(作为被描述对象的拥有者或者具有其上的某种特权)的所有数据类型描述符。只要一个数据类型被用在一个表列、一个域或一个函数(作为参数或返回类型)就会生成一个数据类型描述符并且在那个实例中存储一些有关该数据类型如何被使用的信息(例如,声明的最大长度,如果适用)。每一个数据类型描述符被赋予一个任意的标识符,它在被赋予给一个对象(表、域、函数)的数据类型描述符中唯一。这个视图对于应用可能没什么用,但是它被用于定义信息模式中的一些其他视图。

名称 数据类型 描述
object_catalog sql_identifier 包含该被描述对象的数据库名(总是当前数据库)
object_schema sql_identifier 包含该被描述对象的模式名
object_name sql_identifier 该描述对象的名字
object_type character_data 被描述对象的类型:TABLE(从属于表的一列的数据类型描述符)、DOMAIN (从属于域的数据类型描述符)、ROUTINE(从属于函数的一个参数或返回数据类型的数据类型描述符)。
dtd_identifier sql_identifier 数据类型描述符的标识符,它在同一对象的数据类型描述符之间唯一。

: 表 5.18 data_type_privileges列

domain_constraints

视图domain_constraints包含所有属于当前数据库中定义的域的约束。只有当前用户能访问的那些域才被显示(作为拥有者或具有某些特权)。

名称 数据类型 描述
constraint_catalog sql_identifier 包含该约束的数据库名(总是当前数据库)
constraint_schema sql_identifier 包含该约束的模式名
constraint_name sql_identifier 约束名
domain_catalog sql_identifier 包含该域的数据库名(总是当前数据库)
domain_schema sql_identifier 包含该域的模式名
domain_name sql_identifier 该域的名称
is_deferrable yes_or_no 如果该约束是可延迟的,则为YES,否则为NO
initially_deferred yes_or_no 如果该约束是可延迟的且初始就被延迟,则为YES,否则 为NO

: 表 5.19 domain_constraints列

domain_udt_usage

视图domain_udt_usage标识所有基于被一个当前启用的角色拥有的数据类型的域。

名称 数据类型 描述
udt_catalog sql_identifier 该域数据类型被定义的数据库名(总是当前数据库)
udt_schema sql_identifier 该域数据类型被定义的模式名
udt_name sql_identifier 该域数据类型的名称
domain_catalog sql_identifier 包含该域的数据库名(总是当前数据库)
domain_schema sql_identifier 包含该域的模式名
domain_name sql_identifier 该域的名称

: 表 5.20 domain_udt_usage列

domains

视图domains包含定义在当前数据库中的所有域。只有当前用户能够访问(作为拥有者或具有某些特权)的域才被显示。

名称 数据类型 描述
domain_catalog sql_identifier 包含该域的数据库名(总是当前数据库)
domain_schema sql_identifier 包含该域的模式名
domain_name sql_identifier 该域的名称
data_type character_data 该域的数据类型如果是一种内建类型,这里是该域的数类型;如果是某种数组 (此种情况见视图element_types),则为ARRAY;否则为USERDEFINED(此种情况中,该类 型被标识在udt_name和相关列中)。
character_maximum_length cardinal_number 如果该域有一个字符或位串类型,这里是声明的最大长度;如果没有声明最大长度,则对于所有其他数据类型为空。
character_octet_length cardinal_number 如果该域有一个字符类型,这里是一个数据的最大可能长度(以字节计);对其他所有数据类型为空。最大字节长度取决于声明的字符最大长度(见上文)和服务器编码。
character_set_catalog sql_identifier 应用于一个瀚高数据库中不可用的特性
character_set_schema sql_identifier 应用于一个瀚高数据库中不可用的特性
character_set_name sql_identifier 应用于一个瀚高数据库中不可用的特性
collation_catalog sql_identifier 包含此域排序规则的数据库(总是当前数据库),如果默认或者该域的数据类型不可排序则为空
collation_schema sql_identifier 包含此域排序规则的模式名,如果默认或者该域的数据类型不可排序则为空
collation_name sql_identifier 该域排序规则的名称,如果默认或者该域的数据类型不可排序则为空
numeric_precision cardinal_number 如果该域有一种数字类型,这列包含这个域类型的(声明的或隐式的)精度。精度指示了有效位数。它可以按照列numeric_precision_radix中指定的被表示为十进制(基于 10)或二进制(基于 2)。对于所有其他数据类,这一列为空。
numeric_precision_radix cardinal_number 如果该域有一种数字类型,这一列指示numeric_precision和numeric_scale列中的值是基于什么来表示。该值为 2 或 10。对于所有其他数据类型,这一列为空。
numeric_scale cardinal_number 如果该域有一种准确数字类型,这列包含这个域类型的声明的或隐式的)比例。比例指示了有效位数。它可以按照列numeric_precision_radix中定的被表示为十进制(基于 10)或二进制(基于 2)。对于所有其他数据类型,这一列为空。
datetime_precision cardinal_number 如果data_type标识一种日期、时间、时间戳或时间间隔类型,这一列包含这个域型的(声明的或隐式的)分数秒的精度,也就是秒值的小数点后的十进制位数。于所有其他数据类型,这 一列为空。
interval_type character_data 如果data_type标识一种时间间隔类型,这一列包含时间间隔为这个域包括哪些域的声明,例如YEAR TO MONTH、DAY TO SECOND等等。如果没有指定域限制(也就是该时间间隔接受所有域),并且对于所有其他数据类型,这个域为空。
interval_precision cardinal_number 应用于一个瀚高数据库中不可用的特性(关于时间间隔类型域的分数秒精度可见datetime_precision)
domain_default character_data 该域的默认表达式
udt_catalog sql_identifier 该域数据类型被定义的数据库名(总是当前数据库)
udt_schema sql_identifier 该域数据类型被定义的模式名
udt_name sql_identifier 该域数据类型的名称
scope_catalog sql_identifier 应用于一个瀚高数据库中不可用的特性
scope_schema sql_identifier 应用于一个瀚高数据库中不可用的特性
scope_name sql_identifier 应用于一个瀚高数据库中不可用的特性
maximum_cardinality cardinal_number 总是空,因为数组在瀚高数据库中总是有无限制的最大势
dtd_identifier sql_identifier 该域的数据类型描述符的一标识符,在从属于该域的数据类型标识符之中唯一这不重要,因为一个域只含一个数据类型描述符)。这主要用于与这类标 识符的其他实例进行连接(该标识符的指定格式没有被定义并且不保证在未来的版本中保持相同)。

: 表 5.21 domains列

element_types

视图element_types包含数组元素的数据类型描述符。当一个表列、组合类型属性、域、函数参数或函数返回值被定义为一种数组类型,相应的信息模式视图只在列data_type中包含ARRAY。要获得该数组元素类型的信息,你可以连接该相应的视图和这个视图。例如,要显示一个表的列及其数据类型和数组元素类型,你可以:

SELECT c.column_name, c.data_type, e.data_type AS element_type

FROM information_schema.columnsCLEFT JOIN information_schema.element_types e

ON ((c.table_catalog, c.table_schema, c.table_name, 'TABLE',

c.dtd_identifier)

= (e.object_catalog, e.object_schema, e.object_name, e.object_type,

e.collection_type_identifier))

WHERE c.table_schema = '...' AND c.table_name = '...'

ORDER BY c.ordinal_position;

这个视图只包括当前用户能够访问(作为拥有者或具有某些特权)的对象。

名称 数据类型 描述
object_catalog sql_identifier 包含使用被描述的数组的对象的数据库名(总是当前数据库)
object_schema sql_identifier 包含使用被描述的数组的对的模式名
object_name sql_identifier 使用被描述的模式的对象名
object_type character_data 使用被描述的数组的对象的类型:TABLE(被一个表列使用的数组)、USER-DEFINEDTYPE(被组合类型的一个属性使用的数组)、DOMAIN(被域使用的数组)、ROUTINE(被函数的一个参数或返回数据类型使用的数组)。
collection_type_identifie sql_identifier 被描述的数组的数据类型描述符的标识符。使用这个去与其他信息模式视图的dtd_identifier列连接。
data_type character_data 如果数组元素的数据类型是内建类型,这里是数组元素的数据类型,否则为USERDEFINED(在那种情况下,该类型被标识在udt_name和相列中)。
character_maximum_length cardinal_number 总是为空,因为这种信息不用于瀚高数据库中的数组元素数据类型
character_octet_length cardinal_number 总是为空,因为这种信息不适用于瀚高数据库中的数组元素数据类型
character_set_catalog sql_identifier 应用于一个瀚高数据库中不可用的特性
character_set_schema sql_identifier 应用于一个瀚高数据库中不可用的特性
character_set_name sql_identifier 应用于一个瀚高数据库中不可用的特性
collation_catalog sql_identifier 包含元素类型排序规则的数据库名(总是当前数据库),如果默认或该元素的数据类型是不可排序的则为空
collation_schema sql_identifier 包含元素类型排序规则的模式名, 如果默认或该元素的数据类型是不可排序的则为空
collation_name sql_identifier 元素类型的排序规则名, 如果默认或该元素的数据类型是不可排序的则为空
numeric_precision cardinal_number 总是为空,因为这种信息不用于瀚高数据库中的数组元素数据类型
numeric_precision_radix cardinal_number 总是为空,因为这种信息不适用于瀚高数据库中的数组元素数据类型
numeric_scale cardinal_number 总是为空,因为这种信息不用于瀚高数据库中的数组元素数据类型
datetime_precision cardinal_number 总是为空,因为这种信息不适用于瀚高数据库中的数组元素数据类型
interval_type cardinal_number 总是为空,因为这种信息不适用于瀚高数据库中的数组元素数据类型
interval_precision cardinal_number 总是为空,因为这种信息不适用于瀚高数据库中的数组元素数据类型
domain_default character_data 还未被实现
udt_catalog sql_identifier 元素的数据类型所在的数据库名(总是当前数据库)
udt_schema sql_identifier 元素的数据类型所在的模式名
udt_name sql_identifier 模式的数据类型名
scope_catalog sql_identifier 应用于一个瀚高数据库中不可用的特性
scope_schema sql_identifier 应用于一个瀚高数据库中不可用的特性
scope_name sql_identifier 应用于一个瀚高数据库中不可用的特性
maximum_cardinality sql_identifier 总是空,因为数组在瀚高数据库中总是有无限制的最大势
dtd_identifier sql_identifier 该元素的数据类型描述符的标识符。当前无用。

: 表 5.22 element_types列

enabled_roles

视图enabled_roles标识当前”已被启用的角色”。已被启用的角色被递归地定义为:当前用户以及被授予给具有自动继承的已被启用角色的所有角色。换句话说,就是当前用户是其直接或间接成员的所有角色。

为了权限检查,”可应用角色”的集合被应用,它会比已被启用角色的集合包含的角色范围更宽。因此通常使用视图applicable_roles要更好,applicable_roles视图的详情请见第 5.5 节。

名称 数据类型 描述
role_name sql_identifier 角色名称

: 表 5.23 enabled_roles列

foreign_data_wrapper_options

视图foreign_data_wrapper_options包含为当前数据库中外部数据包装器定义的所有选项。只有那些当前用户能够访问(作为拥有者或具有某些特权)的外部数据包装器被显示。

名称 数据类型 描述
foreign_data_wrapper_catalog sql_identifier 该外部数据包装器所在的数据库名(总是当前数据库)
foreign_data_wrapper_name sql_identifier 该外部数据包装器的名字
option_name sql_identifier 一个选项名
option_value character_data 该选项的值

: 表 5.24 foreign_data_wrapper_options列

foreign_data_wrappers

视图foreign_data_wrappers包含定义在当前数据库中的所有外部数据包装器。只有那些当前用户能够访问(作为拥有者或具有某些特权)的外部数据包装器才会被显示。

名称 数据类型 描述
foreign_data_wrapper_catalog sql_identifier 包含该外部数据包装器的数据库名(总是当前数据库)
foreign_data_wrapper_name sql_identifier 外部数据包装器的名字
authorization_identifier sql_identifier 外部服务器拥有者的名字
library_name character_data 实现这个外部数据包装器的库文件名
foreign_data_wrapper_language character_data 用于实现这个外部数据包装器的语言

: 表 5.25 foreign_data_wrappers列

foreign_server_options

视图foreign_server_options包含为当前数据库中外部服务器定义的所有选项。只有那些当前用户能够访问(作为拥有者或具有某些特权)的外部服务器才会被显示。

名称 数据类型 描述
foreign_server_catalog sql_identifier 该外部服务器所在的数据库(总是当前数据库)
foreign_server_name sql_identifier 该外部服务器的名字
option_name sql_identifier 一个选项名
option_value character_data 该选项的值

: 表 5.26 foreign_server_options列

foreign_servers

视图foreign_servers包含当前数据库中定义的所有外部服务器。只有那些当前用户能够访问(作为拥有者或具有某些特权)的外部服务器才会被显示。

名称 数据类型 描述
foreign_server_catalog sql_identifier 该外部服务器所在的数据库名(总是当前数据库)
foreign_server_name sql_identifier 该外部服务器的名字
foreign_data_wrapper_catalog sql_identifier 包含被该外部服务器使用的外部数据包装器的数据库名(总是当前数据库)
foreign_data_wrapper_name sql_identifier 被该外部服务器所使用的外部数据包装器的名字
foreign_server_type character_data 外部服务器类型信息(如果在创建时指定过)
foreign_server_version character_data 外部服务器版本信息(如果在创建时指定过)
authorization_identifier sql_identifier 该外部服务器的拥有者名字

: 表 5.27 foreign_servers列

foreign_table_options

视图foreign_table_options包含为当前数据库中外部表定义的所有选项。只有那些当前用户能够访问(作为拥有者或具有某些特权)的外部表才会被显示。

名称 数据类型 描述
foreign_table_catalog sql_identifier 包含该外部表的数据库名(总是当前数据库)
foreign_table_schema sql_identifier 包含该外部表的模式名
foreign_table_name sql_identifier 外部表的名字
option_name sql_identifier 一个选项名
option_value character_data 该选项的值

: 表 5.28 foreign_table_options列

foreign_tables

视图foreign_tables包含定义在当前数据库中的所有外部表。只有那些当前用户能够访问(作为拥有者或具有某些特权)的外部表才会被显示。

名称 数据类型 描述
foreign_table_catalog sql_identifier 该外部表所在的数据库名(总是当前数据库)
foreign_table_schema sql_identifier 包含该外部表的模式名
foreign_table_name sql_identifier 该外部表的名字
foreign_server_catalog sql_identifier 该外部服务器所在的数据库名(总是当前数据库)
foreign_server_name sql_identifier 该外部服务器的名字

: 表 5.29 foreign_tables列

key_column_usage

视图key_column_usage标识当前数据库中所有被某种唯一、主键或外键约束限制的列。检查约束不被包括在这个视图中。只有那些当前用户能够访问的列才会被显示(作为拥有者或具有某些特权)。

名称 数据类型 描述
constraint_catalog sql_identifier 包含该约束的数据库名(总是当前数据库)
constraint_schema sql_identifier 包含该约束的模式名
constraint_name sql_identifier 包含该约束的模式名
table_catalog sql_identifier 约束名
table_catalog sql_identifier 包含被这个约束限制的列的表所在的数据库名(总是当前数据库)
table_schema sql_identifier 包含被这个约束限制的列的表所在的模式名
table_name sql_identifier 包含被这个约束限制的列的表的名字
column_name sql_identifier 被这个约束限制的列名
ordinal_position cardinal_number 该列在约束键中的顺序位置(从 1 开始计数)
position_in_unique_constraintcaint cardinal_number 对于一个外键约束,被引用行在其唯一约束中的顺序位置(从 1 开始计数);对于其他约束为空

: 表 5.30 key_column_usage列

parameters

视图parameters包含当前数据库中所有函数的参数的有关信息。只有那些当前用户能够访问(作为拥有者或具有某些特权)的函数才会被显示。

名称 数据类型 描述
specific_catalog sql_identifier 包含该函数的数据库名(总是当前数据库)
specific_schema sql_identifier 包含该函数的模式名
specific_name sql_identifier 该函数的“专用名”。详见第 5.41 节
ordinal_position cardinal_number 该参数在函数参数列表中的顺序位置(从 1 开始计数)
parameter_mode character_data IN表示输入参数, OUT表示输出参数, INOUT表示输入输出参数。
is_result yes_or_no 应用于一个瀚高数据库中不可用的特性
as_locator yes_or_no 应用于一个瀚高数据库中不可用的特性
parameter_name sql_identifier 参数名,如果参数没有名称则为空
data_type character_data 该参数的数据类型如果是一种内建类型,这里是该参数的数据类型;如果是某种数组(此种情况见视图element_types),则为ARRAY;否则为USER DEFINED(此种情况中,该类型被标识在udt_name和相关列中)。
character_maximum_length cardinal_number 总是为空,因为这种信息不适用于瀚高数据库中的返回数据类型
character_octet_length cardinal_number 总是为空,因为这种信息不适用于瀚高数据库中的返回数据类型
character_set_catalog sql_identifier 应用于一个瀚高数据库中不可用的特性
character_set_schema sql_identifier 应用于一个瀚高数据库中不可用的特性
character_set_name sql_identifier 应用于一个瀚高数据库中不可用的特性
collation_catalog sql_identifier 总是为空,因为这种信息不适用于瀚高数据库中的返回数据类型
collation_schema sql_identifier 总是为空,因为这种信息不适用于瀚高数据库中的返回数据类型
collation_name sql_identifier 总是为空,因为这种信息不适用于瀚高数据库中的返回数据类型
numeric_precision cardinal_number 总是为空,因为这种信息不适用于瀚高数据库中的返回数据类型
numeric_precision_radix cardinal_number 总是为空,因为这种信息不适用于瀚高数据库中的返回数据类型
numeric_scale cardinal_number 总是为空,因为这种信息不适用于瀚高数据库中的返回数据类型
datetime_precision cardinal_number 总是为空,因为这种信息不适用于瀚高数据库中的返回数据类型
interval_type character_data 总是为空,因为这种信息不适用于瀚高数据库中的返回数据类型
interval_precision cardinal_number 总是为空,因为这种信息不适用于瀚高数据库中的返回数据类型
udt_catalog sql_identifier 该参数的数据类型所在的数据库名(总是当前数据库)
udt_schema sql_identifier 该参数的数据类型所在的模式名
udt_name sql_identifier 该参数的数据类型的名字
scope_catalog sql_identifier 应用于一个瀚高数据库中不可用的特性
scope_schema sql_identifier 应用于一个瀚高数据库中不可用的特性
scope_name sql_identifier 应用于一个瀚高数据库中不可用的特性
maximum_cardinality cardinal_number 总是空,因为数组在瀚高数据库中总是有无限制的最大势
dtd_identifier sql_identifier 该参数的数据类型描述符的一个标识符,在从属于该函数的数据类型标识符之中唯一(这不重要,因为一个域只包含一个数据类型描述符)。这主要用于与这类标识符的其他实例进行连接(该标识符的指定格式没有被定义并且不保证在未来的版本中保持相同)。
parameter_default character_data 该参数的默认表达式,如果没有或者该函数不被一个当前启用的角色拥有则为空值。

: 表 5.31 parameters列

referential_constraints

视图referential_constraints包含当前数据库中的所有引用(外键)约束。只有那些当前用户具有其引用表上写权限(作为拥有者或具有某些除SELECT之外的特权)的约束才会被显示。

名称 数据类型 描述
constraint_catalog sql_identifier 包含该约束的数据库名(总是当前数据库)
constraint_schema sql_identifier 包含该约束的模式名
constraint_name sql_identifier 约束名
unique_constraint_catalog sql_identifier 包含该外键约束所引用的唯一或主键约束的数据库名(总是当前数据库)
unique_constraint_schema sql_identifier 包含该外键约束所引用的唯一或主键约束的模式名
unique_constraint_name sql_identifier 包含该外键约束所引用的唯一或主键约束的名字
match_option character_data 外键约束的匹配选项:FULL、PARTIAL或NONE。
update_rule character_data 外键约束的更新规则:CASCADE、SET NULL、SET DEFAULT、RESTRICT或NO ACTION。
delete_rule character_data 外键约束的删除规则:CASCADE、SET NULL、SET DEFAULT、RESTRICT或NO ACTION。

: 表 5.32 referential_constraints列

role_column_grants

视图role_column_grants标识所有在列上授予的特权,这些特权的授予者或者被授予者是一个当前已被启用的角色。更多信息可以在column_privileges中找到。这个视图和column_privileges之间的唯一实质性区别是:这个视图忽略那些以授予给PUBLIC的方式使当前用户获得其访问权限的列。

名称 数据类型 描述
grantor sql_identifier 授予该特权的角色名
grantee sql_identifier 被授予该特权的角色名
table_catalog sql_identifier 包含该列的表所在的数据库名(总是当前数据库)
table_schema sql_identifier 包含该列的表所在的模式名
table_name sql_identifier 包含该列的表名
column_name sql_identifier 列名称
privilege_type character_data 特权类型:SELECT、INSERT、UPDATE或REFERENCES
is_grantable yes_or_no 如果该特权是可授予的,则为YES,否则为NO

: 表 5.33 role_column_grants列

role_routine_grants

视图role_routine_grants标识所有在函数上授予的特权,这些特权的授予者或者被授予者是一个当前已被启用的角色。更多信息可以在routine_privileges中找到。这个视图和routine_privileges之间的唯一实质性区别是:这个视图忽略那些以授予给PUBLIC的方式使当前用户获得其访问权限的函数。

名称 数据类型 描述
grantor sql_identifier 授予该特权的角色名
grantee 被授予该特权的角色名
specific_catalog 包含该函数的数据库名(总是当前数据库)
specific_schema 包含该函数的模式名
specific_name 该函数的“专用名”。
routine_catalog 包含该函数的数据库名(总是当前数据库)
routine_schema 包含该函数的模式名
routine_name 该函数的名字(在重载的情况下可能会重复)
privilege_type character_data 总是为EXECUTE(函数唯一的特权类型)
is_grantable yes_or_no 如果该特权是可授予的,则为YES,否则为NO

: 表 5.34 role_routine_grants列

role_table_grants

视图role_table_grants标识所有在表或视图上授予的特权,这些特权的授予者或者被授予者是一个当前已被启用的角色。更多信息可以在table_privileges中找到。这个视图和table_privileges之间的唯一实质性区别是:这个视图忽略那些以授予给PUBLIC的方式使当前用户获得其访问权限的表。

名称 数据类型 描述
grantor sql_identifier 授予该特权的角色名
grantee 被授予该特权的角色名
table_catalog 包含该表的数据库名(总是当前数据库)
table_schema 包含该表的模式名
table_name 表名称
privilege_type character_data 该特权的类型:SELECT、INSERT、UPDATE、DELETE、TRUNCATE、REFERENCES或TRIGGER
is_grantable yes_or_no 如果该特权是可授予的,则为YES,否则为NO
with_hierarchy yes_or_no 在 SQL 标准中,WITHIERARCHY OPTION是一个独立的(子)特权,它允许在表继承层级上的特定操作。在 瀚高数据库中,这被包括在SELECT特权中,因此这一列在特权为SELECT时显示YES,其他时候显示NO。

: 表 5.35 role_table_grants列

role_udt_grants

视图role_udt_grants标识所有在用户定义类型上授予的USAGE特权,这些特权的授予者或者被授予者是一个当前已被启用的角色。更多信息可以在udt_privileges中找到。这个视图和udt_privileges之间的唯一实质性区别是:这个视图忽略那些以授予给PUBLIC的方式使当前用户获得其访问权限的对象。因为数据类型在瀚高数据库中并没有真正的特权,而是只有一个给PUBLIC的隐式授予,这个视图为空。

名称 数据类型 描述
grantor sql_identifier 授予该特权的角色名
grantee 被授予该特权的角色名
object_catalog 包含该对象的数据库名(总是当前数据库)
object_schema 如果适用,则为包含该对象的模式名,否则为一个空字符串
object_name 对象的名字
object_type character_data COLLATION或DOMAIN或FOREIGN DATA WRAPPER或FOREIGN SERVER或SEQUENCE
privilege_type character_data 总是USAGE
is_grantable yes_or_no 如果该特权是可授予的,则为YES,否则为NO

: 表 5.36 role_udt_grants列

role_usage_grants

视图role_usage_grants标识所有在多种对象上授予的USAGE特权,这些特权的授予者或者被授予者是一个当前已被启用的角色。更多信息可以在usage_privileges中找到。这个视图和usage_privileges之间的唯一实质性区别是:这个视图忽略那些以授予给PUBLIC的方式使当前用户获得其访问权限的对象。

名称 数据类型 描述
grantor sql_identifier 授予该特权的角色名
grantee 被授予该特权的角色名
object_catalog 包含该对象的数据库名(总是当前数据库)
object_schema 如果适用,则为包含该对象的模式名,否则为一个空字符串
object_name 对象的名字
object_type character_data COLLATION或DOMAIN或FOREIGN DATA WRAPPER或FOREIGN SERVER或SEQUENCE
privilege_type character_data 总是USAGE
is_grantable yes_or_no 如果该特权是可授予的,则为YES,否则为NO

: 表 5.37 role_usage_grants列

routine_privileges

视图routine_privileges标识所有在函数上授予的特权,其授予者或被授予者是一个当前已被启用的角色。对于每一种函数、授予者和被授予者的组合,这里都有一行。

名称 数据类型 描述
grantor sql_identifier 授予该特权的角色名
grantee sql_identifier 被授予该特权的角色名
specific_catalog sql_identifier 包含该函数的数据库名(总是当前数据库)
specific_schema sql_identifier 包含该函数的模式名
specific_name sql_identifier 该函数的“专用名”。详 见第 5.41 节。
routine_catalog sql_identifier 包含该函数的数据库名(总是当前数据库)
routine_schema sql_identifier 包含该函数的模式名
routine_name sql_identifier 该函数的名字(在重载的情况下可能重复)
privilege_type character_data 总是EXECUTE(函数唯一的特权类型)
is_grantable yes_or_no 如果该特权是可授予的,则为YES,否则为NO

: 表 5.38 routine_privileges列

routines

视图routines包含当前数据库中所有的函数和过程。只有那些当前用户能够访问(作为拥有者或具有某些特权)的函数和过程才会被显示。

名称 数据类型 描述
specific_catalog sql_identifier 包含该函数的数据库名(总是当前数据库)
specific_schema sql_identifier 包含该函数的模式名
specific_name sql_identifier 该函数的“专用名”。这是一个在模式中唯一标识该函数的名称,即使该函数真正的名称已经被重载。专用名的格式尚未被定义,它应当仅被用来与指定例程名称的其他实例进行比较。
routine_catalog sql_identifier 包含该函数的数据库名(总是当前数据库)
routine_schema sql_identifier 包含该函数的模式名
routine_name sql_identifier 该函数的名字(在重载的情况下可能重复)
routine_type sql_identifier FUNCTION表示是一个函 数,PROCEDURE表示是一个过程
module_catalog sql_identifier 应用于一个瀚高数据库中不可用的特性
module_schema sql_identifier 应用于一个瀚高数据库中不可用的特性
module_name sql_identifier 应用于一个瀚高数据库中不可用的特性
udt_catalog sql_identifier 应用于一个瀚高数据库中不可用的特性
udt_schema sql_identifier 应用于一个瀚高数据库中不可用的特性
udt_name sql_identifier 应用于一个瀚高数据库中不可用的特性
data_type character_data 该函数的返回数据类型如果是一种内建类型,这里是该数据类型;如果是某种数组(此种情况见视图element_types),则为ARRAY;否则为USER DEFINED(此种情况中,该类型被标识在type_udt_name和相关列中)。如果是过程则此项为空。
character_maximum_length cardinal_number 总是为空,因为这种信息不适用于瀚高数据库中的返回数据类型
character_octet_length cardinal_number 总是为空,因为这种信息不适用于瀚高数据库中的返回数据类型
character_set_catalog sql_identifier 应用于一个瀚高数据库中不可用的特性
character_set_schema sql_identifier 应用于一个瀚高数据库中不可用的特性
character_set_name sql_identifier 应用于一个瀚高数据库中不可用的特性
collation_catalog sql_identifier 总是为空,因为这种信息不适用于瀚高数据库中的返回数据类型
collation_schema sql_identifier 总是为空,因为这种信息不适用于瀚高数据库中的返回数据类型
collation_name sql_identifier 总是为空,因为这种信息不适用于瀚高数据库中的返回数据类型
numeric_precision cardinal_number 总是为空,因为这种信息不适用于瀚高数据库中的返回数据类型
numeric_precision_radix cardinal_number 总是为空,因为这种信息不适用于瀚高数据库中的返回数据类型
numeric_scale cardinal_number 总是为空,因为这种信息不适用于瀚高数据库中的返回数据类型
datetime_precision cardinal_number 总是为空,因为这种信息不适用于瀚高数据库中的返回数据类型
interval_type character_data 总是为空,因为这种信息不适用于瀚高数据库中的返回数据类型
interval_precision cardinal_number 总是为空,因为这种信息不适用于瀚高数据库中的返回数据类型
type_udt_catalog sql_identifier 该函数的返回数据类型所在的数据库名(总是当前数据库)。如果是过程则此项为空。
type_udt_schema sql_identifier 该函数的返回数据类型所在的模式名。如果是过程则此项为空。
type_udt_name sql_identifier 该函数的返回数据类型的名字。如果是过程则此项为空。
scope_catalog sql_identifier 应用于一个瀚高数据库中不可用的特性
scope_schema sql_identifier 应用于一个瀚高数据库中不可用的特性
scope_name sql_identifier 应用于一个瀚高数据库中不可用的特性
maximum_cardinality cardinal_number 总是空,因为数组在瀚高数据库中总是有无限制的最大势
dtd_identifier sql_identifier 该函数返回数据类型的数据类型描述符的一个标识符,在从属于该函数的数据类型标识符之中唯一。这主要用于与这类标识符的其他实例进行连接(该标识符的指定格式没有被定义并且不保证在未来的版本中保持相同)。
routine_body character_data 如果该函数是一个 SQL 函数,则为SQL,否则为EXTERNAL
routine_definition character_data 该函数的源文本(如果该函数不属于一个当前已被启用的角色,则为空)。(根据 SQL 标准,只有routine_body为SQL时这一列才适用。但是在瀚高数据库中,它将会包含该函数被创建时所指定的任何源文本。)
external_name character_data 如果这个函数是一个C函数,则为该函数的外部名称(链接符号),否则为空(这会产生和显示在routine_definition中相同的值)。
external_language character_data 该函数所用的语言
parameter_style character_data 总是GENERAL(SQL 标准定义了其他参数风格,但在瀚高数据库中不可用)
is_deterministic yes_or_no 如果该函数被声明为不变(在 SQL 标准中被称为确定性的),则为YES,否则为NO(你不能通过该信息模式查询在瀚高数据库中可用的其他易变级别)。
sql_data_access character_data 总是MODIFIES,表示该函数 可能修改 SQL 数据。这种信息对瀚高数据库没有用处。
is_null_call yes_or_no 如果该函数在任一参数为空时自动返回空值,则为YES,否则为NO。如果是过程则此项为空。
sql_path character_data 应用于一个瀚高数据库中不可用的特性
schema_level_routine yes_or_no 总是YES(反例是一个用户定义类型的方法,这是在 瀚高数据库不可用的一种特性)。
max_dynamic_result_sets cardinal_number 应用于一个瀚高数据库中不可用的特性
is_user_defined_cast yes_or_no 应用于一个瀚高数据库中不可用的特性
is_implicitly_invocable yes_or_no 应用于一个瀚高数据库中不可用的特性
security_type character_data 如果该函数以当前用户的特权运行,则为INVOKER;如果该函数以定义它的用户的特权运行,则为DEFINER。
to_sql_specific_catalog sql_identifier 应用于一个瀚高数据库中不可用的特性
to_sql_specific_schema sql_identifier 应用于一个瀚高数据库中不可用的特性
to_sql_specific_name sql_identifier 应用于一个瀚高数据库中不可用的特性
as_locator yes_or_no 应用于一个瀚高数据库中不可用的特性
created time_stamp 应用于一个瀚高数据库中不可用的特性
last_altered time_stamp 应用于一个瀚高数据库中不可用的特性
new_savepoint_level yes_or_no 应用于一个瀚高数据库中不可用的特性
is_udt_dependent yes_or_no 当前总是NO。另一个选项YES应用于一个瀚高数据库中不可用的特性。
result_cast_from_data_type character_data 应用于一个瀚高数据库中不可用的特性
result_cast_as_locator yes_or_no 应用于一个瀚高数据库中不可用的特性
result_cast_char_max_length cardinal_number 应用于一个瀚高数据库中不可用的特性
result_cast_char_octet_length character_data 应用于一个瀚高数据库中不可用的特性
result_cast_char_set_catalog sql_identifier 应用于一个瀚高数据库中不可用的特性
result_cast_char_set_schema sql_identifier 应用于一个瀚高数据库中不可用的特性
result_cast_char_set_name sql_identifier 应用于一个瀚高数据库中不可用的特性
result_cast_collation_catalog sql_identifier 应用于一个瀚高数据库中不可用的特性
result_cast_collation_schema sql_identifier 应用于一个瀚高数据库中不可用的特性
result_cast_collation_name sql_identifier 应用于一个瀚高数据库中不可用的特性
result_cast_numeric_precision cardinal_number 应用于一个瀚高数据库中不可用的特性
result_cast_numeric_precision cardinal_number 应用于一个瀚高数据库中不可用的特性
result_cast_numeric_scale cardinal_number 应用于一个瀚高数据库中不可用的特性
result_cast_datetime_precision character_data 应用于一个瀚高数据库中不可用的特性
result_cast_interval_type character_data 应用于一个瀚高数据库中不可用的特性
result_cast_interval_precision cardinal_number 应用于一个瀚高数据库中不可用的特性
result_cast_type_udt_catalog sql_identifier 应用于一个瀚高数据库中不可用的特性
result_cast_type_udt_schema sql_identifier 应用于一个瀚高数据库中不可用的特性
result_cast_type_udt_name sql_identifier 应用于一个瀚高数据库中不可用的特性
result_cast_scope_catalog sql_identifier 应用于一个瀚高数据库中不可用的特性
result_cast_scope_schema sql_identifier 应用于一个瀚高数据库中不可用的特性
result_cast_scope_name sql_identifier 应用于一个瀚高数据库中不可用的特性
result_cast_maximum_cardinality cardinal_number 应用于一个瀚高数据库中不可用的特性
result_cast_dtd_identifier sql_identifier 应用于一个瀚高数据库中不可用的特性

: 表 5.39 routines列

schemata

视图schemata包含当前数据库中被当前用户(作为属主或具有某些特权)可访问的所有模式。

名称 数据类型 描述
catalog_name sql_identifier 该模式所在的数据库名(总是当前数据库)
schema_name sql_identifier 该模式的名称
schema_owner sql_identifier 该模式拥有者的名称
default_character_set_catalog sql_identifier 应用于一个瀚高数据库中不可用的特性
default_character_set_schema sql_identifier 应用于一个瀚高数据库中不可用的特性
default_character_set_name sql_identifier 应用于一个瀚高数据库中不可用的特性
sql_path character_data 应用于一个瀚高数据库中不可用的特性

: 表 5.40 schemata列

sql_features

表sql_features包含的信息指示了哪些 SQL 标准中定义的正式特性被瀚高数据库所支持。这和附录 D中的信息一样。这里你也能找到一些额外的背景信息。

名称 数据类型 描述
feature_id character_data 该特性的标识符字符串
feature_name character_data 该特性的描述性名称
sub_feature_id character_data 该子特性的标识符字符串,或者如果不是一个子特性则为一个长度为零的字符串
sub_feature_name character_data 该子特性的描述性名称,或者如果不是一个子特性则为一个长度为零的字符串
is_supported yes_or_no 如果该特性被当前版本的瀚高数据库完全支持,则为YES,否则为NO
is_verified_by character_data 总是为空,因为瀚高数据库开发组没有对特性的一致性执行正式的测试
comments character_data 可能会是关于该特性被支持状态的一段注释

: 表 5.41 sql_features列

sql_implementation_info

表sql_implementation_info包含的信息指示剩下的由 SQL 标准实现定义的多个方面。这类信息主要用来在 ODBC 接口的情境中使用;其它接口的用户可能将发现这类信息用处不大。

由于这个原因,个体实现信息项没有在这里描述,你将会在 ODBC 接口的描述中找到它们。

名称 数据类型 描述
implementation_info_id character_data 该实现信息项的标识符字符串
implementation_info_name character_data 该实现信息项的描述性名称
integer_value cardinal_number 该实现信息项的值,如果该值被包含在character_value列中则为空
character_value character_data 该实现信息项的值,如果该值被包含在integer_value列中则为空
comments character_data 可能是从属于该实现信息项的一段注释

: 表 5.42 sql_implementation_info列

sql_languages

表sql_languages为每一种被瀚高数据库支持的 SQL 语言绑定包含一行。瀚高数据库支持在C中的直接 SQL 和嵌入式 SQL,这是你从这张表中知道的所有东西。

这个表在 SQL:2008 中已被从 SQL 标准中移除,因此这里没有项引用 SQL:2003 之后的标准。

名称 数据类型 描述
sql_language_source character_data 该语言定义的源名称,总是ISO 9075,即 SQL 标准
sql_language_year character_data sql_language_source中引用的标准被通过的年份。
sql_language_conformance character_data 该语言绑定的标准一致性级别。对于 ISO 9075:2003 总是CORE。
sql_language_integrity character_data 总是为空(这个值与一个早期版本的 SQL 标准相关)。
sql_language_implementation character_data 总是为空
sql_language_binding_style character_data 语言绑定风格,为DIRECT或EMBEDDED
sql_language_programming_language character_data 如果绑定风格为EMBEDDED,则为编程语言,否则为空。瀚高数据库仅支持C语言。

: 表 5.43 sql_languages列

sql_packages

表sql_packages包含的信息指示哪些定义在 SQL 标准中的特性包被瀚高数据库支持。特性包上的背景信息可参考附录 D。

名称 数据类型 描述
feature_id character_data 该包的标识符字符串
feature_name character_data 该包的描述性名称
is_supported yes_or_no 如果该包被当前版本的瀚高数据库支持,则为YES,否则为NO
is_verified_by character_data 总是为空,因为瀚高数据库开发组没有对特性的一致性执行正式的测试
comments character_data 可能会是关于该包被支持状态的一段注释

: 表 5.44 sql_packages列

sql_parts

表sql_parts包含的信息指示哪些定义在 SQL 标准中的部分被瀚高数据库支持。

名称 数据类型 描述
feature_id character_data 包含该部分编号的一个标识符字符串
feature_name character_data 该部分的描述性名称
is_supported yes_or_no 如果当前版本的瀚高数据库完全支持该部分,则为YES,否则为NO
is_verified_by character_data 总是为空,因为瀚高数据库开发组没有对特性的一致性执行正式的测试
comments character_data 可能会是关于该部分被支持状态的一段注释

: 表 5.45 sql_parts列

sql_sizing

表sql_sizing包含有关瀚高数据库中多种尺寸限制和最大值的信息。这类信息主要用来在 ODBC 接口的情境中使用;其它接口的用户可能将发现这类信息用处不大。由于这个原因,个体实现信息项没有在这里描述,你将会在 ODBC 接口的描述中找到它们。

名称 数据类型 描述
sizing_id cardinal_number 该尺寸项的标识符
sizing_name character_data 该尺寸项的描述性名称
supported_value cardinal_number 尺寸项的值,如果尺寸是不受限制或不能确定的则为 0, 如果尺寸项适用的特性不受支持则为空
comments character_data 可能是从属于尺寸项的一段注释

: 表 5.46 sql_sizing列

sequences

视图sequences包含所有定义在当前数据库中的序列。只有那些当前用户能够访问(作为拥有者或具有某些特权)的序列才会被显示。

名称 数据类型 描述
sequence_catalog sql_identifier 包含该序列的数据库名(总是当前数据库)
sequence_schema sql_identifier 包含该序列的模式名
sequence_name sql_identifier 该序列的名字
data_type character_data 该序列的数据类型。
numeric_precision cardinal_number 这列包含这个序列数据类型(见上文)的(声明的或隐式的)精度。精度指示了有效位数。它可以按照列numeric_precision_radix中指定的被表示为十进制(基于 10)或二进制(基于2)。
numeric_precision_radix cardinal_number 这一列指示numeric_precision和numeric_scale列中的值是基于什么来表示。该值为 2 或 10。
numeric_scale cardinal_number 这列包含这个序列数据类型(见上文)的(声明的或隐式的)比例。比例指示了有效位数。它可以按照列numeric_precision_radix中指定的被表示为十进制(基于 10)或二进制(基于 2)。
start_value character_data 该序列的开始值
minimum_value character_data 该序列的最小值
maximum_value character_data 该序列的最大值
increment character_data 该序列的增量
cycle_option yes_or_no 如果该序列会循环,则为YES,否则为NO

: 表 5.47 sequences列

注意依照 SQL 标准,开始值、最小值、最大值和增量值被作为字符串返回。

sql_sizing_profiles

表sql_sizing_profiles包含有关 SQL 标准的多种 profile 所需的sql_sizing值的信息。瀚高数据库不追踪任何 SQL profile,因此这个表为空。

名称 数据类型 描述
sizing_id cardinal_number 该尺寸项的标识符
sizing_name character_data 该尺寸项的描述性名称
profile_id character_data 一个 profile 的标识符字符串
required_value cardinal_number 该 SQL profile 对尺寸项要求的值,如果该 profile对尺寸项没有限制则为 0,如果该 profile 不要求该尺寸项所适用的任何特性则为空
comments character_data 可能是从属于该 profile 中尺寸项的一段注释

: 表 5.48 sql_sizing_profiles列

table_constraints

视图table_constraints包含属于特定表的所有约束,这些表要满足的条件是:当前用户拥有表或者是当前用户在表上具有某种除SELECT之外的特权。

名称 数据类型 描述
constraint_catalog sql_identifier 包含该约束的数据库名(总是当前数据库)
constraint_schema 包含该约束的模式名
constraint_name 约束名
table_catalog 包含该表的数据库名(总是当前数据库)
table_schema 包含该表的模式名
table_name 表名称
constraint_type character_data 该约束的类型:CHECK、FOREIGN KEY、PRIMARY KEY或UNIQUE
is_deferrable yes_or_no 如果该约束是可延迟的,则为YES,否则为NO
initially_deferred yes_or_no 如果该约束是可延迟的并且是初始已被延迟,则为YES,否则为NO
enforced yes_or_no 适用于一种瀚高数据库中不可用的特性(当前总是YES)

: 表 5.49 table_constraints列

table_privileges

视图table_privileges标识在表或视图上所有被授予的特权,这些特权必须是被一个当前已被启用角色授出或者被授予给一个当前已被启用角色。对每一个表、授予者和被授予者的组合都有一行。

名称 数据类型 描述
grantor sql_identifier 授予该特权的角色名
grantee sql_identifier 被授予该特权的角色名
table_catalog sql_identifier 包含该表的数据库名(总是当前数据库)
table_schema sql_identifier 包含该表的模式名
table_name sql_identifier 表名称
privilege_type character_data 特权类型:SELECT、INSERT、UPDATE、DELETE、TRUNCATE、REFERENCES或TRIGGER
is_grantable yes_or_no 如果该特权是可授予的,则为YES,否则为NO
with_hierarchy yes_or_no 在 SQL 标准中,WITH IERARCHY OPTION是一个独立的(子)特权,它允许在表继承层级上的特定操作。在 瀚高数据库中,这被包括在SELECT特权中,因此这一列在特权为SELECT时显示YES,其他时候显示NO。

: 表 5.50 table_privileges列

tables

视图tables包含定义在当前数据库中的所有表和视图。只有那些当前用户能够访问(作为拥有者或具有某些特权)的表和视图才会被显示。

名称 数据类型 描述
table_catalog sql_identifier 包含该表的数据库名(总是当前数据库)
table_schema sql_identifier 包含该表的模式名
table_name sql_identifier 表名称
table_type character_data 该表的类型:BASE TABLE表示一个持久的基本表(常见表类型),VIEW表示一个视图,FOREIGN表示一个外部表,LOCAL TEMPORARY表示一个临时表
self_referencing_column_name sql_identifier 应用于一个瀚高数据库中不可用的特性
reference_generation character_data 应用于一个瀚高数据库中不可用的特性
user_defined_type_catalog sql_identifier 如果该表是一个有类型的表,则是包含其底层数据类型的数据库名(总是当前数据库),否则为空。
user_defined_type_schema sql_identifier 如果该表是一个有类型的表,则是包含其底层数据类型的模式名,否则为空。
user_defined_type_name sql_identifier 如果该表是一个有类型的表,则是其底层数据类型的名称,否则为空。
is_insertable_into yes_or_no 如果该表能够被插入,则为YES,否则为NO(基本表总是能被插入,而视图则不一定)。
is_typed yes_or_no 如果该表是一个有类型的表,则为YES,否则为NO
commit_action character_data 还未被实现

: 表 5.51 tables列

transforms

视图transforms包含定义在当前数据库中的转换的信息。更准确 来说, 包含在转换中的每一个函数(”FROM SQL”或者 “TO SQL”函数)在其中都有一行。

名称 数据类型 描述
udt_catalog sql_identifier 包含该转换所适用类型的数据库的名称(总是当前数据库)
udt_schema 包含该转换所适用类型的模式的名称
udt_name 该转换所适用类型的名称
specific_catalog 包含该函数的数据库的名称(总是当前数据库)
specific_schema 包含该函数的模式的名称
specific_name 该函数的“专用名”。更多信息请见第 5.41 节。
group_name SQL 标准允许在“组”中定义转换,并且在运行时选择一个 组。瀚高数据库不支持这种做法,转换是与一种语言相关的。作为一种折衷, 这个域包含该转换所适用的语言。
transform_type character_data FROM SQL或者TO SQL

: 表 5.52 transforms 列

triggered_update_columns

对于当前数据库中指定一个列列表(如UPDATE OF column1, column2)的触发器,视图triggered_update_columns标识这些列。没有指定一个列列表的触发器不被包括在这个视图中。只有那些当前用户拥有或具有某种除SELECT之外特权的列才会被显示。

名称 数据类型 描述
trigger_catalog sql_identifier 包含该触发器的数据库名 是当前数据库)
trigger_schema sql_identifier 包含该触发器的模式名
trigger_name sql_identifier 该触发器的名称
event_object_catalog sql_identifier 包含触发器所在的表的数据库名(总是当前数据库)
event_object_schema sql_identifier 包含触发器所在的表的模式名
event_object_table sql_identifier 触发器所在的表的名称
event_object_column sql_identifier 触发器所在的列的名称

: 表 5.53 triggered_update_columns列

triggers

视图triggers包含所有定义在当前数据库中表和视图上的触发器,并且只显示当前用户拥有的触发器或者是当前用户在其上具有某种除SELECT之外特权的触发器。

名称 数据类型 描述
trigger_catalog sql_identifier 包含该触发器的数据库名总是当前数据库)
trigger_schema sql_identifier 包含该触发器的模式名
trigger_name sql_identifier 该触发器的名称
event_manipulation sql_identifier 触发该触发器的事件 (INSERT、 UPDATE或DELETE)
event_object_catalog sql_identifier 包含触发器所在的表的数据库名(总是当前数据库)
event_object_schema sql_identifier 包含该触发器所在的表的模式名
event_object_table sql_identifier 该触发器所在的表的名称
action_order cardinal_number 同一个表上具有相同event_manipulation、action_timing和active触发器之间的触发顺序。在 瀚高数据库中,触发器按照名称顺序被触发,因此这一列会反映这种规则。
action_condition character_data 触发器的WHEN条件,如果没有则为空(如果该表不被一个当前已启用角色拥有也是为空)
action_statement character_data 触发器的WHEN条件,如果没有则为空(如果该表不被一个当前已启用角色拥有也是为空)
action_orientation character_data 标识触发器是对每个被处理的行触发一次还是为每个语句触发一次(ROW或STATEMENT)
action_timing character_data 触发器在什么时候触发 (BEFORE、 AFTER或INSTEAD OF)
action_reference_old_table sql_identifier “旧”传递表的名称,如果没有则为空
action_reference_new_table sql_identifier “新”传递表的名称,如果没有则为空
action_reference_old_row sql_identifier 应用于一个瀚高数据库中不可用的特性
action_reference_new_row sql_identifier 应用于一个瀚高数据库中不可用的特性
created time_stamp 应用于一个瀚高数据库中不可用的特性

: 表 5.54 triggers列

瀚高数据库中的触发器有两点与 SQL 标准不兼容,这会影响在该信息模式中的表示。第一,在数据库中触发器的名字是局限于每个表的,而不是独立于模式对象。因此可能在一个模式中会有重复的触发器名称,只要它们属于不同的表(trigger_catalog和trigger_schema才真正标识了触发器被定义在哪个表上)。第二,在数据库中触发器可以被定义为在多个事件上触发(例如ON INSERT OR UPDATE),而在SQL 标准中只允许一个。如果一个触发器被定义为在多个事件上触发,它在信息模式中被表示为多行,每一行对应于一类事件。作为这两个问题的结果,视图triggers的主键实际上是(trigger_catalog, trigger_schema, event_object_table, trigger_name, event_manipulation),而不是(trigger_catalog, trigger_schema, trigger_name)(这是 SQL 标准指定的)。尽管如此,如果你以符合 SQL 标准(在模式中触发器名称唯一并且每个触发器只能有一种事件类型)的方式定义你的触发器,这将不会影响你。

dt_privileges

视图udt_privileges标识所有在用户定义类型上授予的

USAGE特权,这些特权的授予者或者被授予者是一个当前已被启用的角色。 对每一个类型、授予者和被授予者的组合都有一行。这个视图只显示组合类型(原因见下面的 第 5.59 节)。 域特权见第 5.58 节。

名称 数据类型 描述
grantor sql_identifier 授予该特权的角色名
grantee sql_identifier 被授予该特权的角色名
udt_catalog sql_identifier 包含该类型的数据库名(总是当前数据库)
udt_schema sql_identifier 包含该类型的模式名
udt_name sql_identifier 该类型的名字
privilege_type character_data 总是TYPE USAGE
is_grantable yes_or_no 如果该特权是可授予的,则为YES,否则为NO

: 表 5.55 udt_privileges列

usage_privileges

视图usage_privileges标识所有在多种对象上授予的USAGE特权,这些特权的授予者或者被授予者是一个当前已被启用的角色。在数据库中,这当前适用于排序规则、域、外部数据包装器、外部服务器和序列。对每一个对象、授予者和被授予者都有一行。

由于在瀚高数据库中排序规则并没有真正的特权,这个视图对所有排序规则显示由拥有者授予给PUBLIC的隐式非可授予的USAGE特权。但是对其他对象类型则显示真实的特权。

在数据库中,序列也支持除USAGE之外的SELECT和UPDATE特权。这些是非标准的并且因此在该信息模式中不可见。

名称 数据类型 描述
grantor sql_identifier 授予该特权的角色名
grantee sql_identifier 被授予该特权的角色名
object_catalog sql_identifier 包含该对象的数据库名(总是当前数据库)
object_schema sql_identifier 如果适用,则是包含该对象的模式名,否则为一个空字符串
object_name sql_identifier 该对象的名称
object_type character_data COLLATION或DOMAIN或FOREIGN DATA WRAPPER或FOREIGN SERVER或SEQUENCE
privilege_type character_data 总是USAGE
is_grantable yes_or_no 如果该特权是可授予的,则为YES,否则为NO

: 表 5.56 usage_privileges列

user_defined_types

视图user_defined_types目前包含定义在当前数据库中的所有组合类型。只有那些当前用户能够访问(作为拥有者或具有某些特权)的类型才会被显示。

SQL 知道两种用户定义类型:结构类型(在瀚高数据库中也被称为组合类型)以及独特类型(在瀚高数据库中没有实现)。要经得起未来的考验,请使用列user_defined_type_category来区分它们。其他用户定义类型如基类型和枚举(都是数据库的扩展)不会被显示在这里。对于域,请见第 5.23 节。

名称 数据类型 描述
user_defined_type_catalog sql_identifier 包含该类型的数据库名(总是当前数据库)
user_defined_type_schema sql_identifier 包含该类型的模式名
user_defined_type_name sql_identifier 该类型的名字
user_defined_type_category character_data 当前总是STRUCTURED
is_instantiable yes_or_no 应用于一个瀚高数据库中不可用的特性
is_final yes_or_no 应用于一个瀚高数据库中不可用的特性
ordering_form character_data 应用于一个瀚高数据库中不可用的特性
ordering_category character_data 应用于一个瀚高数据库中不可用的特性
ordering_routine_catalog sql_identifier 应用于一个瀚高数据库中不可用的特性
ordering_routine_schema sql_identifier 应用于一个瀚高数据库中不可用的特性
ordering_routine_name sql_identifier 应用于一个瀚高数据库中不可用的特性
reference_type character_data 应用于一个瀚高数据库中不可用的特性
data_type character_data 应用于一个瀚高数据库中不可用的特性
character_maximum_length cardinal_number 应用于一个瀚高数据库中不可用的特性
character_octet_length cardinal_number 应用于一个瀚高数据库中不可用的特性
character_set_catalog sql_identifier 应用于一个瀚高数据库中不可用的特性
character_set_schema sql_identifier 应用于一个瀚高数据库中不可用的特性
character_set_name sql_identifier 应用于一个瀚高数据库中不可用的特性
collation_catalog sql_identifier 应用于一个瀚高数据库中不可用的特性
collation_schema sql_identifier 应用于一个瀚高数据库中不可用的特性
collation_name sql_identifier 应用于一个瀚高数据库中不可用的特性
numeric_precision cardinal_number 应用于一个瀚高数据库中不可用的特性
numeric_precision_radix cardinal_number 应用于一个瀚高数据库中不可用的特性
numeric_scale cardinal_number 应用于一个瀚高数据库中不可用的特性
datetime_precision cardinal_number 应用于一个瀚高数据库中不可用的特性
interval_type character_data 应用于一个瀚高数据库中不可用的特性
interval_precision cardinal_number 应用于一个瀚高数据库中不可用的特性
source_dtd_identifier sql_identifier 应用于一个瀚高数据库中不可用的特性
ref_dtd_identifier sql_identifier 应用于一个瀚高数据库中不可用的特性

: 表 5.57 user_defined_types列

user_mapping_options

视图user_mapping_options包含在当前数据库中为用户映射定义的所有选项。只有那些当前用户能够访问其相应外部服务器(作为拥有者或具有某些特权)的用户映射才会被显示。

名称 数据类型 描述
authorization_identifier sql_identifier 被映射的用户名,如果映射是公共的则为PUBLIC
foreign_server_catalog sql_identifier 这个映射所使用的外部服务器所在的数据库名(总是当前数据库)
foreign_server_name sql_identifier 这个映射所使用的外部服务器的名称
option_name sql_identifier 一个选项名
option_value character_data 选项的值。除非当前用户是被映射的用户或者映射是PUBLIC的并且当前用户是服务器拥有者或者超级用户,这一列将显示为空。这样做的目的是保护作为用户映射选项存储的口令信息。

: 表 5.58 user_mapping_options列

user_mappings

视图user_mappings包含定义在当前数据库中的所有用户映射。只有当前用户能够访问其对应外部服务器(作为拥有者或具有某些特权)的用户映射才会被显示。

名称 数据类型 描述
authorization_identifier sql_identifier 被映射的用户名,如果映射是公共的则为PUBLIC
foreign_server_catalog sql_identifier 这个映射所使用的外部服务器所在的数据库名(总是当前数据库)
foreign_server_name sql_identifier 这个映射所使用的外部服务器的名称

: 表 5.59 user_mappings列

view_column_usage

视图view_column_usage标识被使用在一个视图的查询表达式(定义该视图的SELECT语句)中的所有列。只有当包含一列的表被一个当前已被启用角色拥有时,该列才会被包括在这个视图中。

注意:
系统表列不被包括。在某个时候这应该会被修复。
名称 数据类型 描述
view_catalog sql_identifier 包含该视图的数据库名(总是当前数据库)
view_schema sql_identifier 包含该视图的模式名
view_name sql_identifier 该视图的名称
table_catalog sql_identifier 被视图所使用的列所属表的数据库名(总是当前数据库)
tableschema sql_identifier 被视图所使用的列所属表的模式名
table_name sql_identifier 被视图所使用的列所属表的名称
column_name sql_identifier 被该视图所使用的列名

: 表 5.60 view_column_usage列

view_routine_usage

视图view_routine_usage标识被使用在一个视图的查询表达式(定义该视图的SELECT语句)中的所有例程(函数和过程)。只有被一个当前已被启用角色拥有的例程才会被包括在这个视图中。

名称 数据类型 描述
table_catalog sql_identifier 包含该视图的数据库名(总是当前数据库)
table_schema sql_identifier 包含该视图的模式名
table_name sql_identifier 该视图的名称
specific_catalog sql_identifier 包含该函数的数据库名(总是当前数据库)
specific_schema sql_identifier 包含该函数的模式名
specific_name sql_identifier 该函数的“专用名”。详 见第5.41 节。

: 表 5.61 view_routine_usage列

view_table_usage

视图view_table_usage标识被使用在一个视图的查询表达式(定义该视图的SELECT语句)中的所有表。只有被一个当前已被启用角色拥有的表才会被包括在这个视图中。

注意:
系统表没有被包括。这应当会在某个时候被修复。
名称 数据类型 描述
view_catalog sql_identifier 包含该视图的数据库名(总是当前数据库)
view_schema sql_identifier 包含该视图的模式名
view_name sql_identifier 该视图的名称
table_catalog sql_identifier 包含被该视图所使用的表的数据库名(总是当前数据库)
table_schema sql_identifier 包含被该视图所使用的表的模式名
table_name sql_identifier 包含被该视图所使用的表的名称

: 表 5.62 view_table_usage列

views

视图views包含定义在当前数据库中的所有视图。只有当前用户能够访问(作为拥有者或具有某些特权)的视图才会被显示。

名称 数据类型 描述
table_catalog sql_identifier 包含该视图的数据库名(总是当前数据库)
table_schema sql_identifier 包含该视图的模式名
table_name sql_identifier 该视图的名称
view_definition character_data 定义视图的查询表达式(如果该视图不被一个当前已被启用角色拥有则为空)
check_option character_data CASCADED 或 LOCAL 如果视图上有CHECK OPTION 定义,如果没有则为NONE。
is_updatable yes_or_no 如果该视图是可更新的(允许UPDATE和DELETE),则为YES,否则为NO
is_insertable_into yes_or_no 如果该视图是可插入的(允许INSERT),则为YES,否则为NO
is_trigger_updatable yes_or_no 如果该视图上有一个INSTEAD OF UPDATE触发器,则为YES,否则为NO
is_trigger_deletable yes_or_no 如果该视图上有一个INSTEAD OF DELETE触发器,则为YES,否则为NO
is_trigger_insertable_into yes_or_no 如果该视图上有一个INSTEAD OF INSERT触发器,则为YES,否则为NO

表 5.63 views列