欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页  >  IT编程

Oracle中如何获取用户表信息等详情?

程序员文章站 2022-08-22 22:55:31
1.获取当前用户的用户名 select username from user_users; 2.获取某个用户下的所有表名称 select table_name from all_tables...

1.获取当前用户的用户名

select username from user_users;

2.获取某个用户下的所有表名称

select table_name from all_tables where owner = '用户名';--注意大小写

3.获取当前用户下某张表的详细信息

select t.table_name,        --表名
       t.column_name,       --字段名
       t.data_type,         --字段类型
       t.data_length,       --长度
       t.nullable           --是否为空
from   all_tab_cols t
where  table_name = '表名';  --注意大小写

4.获取当前用户下所有表和字段信息详情

(1)

select       
     t1.table_name,     --表英文名
     t6.comments,       --表中文名
     t1.column_id,      --字段序号
     t1.column_name,    --字段英文名
     t5.comments,       --字段中文名
     t1.data_type,      --字段类型
     t1.data_length,    --数据长度
     t1.char_length,    --字符长度
     t1.data_precision, --数值长度
     t1.data_scale,     --数值精度
     t1.nullable,       --是否允许空值
     t4.index_name,     --索引名称
     t4.column_position, --索引字段顺序号
     t4.descend         --索引字段排序方式
from user_tab_columns t1   --表字段清单
left join (select t2.table_name,       --表名
                  t2.column_name,      --字段名
                  t2.column_position,  --字段顺序号
                  t2.descend,          --排序方式
                  t3.index_name        --索引名称       
           from user_ind_columns t2    --索引字段
           left join user_indexes t3   --索引信息
             on  t2.table_name = t3.table_name and t2.index_name = t3.index_name
            and t3.status = 'valid' and t3.uniqueness = 'unique') t4   --unique:唯一索引
  on  t1.table_name = t4.table_name and t1.column_name = t4.column_name 
left join user_col_comments t5 on   t1.table_name = t5.table_name and t1.column_name = t5.column_name 
left join user_tab_comments t6 on  t1.table_name = t6.table_name
order by  t1.table_name, t1.column_id;

(2)

select
     t1.owner,          --表schema
     t1.table_name,     --表英文名
     t6.comments,       --表中文名
     t1.column_id,      --字段序号
     t1.column_name,    --字段英文名
     t5.comments,       --字段中文名
     t1.data_type,      --字段类型
     t1.data_length,    --数据长度
     t1.char_length,    --字符长度
     t1.data_precision, --数值长度
     t1.data_scale,     --数值精度
     t1.nullable,       --是否允许空值
     t4.index_name,     --索引名称
     t4.column_position, --索引字段顺序号
     t4.descend         --索引字段排序方式
from all_tab_columns t1   --表字段清单
left join (select t2.table_owner,      --表
                  t2.table_name,       --表名
                  t2.column_name,      --字段名
                  t2.column_position,  --字段顺序号
                  t2.descend,          --排序方式
                  t3.index_name        --索引名称       
           from all_ind_columns t2    --索引字段
           left join all_indexes t3   --索引信息
             on t2.table_owner = t3.table_owner and t2.table_name = t3.table_name and t2.index_name = t3.index_name
            and t3.status = 'valid' and t3.uniqueness = 'unique') t4   --unique:唯一索引
  on t1.owner = t4.table_owner and t1.table_name = t4.table_name and t1.column_name = t4.column_name 
left join all_col_comments t5 on t1.owner = t5.owner and t1.table_name = t5.table_name and t1.column_name = t5.column_name 
left join all_tab_comments t6 on t1.owner = t6.owner and t1.table_name = t6.table_name
where t1.owner in ('用户名')
order by t1.owner, t1.table_name, t1.column_id;

备注:方法(1)和方法(2)的区别在于使用的表不同,表以user开头,查询当前用户,以all开头,查询所有用户,以dba开头,查询包括表的内容。在日常使用中,灵活变通,选择不同的表,查询自己需要的内容。