在oracle中创建属于同名的不同问题的表

时间:2016-01-16 18:51:31

标签: mysql sql oracle oracle11g sqlplus

我参与了一些mysql编程。我们可以在同一个用户下为不同的项目创建单独的数据库。例如(大学数据库,医院数据库)我们如何在oracle sql中实现这一目标?我想要一个命令行解决方案。即。 sqlplus中。 出现在sqlplus中的问题是,一旦两个不同数据库的表出现相同的名称,就会传递错误。如何在同一个用户下为每个项目创建不同的环境?

1 个答案:

答案 0 :(得分:0)

当你习惯MySQL世界时,开始使用Oracle RDBMS可能有点混乱。 MySQL中的用户不拥有DB对象:tables / views / etc,所有DB对象都属于数据库。在Oracle中,所有对象都属于方案(用户的同义词,表明此用户拥有DB对象)。

我想向您展示MySQL和Oracle中针对相同任务的不同方法:

设置当前数据库(MySQL)/设置当前架构(Oracle)

MySQL的:

use db_name;

甲骨文:

alter session set current_schema = schema_name;

创建完全限定的表格:

MySQL的:

create table db_name.table_name ...

甲骨文:

create table schema_name.table_name ...

从另一个人的数据库/架构表中选择

MySQL的:

select * from database_name.table_name where ...

甲骨文:

select * from user_owning_table.table_name where ...

所以你基本上想要为你的新项目创建另一个Oracle模式(让我们称之为“医院”):

create user hospital identified by "<password>";

create table hospital.employee( ... );
create table college.employee ( ... );

grant select, insert, update, delete on hospital.employee to human_user;
grant select, insert, update, delete on college.employee to human_user;

sqlplus human_user@your_tnsnames_alias
SQL> insert into hospital.employee(...) values(...);
SQL> insert into college.employee(...) values(...);