天天看點

oracle中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.

views, sequences, stored procedures, synonyms, indexes, clusters, and database links。

schema語句,但是它并不是用來建立一個schema的),在建立一個使用者的同時為這個使用者建立一個與使用者名同名的schem并作為該使用者的預設shcema。即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。這就像一個使用者有一個預設的表空間,但是該使用者還可以使用其他的表空間,如果我們在建立對象時不指定表空間,則對象存儲在預設表空間中,要想讓對象存儲在其他表空間中,我們需要在建立對象時指定該對象的表空間。

咳,說了這麼多,給大家舉個例子,否則,一切枯燥無味!

--上面這個查詢就是我說将schema作為user的别名的依據。實際上在使用上,shcema與user完全一樣,沒有什麼差別,在出現schema名的地方也可以出現user名。