❶ 如何創建同義詞
同義詞是資料庫方案對象的一個別名,經常用於簡化對象訪問和提高對象訪問的安全性。下面就讓我們來了解一下如何創建同義詞!
如何創建同義詞
Oracle的同義詞有兩種類型:公有同義詞與私有同義詞。
1:公有同義詞由一個特殊的用戶組Public所擁有。
2:私有同義詞是由創建他的用戶所有。
創建同義詞的語法:
Create [public] synonym 同義詞名稱 for [username.]objectName
刪除同義詞的語法:
Drop [public] synonym 同義詞名稱
查看所有同義詞:
select * from dba_synonyms
【Oracle同義詞創建及其作用】
從字面上理解就是別名的意思,和試圖的功能類似。就是一種映射關系。
1.創建同義詞語句:
create public synonym table_name for user.table_name;
其中第一個user_table和第二個user_table可以不一樣。 此外如果要創建一個遠程的資料庫上的某張表的同義詞,需要先創建一個Database Link(資料庫連接)來擴展訪問,然後在使用如下語句創建資料庫同義詞:create synonym table_name for table_name@DB_Link; 當然,你可能需要在user用戶中給當前用戶(user2)授權: grant select//on user2
2.刪除同義詞:
drop public synonym table_name;
3.查看所有同義詞:
select * from dba_synonyms
同義詞擁有如下好處:節省大量的資料庫空間,對不同用戶的操作同一張表沒有多少差別;擴展的資料庫的.使用范圍,能夠在不同的資料庫用戶之間實現無縫交互;同義詞可以創建在不同一個資料庫伺服器上,通過網路實現連接。
Oracle資料庫中提供了同義詞管理的功能。Oracle同義詞是資料庫方案對象的一個別名,經常用於簡化對象訪問和提高對象訪問的安全性。
AD:
在Oracle中對用戶的管理是使用許可權的方式來管理的,也就是說,如果我們想使用資料庫,我們就必須得有許可權,但是如果是別人將許可權授予了我們,我們也是能對資料庫進行操作的,但是我們必須要已授權的表的名稱前鍵入該表所有者的名稱,所以這就是比較麻煩的,遇到這種情況,我們該怎麼辦呢?創建個Oracle同義詞吧!這樣我們就可以直接使用同義詞來使用表了。
1.同義詞的概念
Oracle資料庫中提供了同義詞管理的功能。同義詞是資料庫方案對象的一個別名,經常用於簡化對象訪問和提高對象訪問的安全性。在使用同義詞時,Oracle資料庫將它翻譯成對應方案對象的名字。與視圖類似,同義詞並不佔用實際存儲空間,只有在數據字典中保存了同義詞的定義。在Oracle資料庫中的大部分資料庫對象,如表、視圖、同義詞、序列、存儲過程、包等等,資料庫管理員都可以根據實際情況為他們定義同義詞。
2.Oracle同義詞的分類
Oracle同義詞有兩種類型,分別是公用Oracle同義詞與私有Oracle同義詞。
1)公用Oracle同義詞:由一個特殊的用戶組Public所擁有。顧名思義,資料庫中所有的用戶都可以使用公用同義詞。公用同義詞往往用來標示一些比較普通的資料庫對象,這些對象往往大家都需要引用。
2)私有Oracle同義詞:它是跟公用同義詞所對應,他是由創建他的用戶所有。當然,這個同義詞的創建者,可以通過授權控制其他用戶是否有權使用屬於自己的私有同義詞。
3.Oracle同義詞創建及刪除 創建公有Oracle同義詞的語法:Create [public] synonym 同義詞名稱 for [username.]objectName;
Drop [public] synonym 同義詞名稱
4.Oracle同義詞的作用
1) 多用戶協同開發中,可以屏蔽對象的名字及其持有者。如果沒有同義詞,當操作其他用戶的表時,必須通過user名.object名的形式,採用了Oracle同義詞之後就可以隱蔽掉user名,當然這里要注意的是:public同義詞只是為資料庫對象定義了一個公共的別名,其他用戶能否通過這個別名訪問這個資料庫對象,還要看是否已經為這個用戶授權。
2) 為用戶簡化sql語句。上面的一條其實就是一種簡化sql的體現,同時如果自己建的表的名字很長,可以為這個表創建一個Oracle同義詞來簡化sql開發。
3)為分布式資料庫的遠程對象提供位置透明性。
5.Oracle同義詞在資料庫鏈中的作用 資料庫鏈是一個命名的對象,說明一個資料庫到另一個資料庫的路徑,通過其可以實現不同資料庫之間的通信。
Create database link 資料庫鏈名 connect to user名 identified by 口令 using 『Oracle連接串』; 訪問對象要通過 object名@資料庫鏈名。同義詞在資料庫鏈中的作用就是提供位置透明性。
❷ ORA-01775:同義詞的循環鏈怎麼解決
之所以會出現「ORA-01775:同義詞的循環鏈」,是因為存在同義詞,而同義詞又缺少與之相應的對象。
1,首先應當查找是否存在循環的同義詞。
(2)sql資料庫同義詞擴展閱讀:
資料庫同義詞的兩種類型:「私有」和「公共」。其中的公共同義詞能夠由通過blic指定的模式來訪問,所有資料庫模式,即用戶,皆可對它進行訪問,而私有同義詞僅能在指定的模式中被創建,並且只能在創建者使用的模式下被訪問。
同義詞的擴展方法:同一概念的同義詞,其擴展方法有學名或俗名、簡稱和全稱、術語和代碼,等等。
同義詞的作用:在Oracle中的同義詞,可以用於在多人協作時屏蔽對象的名字及其持有者,並為用戶簡化sql語句,還能為分布式資料庫的遠程對象提供位置透明性。
❸ oracle資料庫中循環同義詞,怎麼處理
1、 當用程序連接或者用plsql查詢同義詞時,如果出現ora-01775:同義詞的循環鏈這樣的問題。
一般是因為存在同義詞,但同義詞沒有相應的對象。
2、 先查有沒有循環的同義詞。
select * from dba_synonyms
where table_owner='TEST'
and synonym_name<>table_name;
沒有記錄。
3、 再查同義詞沒有對象的資料庫對象
select * from dba_synonyms
where table_owner='TEST'
and
synonym_name in
(select a.synonym_name from dba_synonyms a where a.table_owner='TEST'
minus
select object_name from user_objects)
4、 把查詢出來的結果進行查詢表
select * from DRILL_PRESON
如果該同義詞沒有相應的對象,則會包ora-01775的錯誤
5、 把這個同義詞刪除
drop public synonym DRILL_PRESON
❹ 同義詞在資料庫中起什麼作用
資料庫中的同義詞,可以相當於文件系統的快捷方式理解,例如表和視圖的同義詞,完全可以直接當表和視圖使用。
❺ 資料庫同義詞
可以除去對象名必須帶的方案限制,並提供一個可替換的對象名,對具有特別長的對象的名字特別有用。
CREATE SYNONYM 同義詞名 FOR 對象名 ;
同義詞表 user_synonyms
DROP SYNONYM 同義詞名
❻ SQL SERVER2008中同義詞有什麼作用
同義詞 一般用於讓你 跨數據查詢的 SQL 語句, 更簡潔一些。
例如 我現在是 USE [Test2] 這個資料庫
我要查詢 Test 資料庫下的一個表。
那麼我的 SQL 語句是:
SELECT * FROM Test.dbo.v_sale_report_sum;
當我創建了 同義詞以後
CREATE SYNONYM v_sale_report_sum
FOR Test.dbo.v_sale_report_sum;
我就可以直接執行
SELECT * FROM v_sale_report_sum;
而不需要在 SQL 語句裡面, 寫上 Test 這個資料庫的名字。
❼ SQL和oracle 建立同義詞
1、首先你要保證你的oracle能夠連接到SQL Server上面,具體的配置很麻煩,這里有個參考資料你看看先:
http://blog.csdn.net/tangnf/archive/2007/05/25/1626112.aspx
2、如果能連接上的話,按照下面的語法就能夠達到你的目的。
create synonym table1 for 連接到SQL Server的表名;
---
以上,希望對你有所幫助。
❽ 資料庫裡面同義詞、序列是什麼東西
這個應該是oracle里的吧?
同義詞 synonym
相當於alias(別名),比如把user1.table1在user2中建一個同義詞table1
create synonym table1 for user1.table1;
這樣當你在user2中查select * from table1時就相當於查select * from user1.table1;
序列比較復雜,
在oracle中sequence就是所謂的序列號,每次取的時候它會自動增加,一般用在需要按序列號排序的地方。
1、Create Sequence
你首先要有CREATE SEQUENCE或者CREATE ANY SEQUENCE許可權,
CREATE SEQUENCE emp_sequence
INCREMENT BY 1 -- 每次加幾個
START WITH 1 -- 從1開始計數
NOMAXVALUE -- 不設置最大值
NOCYCLE -- 一直累加,不循環
CACHE 10;
一旦定義了emp_sequence,你就可以用CURRVAL,NEXTVAL
CURRVAL=返回 sequence的當前值
NEXTVAL=增加sequence的值,然後返回 sequence 值
比如:
emp_sequence.CURRVAL
emp_sequence.NEXTVAL
可以使用sequence的地方:
- 不包含子查詢、snapshot、VIEW的 SELECT 語句
- INSERT語句的子查詢中
- NSERT語句的VALUES中
- UPDATE 的 SET中
可以看如下例子:
INSERT INTO emp VALUES
(empseq.nextval, 'LEWIS', 'CLERK',7902, SYSDATE, 1200, NULL, 20);
SELECT empseq.currval FROM DUAL;
❾ 同義詞的在資料庫中的概念
同義詞有兩種類型:私有(private)和公共(public)。私有的同義詞是在指定的模式中創建並且只有創建者使用的模式訪問。公共同義詞是由public 指定的模式訪問,所有資料庫模式(用戶)都可以訪問它。
對於同一伺服器上的不同資料庫,我們可以使用Synonym,將其他資料庫中的表或view或sprocs及udf在本資料庫中映射別名。這樣,就可以不用更改連接字元串,而在當前對話資料庫的情況下,獲取其他資料庫的數據,並對它進行,查詢,更新,刪除和插入工作。
(2)同義詞的作用
(a) 多用戶協同開發中,可以屏蔽對象的名字及其持有者。 如果沒有同義詞,當操作其他用戶的表時,必須通過user名.object名的形式,採用了同義詞之後就可以隱蔽掉user名,當然這里要注意的是:public同義詞只是為資料庫對象定義了一個公共的別名,其他用戶能否通過這個別名訪問這個資料庫對象,還要看是否已經為這個用戶授權。 (b) 為用戶簡化sql語句。如果自己建的表的名字很長,可以為這個表創建一個同義詞來簡化sql開發。 (c)為分布式資料庫的遠程對象提供位置透明性。
❿ SQL之同義詞
【十四】同義詞
14.1 作用
從字面上理解就是別名的意思,和視圖的功能類似,就是一種映射關系。
14.2公有同義詞
同義詞通常是資料庫對象的別名;公有同義詞一般由DBA創建,使所有用戶都可使用;創建者需要create public synonym許可權。
示例:
14.3私有同義詞
一般是普通用戶自己建立的同義詞,創建者需要create synonym 許可權。
查看同義詞的視圖:dba_synonyms
刪除私有同義詞:drop synonym 同義詞名
刪除公有同義詞:drop public synonym 同義詞名
14.3 同義詞的要點
1)私有同義詞是模式對象,一般在自己的模式中使用,如其他模式使用則必須用模式名前綴限定。
2)公有同義詞不是模式對象,不能用模式名做前綴。
3)私有和公有同義詞同名時,如果指向不同的對象,私有同義詞優先。
4)引用的同義詞的對象(表或視圖)被刪除了,同義詞仍然存在,這同視圖類似,重新創建該對象名,下次訪問同義詞時自動編譯。
the end !!!
@jackman 共築美好!