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.
從定義中我們可以看出schema為的集合,為了區分各個集合,我們需要給這個集合起個名字,這些名字就是我們在的方案下看到的許多類似使用者名稱的節點,這些類似使用者名稱的節點其實就是一個schema,schema裡面包含了各種物件如tables views sequences stored procedures synonyms indexes clusters and database links。
一個使用者一般對應一個schema 該使用者的schema名等於使用者名稱,並作為該使用者預設schema。這也就是我們在企業管理器的方案下看到schema名都為資料庫使用者名稱的原因。中不能新建立一個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名。
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名都為資料庫使用者名稱的原因。中不能新建立一個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名。
來自 “ ITPUB部落格 ” ,連結:http://blog.itpub.net/29669210/viewspace-1174919/,如需轉載,請註明出處,否則將追究法律責任。
相關文章
- ORACLE中的兩個概念:user和schema的區別和聯絡Oracle
- oracle中schema指的是什麼?Oracle
- oracle中schema指的是什麼? .Oracle
- ORACLE 中SCHEMA的概念以及資料庫,表空間,資料檔案等的區別(轉)Oracle資料庫
- Oracle中User和Schema的區別和聯絡Oracle
- oracle schema物件Oracle物件
- Oracle User 和 Schema 的區別Oracle
- 水煮oracle33---關於oracle中segment、schema和user區別Oracle
- Oracle EBS中的四類schema及使用FNDCPASS修改密碼的方式Oracle密碼
- sysdba登入oracle的schema是sysOracle
- ORACLE 鎖的概念Oracle
- ORACLE概念的理解!Oracle
- xml schema 中elementFormDefault 的用法簡介XMLORM
- oracle stream之schema級複製Oracle
- Oracle remap_schema需要注意的問題OracleREM
- Oracle建立一個schema的只讀賬號Oracle
- mysql 5.7中嶄新的 mysql sys schemaMySql
- oracle 查詢計劃中的基數cardinality概念(二)Oracle
- oracle 查詢計劃中的基數cardinality概念(一)Oracle
- MYSQL中information_schema簡介MySqlORM
- RadioGroup 在TS schema 中的設定
- Laravel中的核心概念Laravel
- oracle 10g中的幾個概念(sid/db_name/....)Oracle 10g
- Oracle資料泵-schema匯入匯出Oracle
- Spring 中的 XML schema 擴充套件機制SpringXML套件
- MySQL中information_schema是什麼MySqlORM
- Oracle基礎概念Oracle
- 【Oracle概念】-等待事件Oracle事件
- Java中的字串池概念Java字串
- oracle一些易混淆的概念Oracle
- Oracle 臨時表空間的概念Oracle
- Oracle 的一些基本概念Oracle
- ORACLE分割槽表的概念及操作Oracle
- CSS 中重要的層疊概念CSS
- vuex 中的核心概念及原理Vue
- mysql中SQL的概念介紹MySql
- http中的cookie和session概念HTTPCookieSession
- 資料倉儲中的概念