Oracle数据库实现查询所有表

 更新时间:2025年12月02日 10:02:12   作者:笑锝没心没肺  
文章总结了在数据库中查询表和列信息的方法,包括查询所有表、特定用户的表、表的列名和注释,以及如何根据表名进行模糊查询,它还提供了如何查询数据库中所有表的大小并进行排序的指令

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;

注:

  • 3-8号的都可以在后面加一个 where owner = 'TEST'
  • 就是你要查的那个用户名下的信息

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;

总结

以上为个人经验,希望能给大家一个参考,也希望大家多多支持脚本之家。

相关文章

  • Oracle安装遇到INS-30131错误的解决方法

    Oracle安装遇到INS-30131错误的解决方法

    这篇文章主要介绍了Oracle安装遇到错误INS-30131的解决方法,感兴趣的小伙伴们可以参考一下
    2016-07-07
  • Oracle Decode()函数使用技巧分享

    Oracle Decode()函数使用技巧分享

    decode()函数是ORACLE PL/SQL是功能强大的函数之一,目前还只有ORACLE公司的SQL提供了此函数,其他数据库厂商的SQL实现还没有此功能
    2013-05-05
  • Oracle数据库删除表空间后磁盘空间不释放的问题及解决

    Oracle数据库删除表空间后磁盘空间不释放的问题及解决

    这篇文章主要介绍了Oracle数据库删除表空间后磁盘空间不释放的问题及解决方案,具有很好的参考价值,希望对大家有所帮助,如有错误或未考虑完全的地方,望不吝赐教
    2023-11-11
  • Oracle 11g数据库安装与卸载的方法图解

    Oracle 11g数据库安装与卸载的方法图解

    如果小编使用的是win7系统,最好采用11g,否则很可能10g出现不兼容安装不成功的情况。下面给大家分享Oracle 11g数据库安装与卸载的方法图解,非常不错,感兴趣的朋友一起看看吧
    2016-09-09
  • Oracle报错:ORA-28001:口令已失效解决办法

    Oracle报错:ORA-28001:口令已失效解决办法

    最近在工作中遇到了一个问题,错误是Oracle报错ORA-28001:口令已失效,下面这篇文章主要给大家介绍了关于Oracle报错:ORA-28001:口令已失效的解决办法,需要的朋友可以参考下
    2023-04-04
  • 一文详解Oracle中RAC的用法

    一文详解Oracle中RAC的用法

    Oracle RAC(Oracle Real Application Server, Cluster)是一种分布式数据库解决方案,本文就将详细给大家介绍一下Oracle RAC的知识点及用法,感兴趣的同学可以参考阅读
    2023-06-06
  • Oracle回滚段的概念,用法和规划及问题的解决

    Oracle回滚段的概念,用法和规划及问题的解决

    Oracle回滚段的概念,用法和规划及问题的解决...
    2007-03-03
  • Oracle高级语法篇之merge into语句复杂案例

    Oracle高级语法篇之merge into语句复杂案例

    Oracle的MERGE INTO语句用于将数据集合并,根据匹配条件执行更新或插入操作,下面这篇文章主要介绍了Oracle高级语法篇之merge into语句复杂的相关资料,文中通过代码介绍的非常详细,需要的朋友可以参考下
    2025-07-07
  • oracle如何恢复被覆盖的存储过程

    oracle如何恢复被覆盖的存储过程

    如果你不小心覆盖了之前的存储过程,那得赶紧闪回,时长越长闪回的可能性越小,下面为大家介绍下恢复原理
    2014-05-05
  • Linux服务器下oracle实现rman自动备份的方式

    Linux服务器下oracle实现rman自动备份的方式

    为确保oracle数据库数据的安全和一致性,一般我们都需要利用备份手段进行数据库的备份,在oracle数据库中,rman因其强大的功能和完善的手段,成为数据库备份的首选,故以下通过两种方式配置脚本,实现rman自动备份,需要的朋友可以参考下
    2024-11-11

最新评论