oracle 11g显示用户创建的表

时间:2013-09-30 17:25:35

标签: oracle

您好我是oracle的新手,使用11g exprs版并熟悉mysql。我们可以使用下面的代码来显示mysql中的所有数据库

show databases;

Oracle中的相应命令是什么。或者我如何显示所有数据库。我们还有

 use mydatabase;

在mysql中调用数据库。我怎样才能在oracle中更改数据库。我尝试使用以下命令显示所有所有者及其表格

 select table_name, owner from all_tables;

工作正常。但是当我尝试显示我创建的表格时,添加了一个where cluase

 select table_name, owner from all_tables where owner='root';

显示未选择任何行。为什么会这样?使用where子句时,我也面临着与大多数查询相同的问题。没有where子句它可以正常工作。但在使用时,结果是没有选择行,例如

select * from all_tab_comments where owner='root';
select constraint_name, constraint_type from user_constraints where table_name='location';

oracle中是否存在where子句或查询问题的特殊内容。

3 个答案:

答案 0 :(得分:2)

您的用户名不太可能是root;然而,它可能是ROOT,在这种情况下你可以这样做:

select table_name, owner from all_tables where owner='ROOT';

所有者名称区分大小写,默认情况下包括用户和表名在内的所有对象都是大写的(除非它们是用双引号创建的,这是个坏主意)。如果您以该用户身份连接,只能查看自己的表格,您也可以这样做:

select table_name from user_tables;

还有dba_tables视图,它还会显示您没有权限的表格,但只能通过提升权限查看。

Oracle没有与其他产品一样的'数据库'。您可能意味着schemas,作为对象的逻辑分组。模式和用户本质上是同义词。

要获取所有模式的列表,您可以查询dba_users(如果您具有正确的权限),或者获取具有对象的模式列表 - 因为您可能只有在其他模式中使用对象的用户 - 你可以这样做:

select distinct owner from dba_objects;

...或all_objects再次只能查看您拥有权限的内容。要查看哪种对象:

select owner, object_type, count(*) from dba_objects group by owner, object_type;

该文档解释了包含所有这些信息的static data dictionary views。但是,除非您以特权用户身份进行连接,否则您将无法看到所有这些内容。


两种产品之间会有很多差异;你可能最好不要试图找到一个通过它们工作的教程,而不是使用试验和错误,并试图了解每一步出了什么问题。或者至少熟悉Oracle文档,以便研究问题。

答案 1 :(得分:1)

首先,更改平台时会出现术语差异。 MySQL称之为“数据库”的东西与Oracle称之为“架构”的东西最为相似。如果您使用的是Oracle XE,则计算机上只能有一个数据库(使用Oracle术语)。您可以在该数据库中拥有许多模式。

owner中的all_tables是拥有该表的架构的名称。假设您创建了一个Oracle用户root(对于数据库用户来说这似乎是一个奇怪的选择),并假设您没有创建一个区分大小写的用户名(这会产生大量问题) ()owner将始终为大写。

SELECT owner, table_name
  FROM all_tables
 WHERE owner = 'ROOT'

在Oracle中,您通常不会从一个架构更改为另一个架构。您要么完全限定表名

SELECT *
  FROM schema_name.table_name

或者为要引用的对象创建同义词(公共或私有)

CREATE SYNONYM synonym_name
   FOR schema_name.table_name;

SELECT *
  FROM synonym_name

但是,如果您确实愿意,可以更改当前架构以进行名称解析

ALTER SESSION SET current_schema = <<schema name>>

答案 2 :(得分:0)

使用视图:标签

select * from tabs;