oracle同義字 轉

來源:互聯網
上載者:User

標籤:

1.為啥要用同義字:

同義字,顧名思義就是兩個詞的意思一樣,可以互相替換.那它的作用有哪些呢:

a一個最明顯的目的就是簡化sql.如果某個資料庫物件的名字太長了,可以建立一個短一點的同義字.就相當於是縮寫唄.

b.另外一個目的是隱藏一些對象的資訊.比如尋找另一個 schema中的某個表,需要在表名前加schema名做為首碼.如果建立一個同義字就可以隱藏schema資訊.

2.怎麼建立同義字.

文法:CREATE [OR REPLACE] [PUBLIC] SYNONYM synonym_name FOR [schema.]object

1.建立私人同義字:

例如:CREATE SYNONYM arwen FOR table_of_arwen

這樣使用select * from arwen或select * from table_of_arwen是一樣的.

刪除同義字:DROP SYNOYM arwen.

注意:私人同義字只有建立它的使用者自己可以用.如果其他schema要用必須得加建立者schema為首碼.這和其他對象是一樣的.

2.建立公用同義字:

CREATE PUBLIC SYNONYM arwen FOR table_of_arwen

所有的schema都能使用公用同義字.比如schema scott訪問schema arwen的表table_of_arwen就可以用select * from arwen

有些人可能會奇怪這種情況為啥就不用到schema做首碼了.可能系統預設加了吧.

所以CREATE PUBLIC SYNONYM arwen FOR table_of_arwen或CREATE PUBLIC SYNONYM arwen FOR arwen.table_of_arwen是等效的.

其他schema都能用arwen去尋找.

注意:如果其他schema沒有許可權尋找表table_of_arwen則 也不能使用它的同義字去尋找的.

3.關於錯誤:同義字轉換不再有效.

當建立同義字時不會檢查同義字代表的對象是否存在,都會成功建立.比如CREATE PUBLIC SYNONYM arwen FOR no_table_exist

假如不存在一個表叫no_table_exist或者其他資料庫物件叫這名.

則SELECT * FROM arwen時就會有錯誤提示:同義字轉換不再有效.當然如果本來有那表後面刪除了也會有同樣的錯誤.

3.和同義字類似的別名

oracle裡面還有個概念叫別名.它和同義字功能類似.只不過使用範圍很小.主要用在一個sql語句中,只能臨時起作用.像臨時變數一樣.

例如:

SELECT emp.ename,bonus.sal FROM emp ,bonus  where emp.ename = bonus.ename

我們可以給emp取一個別名e,bonus取b列也取別名則查詢語句如下

SELECT e.ename AS myname,b.sal AS mysal FROM emp  e,bonus  b WHERE e.ename = b.ename

裡面的關鍵字AS是可選的,如果去掉也會實現同樣的功能.在列中可用AS,但給表取別名是不能加的.

oracle同義字 轉

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.