it编程 > 数据库 > Oracle

Oracle数据库实现查询所有表

21人参与 2025-12-02 Oracle

1、查询当前数据库下的所有表

select * from all_tables where owner = 'test';

注:all_tables查出来是查得所有用户下的表,当然也包括你登录的用下的表,然后加一个where你要查的那个用户名就可以了。(记得用户名要大写)

模糊查询该条件的表名称:

select * from all_tables where owner = 'test' and table_name like '%s%';

2、查询当前登录用户的所有表

select * from user_tables;

简写:

select * from tabs;

模糊查询该条件的表名称:

select * from user_tables where table_name like '%s%';

3、查询所有用户的表,视图等

select * from all_tab_comments;

4、查询本用户的表,视图等

select * from user_tab_comments;

5、查询所有用户的表的列名和注释

select * from all_col_comments;

6、查询本用户的表的列名和注释

select * from user_col_comments;

7、查询所有用户的表的列名等信息

select * from all_tab_columns;

8、查询本用户的表的列名等信息

select * from user_tab_columns;

注:

9、查询一个数据库中所有表的大小并排序

select *
  from (select t1.owner,
               t1.table_name,
               round(t1.table_size / 1024 / 1024) +
               round(nvl(t3.lob_data_size, 0) / 1024 / 1024) table_size_mb,
               round(nvl(t2.index_size, 0) / 1024 / 1024) +
               round(nvl(t3.lob_index_size, 0) / 1024 / 1024) index_size_mb,
               round(t1.table_size / 1024 / 1024) +
               round(nvl(t3.lob_data_size, 0) / 1024 / 1024) +
               round(nvl(t2.index_size, 0) / 1024 / 1024) +
               round(nvl(t3.lob_index_size, 0) / 1024 / 1024 / 1024) size_mb
          from (select owner,
                       segment_name table_name,
                       round(sum(bytes)) table_size
                  from dba_segments
                 where segment_type like 'table%'
                 group by owner, segment_name) t1,
               (select a.owner, a.table_name, sum(b.bytes) index_size
                  from (select owner, table_name, index_name
                          from dba_indexes
                         where index_type <> 'lob') a,
                       (select owner, segment_name, bytes from dba_segments) b
                 where a.owner = b.owner
                   and a.index_name = b.segment_name
                 group by a.owner, a.table_name) t2,
               (select a.owner,
                       a.table_name,
                       sum(b.lob_data_size) lob_data_size,
                       sum(c.lob_index_size) lob_index_size
                  from (select owner, table_name, segment_name, index_name
                          from dba_lobs) a,
                       (select owner, segment_name, sum(bytes) lob_data_size
                          from dba_segments
                         group by owner, segment_name) b,
                       (select owner, segment_name, sum(bytes) lob_index_size
                          from dba_segments
                         group by owner, segment_name) c
                 where a.owner = b.owner
                   and a.segment_name = b.segment_name
                   and a.owner = c.owner
                   and a.index_name = c.segment_name
                 group by a.owner, a.table_name) t3
         where t1.owner = t2.owner(+)
           and t1.table_name = t2.table_name(+)
           and t1.owner = t3.owner(+)
           and t1.table_name = t3.table_name(+)
           and t1.owner = upper('test')
         order by 5 desc) x;

总结

以上为个人经验,希望能给大家一个参考,也希望大家多多支持代码网。

(0)

您想发表意见!!点此发布评论

推荐阅读

Oracle数据库常用函数总结大全

12-08

Oracle ADG相关查询的实现

12-10

Nginx概念、架构、配置与虚拟主机实战操作指南

11-26

Oracle杀会话的实现步骤

12-10

Oracle数据库物理备份与恢复实战教程

11-26

ORACLE RMAN复制数据库(Duplicate)详细指南

11-25

猜你喜欢

版权声明:本文内容由互联网用户贡献,该文观点仅代表作者本人。本站仅提供信息存储服务,不拥有所有权,不承担相关法律责任。 如发现本站有涉嫌抄袭侵权/违法违规的内容, 请发送邮件至 2386932994@qq.com 举报,一经查实将立刻删除。

发表评论