如何查询Oracle数据库以显示Oracle数据库中所有表的名称?


当前回答

尝试从user_tables中选择,其中列出了当前用户拥有的表。

其他回答

下面的查询只列出了所需的数据,而其他的答案给了我额外的数据,这只会让我感到困惑。

select table_name from user_tables;

下面是一个注释的SQL查询片段,描述了如何使用选项:

-- need to have select catalog role
SELECT * FROM dba_tables;

-- to see tables of your schema
SELECT * FROM user_tables;

-- tables inside your schema and tables of other schema which you possess select grants on
SELECT * FROM all_tables;

有了这些,你可以选择:

SELECT DISTINCT OWNER, OBJECT_NAME 
    FROM DBA_OBJECTS 
    WHERE OBJECT_TYPE = 'TABLE' AND OWNER='SOME_SCHEMA_NAME';

SELECT DISTINCT OWNER, OBJECT_NAME 
    FROM ALL_OBJECTS 
    WHERE OBJECT_TYPE = 'TABLE' AND OWNER='SOME_SCHEMA_NAME';

包括视图:

SELECT owner, table_name as table_view
  FROM dba_tables
UNION ALL
SELECT owner, view_name as table_view
  FROM DBA_VIEWS

为当前用户选择表的简单查询:

  SELECT table_name FROM user_tables;