一個用戶通常對應一個schema,該用戶的schema名等於用戶名,並做爲該用戶缺省schema。這也就是咱們在企業管理器的方案下看到schema名都爲數據庫用戶名的緣由。Oracle數據庫中不能新建立一個schema,要想建立一個schema,只能經過建立一個用戶的方法解決(Oracle中雖然有create schema語句,可是它並非用來建立一個schema的),在建立一個用戶的同時爲這個用戶建立一個與用戶名同名的schem並做爲該用戶的缺省shcema。即schema的個數同user的個數相同,並且schema名字同user名字一一對應而且相同,全部咱們能夠稱schema爲user的別名,雖然這樣說並不許確,可是更容易理解一些。 sql
一個用戶有一個缺省的schema,其schema名就等於用戶名,固然一個用戶還可使用其餘的schema。若是咱們訪問一個表時,沒有指明該表屬於哪個schema中的,系統就會自動給咱們在表上加上缺省的sheman名。好比咱們在訪問數據庫時,訪問scott用戶下的emp表,經過select * from emp; 其實,這sql語句的完整寫法爲select * from scott.emp。在數據庫中一個對象的完整名稱爲schema.object,而不屬user.object。相似若是咱們在建立對象時不指定該對象的schema,在該對象的schema爲用戶的缺省schema。這就像一個用戶有一個缺省的表空間,可是該用戶還可使用其餘的表空間,若是咱們在建立對象時不指定表空間,則對象存儲在缺省表空間中,要想讓對象存儲在其餘表空間中,咱們須要在建立對象時指定該對象的表空間。 數據庫
oracle中的schema就是指一個用戶下全部對象的集合,schema自己不能理解成一個對象,oracle並無提供建立schema的語法,schema也並非在建立user時就建立,而是在該用戶下建立第一個對象以後schema也隨之產生,只要user下存在對象,schema就必定存在,user下若是不存在對象,schema也不存在;這一點相似於temp tablespace group,另外也能夠經過oem來觀察,若是建立一個新用戶,該用戶下若是沒有對象則schema不存在,若是建立一個對象則和用戶同名的schema也隨之產生。 oracle