1

嗨,我是使用 11g exprs 版本的 oracle 的新手,并且熟悉 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 子句或我的查询有什么特别之处吗?

4

3 回答 3

3

您的用户名不太可能是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;

该文档解释了包含所有这些信息的静态数据字典视图。但是,除非您以特权用户身份连接,否则您将无法看到所有这些。


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

于 2013-09-30T17:29:19.543 回答
1

首先,当您更改平台时,术语会有所不同。MySQL 所称的“数据库”与 Oracle 所称的“模式”最为相似。如果您使用的是 Oracle XE,则机器上只能有一个数据库(使用 Oracle 术语)。您可以在该数据库中拥有许多模式。

ownerinall_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>>
于 2013-09-30T17:32:53.053 回答
0

使用视图:标签

select * from tabs;
于 2013-09-30T17:29:08.757 回答