用户(user)
A user is a name defined in the database that can connect to and access objects.
用户是定义在数据库中的一个名字,可以访问数据库对象
模式(schema)
A schema is a collection of database objects (used by a user.). Schema objects are the logical structures that directly refer to the database’s data.
模式是数据库对象的集合。模式对象是直接引用数据库数据的逻辑结构
一个用户一般对应一个schema,该用户的schema名等于用户名,并作为该用户缺省schema。
Oracle数据库中不能新创建一个schema,要想创建一个schema,只能通过创建一个用户的方法解决 (Oracle中虽然有create schema语句,但是它并不是用来创建一个schema的),在创建一个用户的同时为这个用户创建一个与用户名同名的schema并作为该用户的缺省 shcema。
| User1 | User2 | User3 |
Schema1 | Y | — | — |
Schema2 | — | Y | — |
Schema3 | — | — | Y |
一个用户有一个缺省的schema,其schema名就等于用户名,当然一个用户还可以使用其他的schema。如果我们访问一个表时,没有指明该表属于哪一个schema中的,系统就会自动给我们在表上加上缺省的schema名。比如我们在访问数据库时,访问scott用户下的emp表,通过 select * from emp; 其实,这sql语句的完整写法为select * from scott.emp。
在数据库中一个对象的完整名称为schema.object,而不属user.object。类似如果我们在创建对象时不指定该对象 的schema,在该对象的schema为用户的缺省schema。这就像一个用户有一个缺省的表空间,但是该用户还可以使用其他的表空间,如果我们在创建对象时不指定表空间,则对象存储在缺省表空间中,要想让对象存储在其他表空间中,我们需要在创建对象时指定该对象的表空间。
个人总结:
虽然名字相同并且一一对应,但user和schema原本就是不同的东西(一个是数据库中定义的名字,一个是数据库中对象的集合)也是为实现不同功能而存在的
参考