概述:sql
A user is a name defined in the database that can connect to and access objects.數據庫
大意:Oracle用戶是用鏈接數據庫和訪問數據庫對象的。(用戶是用來鏈接數據庫訪問數據庫)。oracle
(二)什麼叫模式(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.
大意:模式是數據庫對象的集合。模式對象是數據庫數據的邏輯結構。(把數據庫對象用模式分開成不一樣的邏輯結構)。blog
(三)用戶(user)與模式(schema)的區別:
Schemas and users help database administrators manage database security.
大意:用戶是用來鏈接數據庫對象。而模式用是用建立管理對象的。(模式跟用戶在oracle 是一對一的關係。)it
詳解:io
從官方的定義中,咱們能夠看出schema爲數據庫對象的集合。爲了區分各個集合,咱們須要給這個集合起個名字,這些名字就是咱們在企業管理器的方案下看到 的許多相似用戶名的節點,這些相似用戶名的節點其實就是一個schema。table
schema裏面包含了各類對象如tables, views, sequences, stored procedures, synonyms, indexes, clusters, and database links。sed
一個用戶通常對應一個schema,該用戶的schema名等於用戶名,並做爲該用戶缺省schema。這也就是咱們在企業管理器的方案下看 到schema名都爲數據庫用戶名的緣由。而Oracle數據庫中不能新建立一個schema,要想建立一個schema,只能經過建立一個用戶的方法解決 (Oracle中雖然有create schema語句,可是它並非用來建立一個schema的),在建立一個用戶的同時爲這個用戶建立一個與用戶名同名的schem並做爲該用戶的缺省 shcema。object
即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。這就像一個用戶有一個缺省的表空間,可是該用戶還可使用其餘的表空間,若是咱們在創 建對象時不指定表空間,則對象存儲在缺省表空間中,要想讓對象存儲在其餘表空間中,咱們須要在建立對象時指定該對象的表空間。
1個數據庫下,能夠有多個模式。
1個模式下,能夠有0個或多個表 。
首先我來作一個比喻,什麼是Database,什麼是Schema,什麼是Table,什麼是Column,什麼是Row,什麼是User?咱們能夠把Database看做是一個大倉庫,倉庫分了不少很
多的房間,Schema就是其中的房間,一個Schema表明一個房間,Table能夠看做是每一個Schema中的牀,Table(牀)就被放入每一個房間中,不能放置在房間以外,那豈不是晚上睡
覺無家可歸了J。,而後牀上能夠放置不少物品,就比如Table上能夠放置不少列和行同樣,數據庫中存儲數據的基本單元是Table,現實中每一個倉庫放置物品的基本單位就是牀,
User就是每一個Schema的主人,【因此Schema包含的是Object,而不是User】,其實User是對應於數據庫的(即User是每一個對應數據庫的主人),既然有操做數據庫(倉庫)的權
利,就確定有操做數據庫中每一個Schema(房間)的權利,就是說每一個數據庫映射的User有每一個Schema(房間)的鑰匙,換句話說,若是他是某個倉庫的主人,那麼這個倉庫的使
用權和倉庫中的全部東西都是他的(包括房間),他有徹底的操做權,能夠扔掉不用的東西從每一個房間,也能夠放置一些有用的東西到某一個房間,固然也能夠拆除一個房間
(Remove Schema)。呵呵,和現實也太類似了吧。我(倉庫的管理員)還能夠給User分配具體的權限,也就是他到某一個房間能作些什麼,是隻能看(Read-Only),仍是能夠
像主人同樣有全部的控制權(R/W),這個就要看這個User所對應的角色Role了,至於分配權限的問題,我留在之後單獨的blog中詳述。比喻到這裏,相信你們都清楚了吧。