Oracle資料庫開發——同義詞
同義詞是物件的別名。Oracle同義詞有公和私有兩種。
同義詞不佔用任何實際的儲存空間,只是在Oracle的資料字典中保留其定義描述。
公有同義詞,為一個特殊的使用者組Public所擁有,資料庫中所有使用者都可以使用公有同義詞。公有同義詞一般用來標識一些比較普通的資料庫物件,
這些物件往往大家都需要引用。
私有同義詞,由建立它的使用者所擁有,建立者可以透過授權控制其它使用者是否有權使用該同義詞。
基本語法:
create [public] synonym for [模式.]物件名[@資料庫連結];
例1:建立公有同義詞
SQL> create public synonym books for zhangbin.books;
Synonym created
SQL> create public synonym pubbooks for zhangbin.books;
Synonym created
SQL> select * from all_synonyms where table_owner = 'ZHANGBIN';
OWNER SYNONYM_NAME TABLE_OWNER TABLE_NAME DB_LINK
------------------------------ ------------------------------ ------------------------------ ------------------------------ ---------
PUBLIC PUBBOOKS ZHANGBIN BOOKS
SQL> select * from user_synonyms;
SYNONYM_NAME TABLE_OWNER TABLE_NAME DB_LINK
------------------------------ ------------------------------ ------------------------------ --------------------------
結果驗證了,公有同義詞建立到了Public使用者下。使用者私有同義詞檢視下沒有記錄。
例2:建立私有同義詞
SQL> create synonym my_books for zhangbin.books;
Synonym created
SQL> select * from user_synonyms;
SYNONYM_NAME TABLE_OWNER TABLE_NAME DB_LINK
------------------------------ ------------------------------ ------------------------------ -------------------------
MY_BOOKS ZHANGBIN BOOKS
--此時使用者私有同義詞下有記錄。
SQL> select * from all_synonyms where table_owner = 'ZHANGBIN';
OWNER SYNONYM_NAME TABLE_OWNER TABLE_NAME DB_LINK
------------------------------ ------------------------------ ------------------------------ ------------------------------ --------
PUBLIC PUBBOOKS ZHANGBIN BOOKS
ZHANGBIN MY_BOOKS ZHANGBIN BOOKS
可以看到owner列分別為PUBLIC 和 使用者。
*注意:使用同義詞只能簡化SQL的書寫,使用同義詞訪問資料庫物件時,仍然需要正常的授權。
例3:
SQL> conn a/a;
Connected to Oracle Database 11g Enterprise Edition Release 11.2.0.1.0
Connected as a
SQL> select * from pubbooks;
select * from pubbooks
ORA-00942: 表或檢視不存在
SQL> conn zhangbin/zhangbin;
Connected to Oracle Database 11g Enterprise Edition Release 11.2.0.1.0
Connected as zhangbin
SQL> grant select on zhangbin.books to a;
Grant succeeded
SQL> conn a/a
Connected to Oracle Database 11g Enterprise Edition Release 11.2.0.1.0
Connected as a
SQL> select * from pubbooks;
BOOKID BOOKNUM BOOKNAME PUBID BOOKPRICE TYPEID BOOKTIME SALESCOUNT CONTENT IMG
------- ------- -------- ------- ---------- ------- ----------- ---------- -------- ----
結果驗證了需要授權!
例4: 利用私有同義詞訪問
1.grant select on zhangbin.books to a;
2.conn a/a;
create synonym zhangbin_books for zhangbin.books;
select * from zhangbin_books;
==================================================
SQL> grant select on books to a;
Grant succeeded
SQL> conn a/a
Connected to Oracle Database 11g Enterprise Edition Release 11.2.0.1.0
Connected as a
SQL> create synonym zhangbin_books for zhangbin.books;
Synonym created
SQL> select * from zhangbin_books;
BOOKID BOOKNUM BOOKNAME PUBID BOOKPRICE TYPEID BOOKTIME SALESCOUNT CONTENT IMG
------- ------- -------- ------- ---------- ------- ----------- --------------------------------------- --------
同義詞的作用:
1.多使用者協同開發中,可以遮蔽物件的名字及其持有者,從而簡化SQL語句的書寫.
2.同義詞可以指向遠端Oracle資料庫伺服器上的物件,這為訪問分散式資料庫上的遠端物件提供位置透明性。
同義詞不佔用任何實際的儲存空間,只是在Oracle的資料字典中保留其定義描述。
公有同義詞,為一個特殊的使用者組Public所擁有,資料庫中所有使用者都可以使用公有同義詞。公有同義詞一般用來標識一些比較普通的資料庫物件,
這些物件往往大家都需要引用。
私有同義詞,由建立它的使用者所擁有,建立者可以透過授權控制其它使用者是否有權使用該同義詞。
基本語法:
create [public] synonym for [模式.]物件名[@資料庫連結];
例1:建立公有同義詞
SQL> create public synonym books for zhangbin.books;
Synonym created
SQL> create public synonym pubbooks for zhangbin.books;
Synonym created
SQL> select * from all_synonyms where table_owner = 'ZHANGBIN';
OWNER SYNONYM_NAME TABLE_OWNER TABLE_NAME DB_LINK
------------------------------ ------------------------------ ------------------------------ ------------------------------ ---------
PUBLIC PUBBOOKS ZHANGBIN BOOKS
SQL> select * from user_synonyms;
SYNONYM_NAME TABLE_OWNER TABLE_NAME DB_LINK
------------------------------ ------------------------------ ------------------------------ --------------------------
結果驗證了,公有同義詞建立到了Public使用者下。使用者私有同義詞檢視下沒有記錄。
例2:建立私有同義詞
SQL> create synonym my_books for zhangbin.books;
Synonym created
SQL> select * from user_synonyms;
SYNONYM_NAME TABLE_OWNER TABLE_NAME DB_LINK
------------------------------ ------------------------------ ------------------------------ -------------------------
MY_BOOKS ZHANGBIN BOOKS
--此時使用者私有同義詞下有記錄。
SQL> select * from all_synonyms where table_owner = 'ZHANGBIN';
OWNER SYNONYM_NAME TABLE_OWNER TABLE_NAME DB_LINK
------------------------------ ------------------------------ ------------------------------ ------------------------------ --------
PUBLIC PUBBOOKS ZHANGBIN BOOKS
ZHANGBIN MY_BOOKS ZHANGBIN BOOKS
可以看到owner列分別為PUBLIC 和 使用者。
*注意:使用同義詞只能簡化SQL的書寫,使用同義詞訪問資料庫物件時,仍然需要正常的授權。
例3:
SQL> conn a/a;
Connected to Oracle Database 11g Enterprise Edition Release 11.2.0.1.0
Connected as a
SQL> select * from pubbooks;
select * from pubbooks
ORA-00942: 表或檢視不存在
SQL> conn zhangbin/zhangbin;
Connected to Oracle Database 11g Enterprise Edition Release 11.2.0.1.0
Connected as zhangbin
SQL> grant select on zhangbin.books to a;
Grant succeeded
SQL> conn a/a
Connected to Oracle Database 11g Enterprise Edition Release 11.2.0.1.0
Connected as a
SQL> select * from pubbooks;
BOOKID BOOKNUM BOOKNAME PUBID BOOKPRICE TYPEID BOOKTIME SALESCOUNT CONTENT IMG
------- ------- -------- ------- ---------- ------- ----------- ---------- -------- ----
結果驗證了需要授權!
例4: 利用私有同義詞訪問
1.grant select on zhangbin.books to a;
2.conn a/a;
create synonym zhangbin_books for zhangbin.books;
select * from zhangbin_books;
==================================================
SQL> grant select on books to a;
Grant succeeded
SQL> conn a/a
Connected to Oracle Database 11g Enterprise Edition Release 11.2.0.1.0
Connected as a
SQL> create synonym zhangbin_books for zhangbin.books;
Synonym created
SQL> select * from zhangbin_books;
BOOKID BOOKNUM BOOKNAME PUBID BOOKPRICE TYPEID BOOKTIME SALESCOUNT CONTENT IMG
------- ------- -------- ------- ---------- ------- ----------- --------------------------------------- --------
同義詞的作用:
1.多使用者協同開發中,可以遮蔽物件的名字及其持有者,從而簡化SQL語句的書寫.
2.同義詞可以指向遠端Oracle資料庫伺服器上的物件,這為訪問分散式資料庫上的遠端物件提供位置透明性。
來自 “ ITPUB部落格 ” ,連結:http://blog.itpub.net/28929558/viewspace-1147632/,如需轉載,請註明出處,否則將追究法律責任。
相關文章
- Oracle——04同義詞與資料庫連結Oracle資料庫
- 資料庫鏈與同義詞資料庫
- Oracle資料鏈+同義詞+訪問遠端資料庫Oracle資料庫
- 【Oracle】-【同義詞】-public與非public同義詞Oracle
- ORACLE公有/私有同義詞Oracle
- oracle學習筆記(十四) 資料庫物件 索引 檢視 序列 同義詞Oracle筆記資料庫物件索引
- 匯出oracle公有同義詞Oracle
- Oracle中的同義詞SYNONYMOracle
- Oracle同義詞建立方法Oracle
- Oracle同義詞 kingsql作品OracleSQL
- 匯出Oracle中的同義詞Oracle
- Oracle同義詞建立方法(轉)Oracle
- 物件、同義詞和公有同義詞順序選取物件
- 資料庫物件、表空間、表、檢視、索引、同義詞序列等的字典資料庫物件索引
- Oracle資料庫開發——序列Oracle資料庫
- 在一個資料庫中模擬兩個資料庫(每個資料庫中使用者都建立表的同義詞)資料庫
- Oracle之處理synonym同義詞無效物件Oracle物件
- 授權與同義詞
- 詳解同義詞(synonym)
- SQLServer訪問Oracle(通過同義詞-檢視-資料字典)出現的問題SQLServerOracle
- 實驗:用檢視加同義詞實現資料安全
- 批量的遷移一個資料庫上某使用者所有表的同義詞資料庫
- 雲資料庫MySQL多人協同開發實踐資料庫MySql
- 自定義開發資料庫升級程式資料庫
- Oracle資料庫開發——表(概念)Oracle資料庫
- Oracle資料庫開發指南(二)Oracle資料庫
- ORACLE資料庫開發經驗Oracle資料庫
- 中考常見同義詞和同義短語總結
- 多層巢狀同義詞巢狀
- 官檔同義詞學習
- Oracle基礎 12 物件 objects 同義詞/序列/試圖/索引Oracle物件Object索引
- Oracle資料庫開發——臨時表Oracle資料庫
- Oracle資料庫開發——瞭解索引Oracle資料庫索引
- Oracle資料庫開發指南(原創)Oracle資料庫
- SYS查詢不到的同義詞
- 大資料---單詞釋義大資料
- Oracle資料庫開發——瞭解rowidOracle資料庫
- Oracle資料庫開發——深入索引結構Oracle資料庫索引