正德厚生,臻于至善

Oracle 列信息查询详解(dba_tab_columns、dba_tab_cols)

1 概述
1.1. 作用:描述 table、view 中 '列的定义信息'
   (1) 数据类型、精度、是否为空 等等

1.2. dba_tab_columns 和 dba_tab_cols 区别
   (1) 两者都查询 列 的定义信息 -- 相同点
   (2) dba_tab_cols 中包含 Oracle 的 '隐藏列'(hidden column)
       范围 >= dba_tab_columns  -- 不同点

1.3. 说明
   (1) 咱常用的是 dba_tab_columns  

扩展:Oracle 12c 官方文档 - DBA_TAB_COLUMNS

2 示例
-- 权限由大到小排列如下
select * from dba_tab_columns; -- 需 dba 权限
select * from all_tab_columns;
select * from user_tab_columns;

-- 同理
select * from dba_tab_cols; -- 需 dba 权限
select * from all_tab_cols;
select * from user_tab_cols;

示例:

create table column_test(
  sno         number(3),
  sname       varchar2(30),
  sex         varchar2(2),
  message     clob,
  create_date date
);

select *
  from all_tab_columns t
 where t.owner = 'SCOTT'
   and t.table_name = 'COLUMN_TEST'
 order by t.column_id -- 按定义时的顺序排列
;
查询结果:

3 dba_tab_columns 和 dba_tab_cols 区别
-- hidden_column  Oracle 的 '隐藏列'
dba_tab_columns 相当于 select * from dba_tab_cols where hidden_column = 'NO';

查看 dba_tab_columns 定义就晓得了('Ctrl + 鼠标左键') 
dba_tab_columns 的定义信息:

hidden_column 示例:
create index idx_column_test_sname on column_test(substr(sname, 6));

理解:Oracle 在创建 '函数索引' 的时候,实际上是在表上添加了一个字段,用来保留该函数的计算结果,
     并基于此字段创建 '函数索引'
     在底层 '数据字典' 中,会将这个字段标记为 'hindden'
赞(0) 打赏
未经允许不得转载:徐万新之路 » Oracle 列信息查询详解(dba_tab_columns、dba_tab_cols)

评论 抢沙发

联系我们

觉得文章有用就打赏一下文章作者

支付宝扫一扫

微信扫一扫

登录

找回密码

注册