您好我是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子句或查询问题的特殊内容。
答案 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;