Oracle数据库Schema的简介

百度文库中 Schema 的解释:
数据库中的Schema,为 数据库对象的集合,一个用户通常对应一个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.
A user is a name defined in the database that can connect to and access objects.
schemas and users help database administrators manage database security.
从定义中咱们能够看出schema为 数据库对象的集合,为了区分各个集合,咱们须要给这个集合起个名字,这些名字就是咱们在 企业管理器的方案下看到的许多相似用户名的节点,这些相似用户名的节点其实就是一个schema,schema里面包含了各类对象如tables views sequences stored procedures synonyms indexes clusters and database links。
一个用户通常对应一个schema 该用户的schema名等于用户名,并做为该用户缺省schema。这也就是咱们在 企业管理器的方案下看到schema名都为数据库用户名的缘由。oracle数据库中不能新建立一个schema,要想建立一个schema,只能经过建立一个用户的方法解决(oracle中虽然有create schema语句,可是它并非用来建立一个schema的),在建立一个用户的同时为这个用户建立一个与用户名同名的schema并做为该用户的缺省schema。即schema的个数同user的个数相同,并且schema名字同user名字一一 对应而且相同,全部咱们能够称schema为user的别名,虽然这样说并不许确,可是更容易理解一些。
一个用户有一个缺省的schema,其schema名就等于用户名,固然一个用户还可使用其余的schema。若是咱们访问一个表时,没有指明该表属于哪个schema中的,系统就会自动给咱们在表上加上缺省的sheman名。好比咱们在访问数据库时,访问scott用户下的emp表,经过select from emp 其实,这sql语句的完整写法为select from scott.emp。在数据库中一个对象的完整名称为schema.object,而不属user.object。相似若是咱们在建立对象时不指定该对象的schema,在该对象的schema为用户的缺省schema。这就像一个用户有一个缺省的 表空间,可是该用户还可使用其余的表空间,若是咱们在建立对象时不指定表空间,则对象存储在缺省表空间中,要想让对象存储在其余表空间中,咱们须要在建立对象时指定该对象的表空间。
sql> grant dba to scott
sql> create table test(name char(10))
table created.
sql> create table system.test(name char(10))
table created.
sql> insert into test values(' scott' )
1 row created.
sql> insert into system.test values(' system' )
1 row created.
sql> commit
commit complete.
sql> conn system/manager
connected.
sql> select from test
name
----------
system
sql> alter session set current_schema = scott --改变用户缺省schema名
session altered.
sql> select from test
name
----------
scott
sql> select owner table_name from dba_tables where table_name=upper(' test' )
owner table_name
------------------------------ ------------------------------
scott test
system test
--上面这个查询就是我说将schema做为user的别名的依据。实际上在使用上,shcema与user彻底同样,没有什么区别,在出现schema名的地方也能够出现user名。
相关文章
相关标签/搜索