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

Create Tables belonging to different problems with same name in oracle

我参与了一些mysql编程。我们可以在同一用户下为不同的 projects.e.g.(大学数据库,医院数据库)创建单独的数据库 我们如何在 oracle sql 中实现?我想要一个命令行 solution.I.e。 sql加上。 sqlplus出现的问题是,一旦出现两张不同数据库的表重名,就会报错。同一个用户下每个项目都有不同的环境怎么办?

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

我想向您展示在 MySQL 和 Oracle 中完成相同任务的不同方法:

设置当前数据库 (MySQL)/设置当前模式 (Oracle)

MySQL:

use db_name;

甲骨文:

alter session set current_schema = schema_name;

创建完全限定 table:

MySQL:

create table db_name.table_name ...

甲骨文:

create table schema_name.table_name ...

Select 来自另一个 DB/schema table

MySQL:

select * from database_name.table_name where ...

甲骨文:

select * from user_owning_table.table_name where ...

所以您基本上想为您的新项目创建另一个 Oracle 模式(我们称之为 "hospital"):

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(...);