午夜剧场伦理_日本一道高清_国产又黄又硬_91黄色网战_女同久久另类69精品国产_妹妹的朋友在线

您的位置:首頁技術(shù)文章
文章詳情頁

利用同義詞簡化SQL Server 2005開發(fā)

瀏覽:34日期:2023-10-30 18:58:16
一. 引言如果你曾經(jīng)使用SQL Server開發(fā)過任何軟件,那么你肯定會習(xí)慣于使用四部分標識符來參考一個對象:[[[server.][database].][schema_name].]object_name正如上面的方括號所顯示的,該語法的不同部分可以被忽略,只要你提供足夠的表達來無二義地標識你的對象即可。例如,下面所有這些表達都可能參考相同的對象:Server1.AdventureWorks.Production.ProductCategoryAdventureWorks.Production.ProductCategoryAdventureWorks..ProductCategoryProductCategory在大多數(shù)情況下,你可以僅使用三部分名字而忽略服務(wù)器名-除非你是在處理在一個連接的服務(wù)器上的對象。默認情況下,所有對象的上下文都是本地數(shù)據(jù)庫-你的SQL語句在其中執(zhí)行。但是,有些情況下,或者更為準確地說,你必須使用這整個四部分命名(或稱作一種全稱限定名)。但是,在SQL Server 2005中,這種情況有所改變。二. 熟悉同義詞SQL Server 2005引入了一個同義詞的概念,這是一個單部分的名字,它可以替換在許多SQL語句中的一個兩、三或四部分的名字。使用同義詞可以讓你減少輸入,而且還能提供一個抽象層來為你保護底層對象的改變。為了理解其工作原理,讓我們先看一下創(chuàng)建同義詞的語法。下面是CREATE SYNONYM語句的語法: CREATE SYNONYM [schema_name.]synonym_name FOR object_name在此,object_name是一個SQL Server對象(全稱限定已經(jīng)足以能夠標識出這個對象)的名字,而synonym_name是你想賦給它的新名字。如果你不想為同義詞指定一種模式,那么SQL Server使用當前的用戶的默認模式。當你創(chuàng)建同義詞時,相應(yīng)的對象不需要存在,因為同義詞是遲綁定的:當你實際上使用同義詞時,SQL Server僅僅檢查基對象。例如,在AdventureWorks示例數(shù)據(jù)庫中,你可以以下列方式創(chuàng)建一個同義詞:CREATE SYNONYM ProdCatFOR AdventureWorks.Production.ProductCategory之后,你可以繼續(xù)使用在SQL語句中的同義詞了。例如:SELECT * FROM ProdCat圖1顯示出相應(yīng)的結(jié)果:利用同義詞簡化SQL Server 2005開發(fā)當你使用完一個同義詞后,你可以使用DROP SYNONYM語句來去掉它,它具有你期望的語法格式:DROP SYNONYM [schema_name.]synonym_name三. 幾點細節(jié)當然,對于同義詞的使用上也存在一些限制。對于初學(xué)者來說,你不能為任何東西都創(chuàng)建一個同義詞。SQL Server 2005比以前引入了更多的對象,但是同義詞僅限于應(yīng)用于核心集的最有用的一些對象中:· 表· 視圖· 存儲過程· CLR存儲過程· CLR函數(shù)· 復(fù)制過濾過程· 擴展存儲過程· SQL標量,表值以及內(nèi)聯(lián)表值函數(shù)關(guān)于在什么情況下使用同義詞還存在一些限制。一般來說,你可以在下面這些T-SQL語句中使用一個同義詞:· SELECT· sub-selects· UPDATE· INSERT· DELETE· EXECUTE如果你仔細考慮一下,那么第二個表不應(yīng)該太奇怪:它包含了最常用的where語句。注意,你不能在一個DDL語句中參考一個同義詞。如果你想使用ALTER TABLE來改變ProductCategory表中的內(nèi)容,那么,你需要使用基表而不是使用ProdCat同義詞。為了創(chuàng)建一個同義詞,你需要CREATE SYNONYM權(quán)限。在創(chuàng)建一個同義詞后,它就有了與其自己相關(guān)聯(lián)的GRANT,DENY和REVOKE許可權(quán)。四. 把同義詞作為一個抽象層除了節(jié)省你的輸入時間外,同義詞還可以用作你的數(shù)據(jù)庫的不穩(wěn)定的或經(jīng)常更新部分的一個抽象層。這是因為同義詞及其基對象之間的綁定僅在運行時刻檢查,而不是在設(shè)計時刻。為了說明這個問題,如果你重新定義ProdCat同義詞,請研究下面發(fā)生什么情況:DROP SYNONYM ProdCatCREATE SYNONYM ProdCatFOR AdventureWorks.Production.ProductCategorySELECT * FROM ProdCatDROP SYNONYM ProdCatCREATE SYNONYM ProdCatFOR AdventureWorks.Production.CultureSELECT * FROM ProdCat注意,當你任何時候想改變一個同義詞時,你需要使用DROP和CREATE;不存在ALTER SYNONYM語句。圖2顯示出運行這個批處理語句的結(jié)果。注意,在此,語句SELECT * FROM ProdCat與前面的第二次執(zhí)行結(jié)果懸殊很大,因為同義詞被重新定義以參考一個不同的表。當然,你可以把這種行為應(yīng)用于你自己的應(yīng)用程序中。例如,假定你有一個程序,它需要分析來自于多種數(shù)據(jù)庫的顧客數(shù)據(jù)。不是把基表與單個數(shù)據(jù)庫連接起來或斷開連接,或編寫復(fù)雜的選擇表格進行分析的SQL,而是使用同義詞。定義一個同義詞,例如DataTable,來參考你想使用的數(shù)據(jù)的四部分名字,并且重新定義它-無論何時你想要切換源數(shù)據(jù)。當然,這種遲綁定也是一把雙刃劍。因為SQL Server并不追蹤是否一個同義詞指向任何東西,它也不會進行任何模式綁定排序。如果你刪除一個應(yīng)用于另一個語句中的同義詞,那么你可能直到試圖運行該語句時才發(fā)現(xiàn)出了問題。五. 小結(jié)你能夠開發(fā)自己的下一個SQL Server應(yīng)用程序而不使用同義詞嗎?當然可以。它們并沒有為數(shù)據(jù)庫表帶來根本性的新內(nèi)容;你可以總是使用完全限定名字-在任何你想使用一個同義詞的地方。但是有時把這些'小東西'加入到你的產(chǎn)品是一件不錯的事情,就因為它們能夠?qū)崿F(xiàn)更少的輸入和帶給開發(fā)者一種更容易的體驗。也許在一個應(yīng)用程序的開發(fā)過程的某一階段同義詞將僅會節(jié)省你10分鐘時間,但是所有這些小的10分鐘相加應(yīng)該是個不少的數(shù)目吧!
主站蜘蛛池模板: jk在线观看 | 欧美性aaa | 五月婷婷视频在线观看 | 日韩在线视频免费播放 | 免费观看黄色网 | 偷拍女澡堂bbbbbccccc | 欧美在线a | 黄色三级免费网站 | 久久久免费观看 | 91在线亚洲 | 久久视频99 | 麻豆视频免费看 | 一级黄色片在线播放 | 激情久久婷婷 | 久草福利在线观看 | 天堂网中文在线 | 手机av不卡 | 久久婷婷色| 麻豆影视av | 中文字幕亚洲高清 | 噼里啪啦国语版在线观看 | 亚洲成人精品在线观看 | 一级视频在线观看 | 免费一级片视频 | 免费在线观看一级片 | 亚洲天堂第一区 | 国产又爽又黄又嫩又猛又粗 | 超碰在线免费 | 一区二区三区四区免费视频 | 一级黄色大片视频 | 国产午夜精品一区二区三区嫩草 | 成人在线免费视频 | 久久久久久免费视频 | 黄色.com| 日韩一区二区免费在线观看 | 久久久久久久福利 | 久久伊人精品 | 特黄视频在线观看 | 99视频免费在线观看 | 综合激情网站 | 在线免费观看日韩av |