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