USER_TAB_COLUMNS(COLS)

端木渝
2023-12-01
45.4.4 列:USER_TAB_COLUMNS(COLS)
本文来自51CTO,本文原作者有一系列文章:[url]http://book.51cto.com/art/201007/212393.htm[/url]


尽管用户不从列中进行查询,但显示列的数据字典视图与表的数据字典视图仍然密切相关。USER_TAB_COLUMNS 视图列出了特定于列的信息。也可以通过公有同义词COLS 查询USER_TAB_COLUMNS 视图。

可从USER_TAB_COLUMNS 视图查询的列可以主要分为3 类:

标识列,如Table_Name、Column_Name 及Column_ID

与定义有关的列,如Data_Type、Data_Length、Data_Precision、Data_Scale、Nullable及Default_Length

与统计信息有关的列,如Num_Distinct、Low_Value、High_Value、Density、Num_Nulls及其他列

Table_Name 列和Column_Name 列包含表和列的名称。与定义有关的列的用法在附录A中的“DATATYPE”项中描述。与统计信息有关的列在分析表时填充。列的统计信息也在USER_TAB_COL_STATISTICS 视图(稍后介绍)中提供。

要查看表的列定义,可查询USER_TAB_COLUMNS 视图,并在where 子句中指定Table_Name:

[table]
|select Column_Name, Data_Type from USER_TAB_COLUMNS where Table_Name = 'NEWSPAPER'; COLUMN_NAME DATA_TYPE | FEATURE VARCHAR2 SECTION CHAR PAGE NUMBER
[/table] 本示例中的信息还可通过SQL*Plus 中的describe 命令获得。但是,describe 命令不提供查看列的默认值和统计信息的选项。ALL_TAB_COLUMNS 视图显示用户拥有的和授权该用户(直接授权或者通过授权给PUBLIC(所有用户)) 访问的所有表和视图的列。由于ALL_TAB_COLUMNS 能包含多个用户的项,因此,除了USER_TAB_COLUMNS 视图中的列,它还包含一个Owner 列。DBA_TAB_COLUMNS 视图与ALL_TAB_COLUMNS 视图有相同的列定义,DBA _TAB_COLUMNS 视图列出了数据库中所有表和视图的列定义。

1. 列统计信息

大多数的列统计信息可从USER_TAB_COLUMNS 视图( 以前的存放地点) 和USE_TAB_COL_ STATISTICS 视图中得到。用于USER_TAB_COL_STATISTICS 视图的列就是USER_TAB_COLUMNS 视图中与统计信息有关的列,以及Table_Name 列和Column_Name 列。USER_TAB_COL_STATISTICS 视图包含由USER_TAB_COLUMNS 视图提供的向后兼容的统计信息列。可以通过USER_TAB_COL_STATISTICS 视图访问这些列。

2. 列值直方图

可以使用直方图改善基于成本的优化程序所使用的分析。USER_TAB_HISTOGRAMS 视图包含每一列的直方图信息,包括Table_Name 、Column_Name 、Endpoint_Number 、Endpoint_Value 和Endpoint_Actual_Value。USER_TAB_HISTOGRAMS 视图中的值由优化程序使用,以确定表中列值的分布。USER_TAB_HISTOGRAMS 视图的“ALL”版本和“DBA”版本都是可用的版本。

3. 可更新的列

可以在视图中更新记录,该视图包含它们在视图查询中的连接,只要该连接满足某种特定的条件即可。 USER_UPDATABLE_COLUMNS 视图列出了可更新的所有列。可以查询该列的Owner、 Table_Name 和Column_Name。如果列能够更新,则Updatable 列有一个值为YES;如果列不能更新,则有一个值为NO。还可以进行查询,以确定是否能通过Insertable列和Deletable 列在视图中插入或删除记录。
 类似资料: