如何在Oracle SQL中列出架构中的所有表?
如何在Oracle SQL中列出架构中的所有表?您可以查询用户表如何在Oracle SQL中列出架构中的所有表?,sql,oracle,Sql,Oracle,如何在Oracle SQL中列出架构中的所有表?您可以查询用户表 试试这个,换一个?使用您的模式名称 select TABLE_NAME from INFORMATION_SCHEMA.TABLES WHERE TABLE_SCHEMA =? AND TABLE_TYPE = 'BASE TABLE' 查看my以显示有关db模式的一些信息。它基于:如果您使用JDBC Java访问Oracle,则可以使用类。如果您使用ADO.NET访问Oracle,则可以使用类似的方法 如果您使用ODB
试试这个,换一个?使用您的模式名称
select TABLE_NAME from INFORMATION_SCHEMA.TABLES
WHERE TABLE_SCHEMA =?
AND TABLE_TYPE = 'BASE TABLE'
查看my以显示有关db模式的一些信息。它基于:如果您使用JDBC Java访问Oracle,则可以使用类。如果您使用ADO.NET访问Oracle,则可以使用类似的方法
如果您使用ODBC访问Oracle,则可以使用函数 否则,如果您只需要SQLPlus或类似的Oracle客户机中的信息,可以使用前面提到的查询之一。例如:
select TABLE_NAME from user_tables
要查看其他架构中的所有表,您需要具有以下一个或多个系统权限:
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'
如果您在没有DBA许可的情况下以普通用户身份登录,则可以使用以下命令查看您自己的模式的所有表和视图
select * from tab;
它将显示用户目录的模式cat同义词中的所有表
select TABLE_NAME from user_tables;
上述查询将为您提供该用户中存在的所有表的名称
select * from user_tables;
显示所有表格如果您还需要获得表格的大小,这将非常方便:
选择段名称、分区名称、用户段字节,其中段类型为“表”按1排序从所有表中选择表名称、所有者,其中所有者为“模式名称”,按表名称排序表的名称和所有者模式下所有表的行计数器:
从DBA_表中选择表名、num_行计数器,其中owner='owner'如果知道所有者名称,可以直接运行第二个查询 -首先,您可以选择存在的所有所有者:
SELECT DISTINCT(owner) from SYS.ALL_TABLES;
-然后,您可以看到该所有者的以下表格:
SELECT table_name, owner from all_tables where owner like ('%XYZ%');
这是架构中的所有表,而不是架构中的所有表。另外,*_TABLES数据字典视图DBA_TABLES、ALL_TABLES、USER_TABLES include view.replace include view with can include view in seme版本的Oracle。@Adam Musch使用Oracle 10g R2进行测试,它没有返回视图。这更不区分数据库,因此我认为这种解决方案比其他解决方案更好。我认为信息模式适用于我所见过的几乎所有主要数据库。虽然有些人在你能得到的信息方面有所不同,但至少这是一个一致的地方。然而,通过快速的互联网搜索,Oracle似乎是唯一一个不支持信息模式的数据库,尽管它是SQL-92标准的一部分。除了使用%\u对象而不是%\u表之外,最完整的答案是。我记得在9i中,视图将列在%\u表中-例如,尝试自动清空模式会导致诸如DROP TABLE REALY\u a\u VIEW CASCADE约束之类的语句抛出错误。因此,您要么删除带有减号/不在/不存在的视图,要么重新添加%\u对象。另外,与%\u对象对抗会留下一个诱人的暗示,暗示其中可能还有什么!查询中绝对不需要使用DISTINCT。owner,object_name在所有_objects中都是唯一的,这些查询不需要区分,这是真的;但是,所有者、对象名称在dba_对象中无论如何都不是唯一的;包体和包都出现在该视图中,表和索引位于不同的名称空间中。最后一个查询不会像XE 11.2中那样工作。“user\u objects”中似乎没有“owner”列。如果由YOURSCHEMA运行或由具有Adam Musch所述权限的用户运行,则这将仅显示YOURSCHEMA中的所有表。否则,它只会显示模式中授予我们特权的表。
select * from user_tables;
SELECT DISTINCT(owner) from SYS.ALL_TABLES;
SELECT table_name, owner from all_tables where owner like ('%XYZ%');