Oracle数据库系统视图USER_TAB_COLS和USER_TAB_COLUMNS

本文介绍如何使用Oracle的SYS.USER_TAB_COLS和SYS.USER_TAB_COLUMNS视图来查询表结构,包括列名、数据类型等属性。USER_TAB_COLUMNS从USER_TAB_COLS创建而来,避免显示隐藏字段。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

视图SYS.USER_TAB_COLS和SYS.USER_TAB_COLUMNS都保存了当前用户的表、视图和
Clusters中的列信息。通过检索这两个表,可以方便的获取到表的结构。

主要的列属性有:
   TABLE_NAME
      表、视图或Clusters名称
   COLUMN_NAME
      列名
   DATA_TYPE
      数据类型
   DATA_TYPE_MOD
      Datatype modifier of the column
   DATA_TYPE_OWNER
      Owner of the datatype of the column
   DATA_LENGTH
      长度
   DATA_PRECISION
      精度
   DATA_SCALE
      小数点后位数
   NULLABLE
      是否允许为空
   COLUMN_ID
      列ID
   DEFAULT_LENGTH
      默认值长度
   DATA_DEFAULT
      默认值
   CHAR_LENGTH
      列最大程度,用字符串表示

不同的是USER_TAB_COLS比USER_TAB_COLUMNS多几列:

HIDDEN_COLUMN VARCHAR2(3)
VIRTUAL_COLUMN VARCHAR2(3)
SEGMENT_COLUMN_ID NUMBER
INTERNAL_COLUMN_ID NOT NULL NUMBER
QUALIFIED_COL_NAME VARCHAR2(4000)

而且存储内容多了隐藏字段。这些隐藏字段是Oracle自动添加的,并且设置
HIDDEN_COLUMN和VIRTUAL_COLUMN都是YES。

看oracle的脚本可以发现视图USER_TAB_COLUMNS就是根据视图USER_TAB_COLS创建的:
create or replace view sys.user_tab_columns as
select TABLE_NAME, COLUMN_NAME, DATA_TYPE, DATA_TYPE_MOD, DATA_TYPE_OWNER, 
       DATA_LENGTH, DATA_PRECISION, DATA_SCALE, NULLABLE, COLUMN_ID, 
       DEFAULT_LENGTH, DATA_DEFAULT, NUM_DISTINCT, LOW_VALUE, HIGH_VALUE,
       DENSITY, NUM_NULLS, NUM_BUCKETS, LAST_ANALYZED, SAMPLE_SIZE,
       CHARACTER_SET_NAME, CHAR_COL_DECL_LENGTH, 
       GLOBAL_STATS, USER_STATS, AVG_COL_LEN, CHAR_LENGTH, CHAR_USED, 
       V80_FMT_IMAGE, DATA_UPGRADED 
from USER_TAB_COLS 
where HIDDEN_COLUMN = 'NO'


因此使用时尽量使用USER_TAB_COLUMNS,以避免获取到oracle自行添加的隐藏字段。
### 回答1: user_tab_columnsOracle数据中的系统表,用于存储表的列信息。该表包含了表名、列名、数据类型、长度、精度、是否为空等列属性信息。通过查询user_tab_columns表,可以获取指定表的列信息,方便进行数据操作管理。 ### 回答2: user_tab_columnsOracle中的一个数据字典视图,可以用来查询指定用户(user)下的所有表(table)视图(view)的列(column)信息。 字段含义如下: 1. TABLE_NAME:列所属的表或视图的名称; 2. COLUMN_NAME:列的名称; 3. DATA_TYPE:列的数据类型,比如VARCHAR2、NUMBER等; 4. DATA_LENGTH:列的长度; 5. DATA_PRECISION:数值型列的精度,即小数点后的位数; 6. DATA_SCALE:数值型列的范围,即整数位数; 7. NULLABLE:列是否允许为空,为“Y”表示允许,为“N”表示不允许; 8. COLUMN_ID:列在表或视图中的序号; 9. DEFAULT_LENGTH:列的默认值; 10. CHAR_LENGTH:字符型列的长度; 11. CHAR_USED:字符型列的类型,有CHARVARCHAR2两种; 12. COLUMN_COMMENT:列的注释信息。 通过查询该视图,可以快速了解指定用户下的所有表视图的列信息,这在数据开发维护中非常重要。例如,可以用该视图查询特定表的列名、数据类型、长度等信息,在编写SQL语句时可以直接使用查询到的信息,避免手动输入错误导致的数据错误。同时,该视图也是表结构变更时的重要参考,可以帮助开发人员快速了解表结构的变化。 ### 回答3: user_tab_columnsOracle数据中的一张数据表,用于记录指定用户下所有表的列信息。 具体来说,user_tab_columns记录了一个用户所拥有的所有表的每个列的详细信息,包括列名、列的数据类型、列所属的表的名称、列的顺序等。每当用户在数据中创建一个新的表,Oracle就会自动在user_tab_columns表中为这个表下所有列建立相应的记录。 通过使用user_tab_columns表,用户可以方便地查找一个指定表的列信息,例如,通过查询user_tab_columns表,我们可以快速地获取指定表的所有列名、数据类型、长度、是否可空、默认值等详细信息,从而帮助用户更好地管理查询数据中的数据。 不过,需要注意的是,user_tab_columns表只记录当前用户所拥有的表的列信息,对于其他用户拥有的表,用户无法在该表中找到这些信息。如果用户需要获取其他用户的表的列信息,需要使用其他的系统表,如all_tab_columns、dba_tab_columns等。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值