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

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开头,查询包括表的内容。在日常使用中,灵活变通,选择不同的表,查询自己需要的内容。

(0)
上一篇 2022年3月22日
下一篇 2022年3月22日

相关推荐