首页 文章

如何在Oracle SQL中列出模式中的所有表?

提问于
浏览
131

如何在Oracle SQL中列出模式中的所有表?

13 回答

  • 0

    如果使用JDBC(Java)访问Oracle,则可以使用DatabaseMetadata类 . 如果您使用ADO.NET访问Oracle,则可以使用类似的方法 .

    如果使用ODBC访问Oracle,则可以使用SQLTables函数 .

    否则,如果您只需要SQLPlus或类似Oracle客户端中的信息,那么已经提到的其中一个查询就可以了 . 例如:

    select TABLE_NAME from user_tables
    
  • 0
    select * from user_tables;
    

    (显示所有表格)

  • 62
    select * from cat;
    

    它将显示您的schema cat同义词user_catalog中的所有表

  • 2

    SELECT table_name,owner FROM all_tables其中owner ='schema_name'按table_name排序

  • 3

    查看我的simple utility以显示有关db schema的一些信息 . 它基于:Reverse Engineering a Data Model Using the Oracle Data Dictionary

  • 0
    select TABLE_NAME from user_tables;
    

    上面的查询将为您提供该用户中存在的所有表的名称;

  • 1

    如果你还需要获得表格的大小,这将是很方便的:

    select SEGMENT_NAME, PARTITION_NAME, BYTES from user_segments where SEGMENT_TYPE='TABLE' order by 1

  • 12

    OWNER schema下所有表的表和行计数器的名称:

    SELECT table_name, num_rows counter from DBA_TABLES WHERE owner = 'OWNER'

  • 4

    要查看另一个模式中的所有表,您需要具有以下一个或多个系统特权:

    SELECT ANY DICTIONARY
    (SELECT | INSERT | UPDATE | DELETE) ANY TABLE
    

    或者是大锤子,DBA的角色 .

    有了这些,你可以选择:

    SELECT DISTINCT OWNER, OBJECT_NAME 
      FROM DBA_OBJECTS
     WHERE OBJECT_TYPE = 'TABLE'
       AND OWNER = '[some other schema]'
    

    如果没有这些系统权限,您只能看到已被授予某种级别访问权限的表,无论是直接访问还是通过角色 .

    SELECT DISTINCT OWNER, OBJECT_NAME 
      FROM ALL_OBJECTS
     WHERE OBJECT_TYPE = 'TABLE'
       AND OWNER = '[some other schema]'
    

    最后,您始终可以查询自己的表的数据字典,因为您对表的权限无法撤销(从10g开始):

    SELECT DISTINCT OBJECT_NAME 
      FROM USER_OBJECTS
     WHERE OBJECT_TYPE = 'TABLE'
    
  • 0
    SELECT table_name  from all_tables where owner = 'YOURSCHEMA';
    
  • 189

    你可以查询 USER_TABLES

    select TABLE_NAME from user_tables
    
  • 1

    如果以没有DBA权限的普通用户身份登录,则可以使用以下命令查看自己的架构的所有表和视图 .

    select * from tab;
    
  • 2

    试试这个,换掉?使用您的架构名称

    select TABLE_NAME from  INFORMATION_SCHEMA.TABLES
     WHERE TABLE_SCHEMA =?
      AND TABLE_TYPE = 'BASE TABLE'
    

相关问题