Oracle中的同義詞SYNONYM
同義詞實質上是指定方案物件的一個別名。透過遮蔽物件的名稱和所有者以及對分散式資料庫的遠端物件提供位置透明性,同義詞可以提供一定程度的安全性。同時,同義詞的易用性較好,降低了資料庫使用者的SQL語句複雜度。
同義詞允許基物件重新命名或者移動,這時,只需對同義詞進行重定義,基於同義詞的應用程式可以繼續執行而無需修改。
你可以建立公共同義詞和私有同義詞。其中,公共同義詞屬於PUBLIC特殊使用者組,資料庫的所有使用者都能訪問;而私有同義詞包含在特定使用者的方案中,只允許特定使用者或者有基物件訪問許可權的使用者進行訪問。
同義詞本身不涉及安全,當你賦予一個同義詞物件許可權時,你實質上是在給同義詞的基物件賦予許可權,同義詞只是基物件的一個別名。
建立同義詞
在你自己的方案中建立私有同義詞時,你必須擁有CREATE SYNONYM許可權;在其他方案中建立私有同義詞時,你必須擁有CREATE ANY SYNONYM許可權;建立公共同義詞,你必須擁有CREATE PUBLIC SYNONYM系統許可權。
我們透過CREATE SYNONYM語句來建立一個同義詞,需要注意的是,為了成功建立同義詞,我們既不需要基物件一定存在,也不需要擁有訪問基物件的許可權。下面的語句建立了jward使用者下emp表的公共同義詞public_emp。
點選(此處)摺疊或開啟
- CREATE PUBLIC SYNONYM public_emp FOR jward.emp
當你為遠端的過程或者函式建立同義詞時,你必須限定遠端物件的方案名稱;相應的,你可以為駐留在本地資料庫的遠端物件建立本地公共同義詞,在這種情況下,在後續呼叫儲存過程或者函式時必須包含資料庫連結。
在DML語句中使用同義詞
你可以使用方案內部的所有私有同義詞;另外,只要你擁有訪問基物件的必要許可權,或者明確地透過特定角色,再或者透過PUBLIC,你就可以訪問任意的公共同義詞。你也可以訪問其他方案的私有同義詞,前提是你被賦予了訪問相應基物件的許可權。
只要你被賦予了基物件許可權,你就可以使用其他使用者的私有同義詞。例如,你只擁有jward.emp表的SELECT許可權,jward.emp表有一個同義詞jward.employee,這時,你就只能對jward.employee同義詞進行查詢操作,而不能使用它進行插入資料。
在DML語句中,同義詞的使用方式和基物件的使用方式完全相同。例如,一個名稱為employee的同義詞,下面語句是有效的:
點選(此處)摺疊或開啟
-
INSERT INTO employee (empno, ename, job)
- VALUES (emp_sequence.NEXTVAL, 'SMITH', 'CLERK');
如果fire_emp是一個獨立的程式或程式包的同義詞,你就可以執行以下命令:
點選(此處)摺疊或開啟
- EXECUTE Fire_emp(7344);
刪除同義詞
你可以刪除本方案中的任一私有同義詞;如果你要刪除其他使用者方案的私有同義詞,你必須擁有DROP ANY SYNONYM系統許可權;如果你要刪除公共同義詞,你必須擁有DROP PUBLIC SYNONYM系統許可權。
你可以透過DROP SYNONYM語句來刪除一個不再需要的同義詞,當刪除私有同義詞時,省略PUBLIC關鍵字;當刪除公共同義詞時,需要包含PUBLIC關鍵字。
例如,下面語句刪除名為emp的同義詞:
點選(此處)摺疊或開啟
下面的語句刪除名為public_emp的公共同義詞:
點選(此處)摺疊或開啟
來自 “ ITPUB部落格 ” ,連結:http://blog.itpub.net/30162081/viewspace-1610012/,如需轉載,請註明出處,否則將追究法律責任。
相關文章
- 匯出oracle公有同義詞Oracle
- 中考常見同義詞和同義短語總結
- [20191122]schama建立同義詞.txt
- 自動為新建的表建立同義詞
- oracle學習筆記(十四) 資料庫物件 索引 檢視 序列 同義詞Oracle筆記資料庫物件索引
- 6.5. 常用物件——6.5.4. 同義詞物件
- 同義詞相似度可以怎樣計算
- 【學習】SQL基礎-017-同義詞SQL
- Oracle儲存過程中呼叫DBLink同義詞出現錯誤:PLS-00201: 必須宣告識別符號Oracle儲存過程符號
- oralce 跨使用者訪問表 同義詞
- Elasticsearch:使用同義詞 synonyms 來提高搜尋效率Elasticsearch
- Kibana的Dev Tools中建立自定義分詞器dev分詞
- Elasticsearch 近義詞詞庫配置Elasticsearch
- 在程式中定義多個同值不同名的變數變數
- 深度學習在攜程搜尋詞義解析中的應用深度學習
- Oracle常用名詞解釋Oracle
- 【TUNE_ORACLE】列出SQL謂詞中需要建立索引的列SQL參考OracleSQL索引
- oracle與infomix異同點Oracle
- 第1節:英語中的名詞,冠詞和數詞,代詞
- oracle轉義字元Oracle字元
- oracle myintis 轉義Oracle
- HanLP分詞工具中的ViterbiSegment分詞流程HanLP分詞Viterbi
- es 自定義分詞外掛分詞
- 大資料---單詞釋義大資料
- elasticsearch之ik分詞器和自定義詞庫實現Elasticsearch分詞
- day88-ElasticSearch-分詞- 自定義擴充套件詞庫Elasticsearch分詞套件
- oracle buffer busy waits等待的含義OracleAI
- Oracle 自定義函式Oracle函式
- Oracle 特殊字元轉義Oracle字元
- Oracle儲存過程中定義多個遊標Oracle儲存過程
- pyhanlp 停用詞與使用者自定義詞典功能詳解HanLP
- Oracle RAC的自定義service自啟動Oracle
- PostgreSQL 原始碼解讀(168)- 查詢#88(PG中的詞法定義:scanner.l)#1SQL原始碼
- PostgreSQL 原始碼解讀(169)- 查詢#89(PG中的詞法定義:scanner.l)#2SQL原始碼
- PostgreSQL 原始碼解讀(170)- 查詢#90(PG中的詞法定義:scanner.l)#3SQL原始碼
- PostgreSQL 原始碼解讀(171)- 查詢#91(PG中的詞法定義:scanner.l)#4SQL原始碼
- 【iOS】定義@property時常用的修飾詞介紹iOS
- MapReduce實現與自定義詞典檔案基於hanLP的中文分詞詳解HanLP中文分詞
- NeurIPS 2024 | 大模型的詞表大小,同樣適用於Scaling Law大模型