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