qileilove

          blog已經(jīng)轉(zhuǎn)移至github,大家請(qǐng)?jiān)L問(wèn) http://qaseven.github.io/

          SQL Server數(shù)據(jù)庫(kù)用視圖來(lái)處理復(fù)雜的數(shù)據(jù)查詢(xún)關(guān)系

            SQL Server數(shù)據(jù)庫(kù)用視圖來(lái)處理復(fù)雜的數(shù)據(jù)查詢(xún)關(guān)系是本文我們主要要介紹的內(nèi)容,該內(nèi)容是這樣想到的:在輔助教務(wù)系統(tǒng)那塊的時(shí)候,我做的一個(gè)頁(yè)面是對(duì)單個(gè)老師和整個(gè)學(xué)院老師的工作量查詢(xún),這個(gè)操作設(shè)計(jì)到了三個(gè)本數(shù)據(jù)庫(kù)中的表和一個(gè)不同數(shù)據(jù)庫(kù)中的一個(gè)教師信息表,如果用普通的SQL語(yǔ)句是非常難實(shí)現(xiàn)的,由于我剛開(kāi)始做的視頻播放系統(tǒng),數(shù)據(jù)庫(kù)的表相對(duì)比較少,沒(méi)有涉及到這么復(fù)雜的處理關(guān)系,剛開(kāi)始感覺(jué)很難。

            后來(lái)想到用視圖可以解決多個(gè)表的復(fù)雜關(guān)系,但是另外一張表是不同數(shù)據(jù)庫(kù)的,是否依然能進(jìn)行操作,經(jīng)過(guò)測(cè)試之 后,居然可以將不同數(shù)據(jù)庫(kù)中的兩張表進(jìn)行建立視圖關(guān)系,從而視圖就是一個(gè)虛擬的表,我們將需要查詢(xún)的不同數(shù)據(jù)庫(kù)中的表或者相同數(shù)據(jù)庫(kù)中的表,放到一起,然 后選擇需要的字段,重新建立一個(gè)新的虛表,然后這個(gè)視圖就可以作為一個(gè)新的表,進(jìn)行操作。這樣就為我們提供了很多方便。

            視圖是一個(gè)續(xù)表,是從一個(gè)或者多個(gè)表或視圖倒出來(lái)的表,其結(jié)構(gòu)和數(shù)據(jù)時(shí)建立在對(duì)表的查詢(xún)基礎(chǔ)上的。

            視圖的優(yōu)點(diǎn)有:

            1、視圖可以讓用戶(hù)我們選擇某些特定的數(shù)據(jù)和或者特定的任務(wù),而那些不需要的或者無(wú)用的數(shù)據(jù)可以不再視圖中顯示。

            2、視圖大大的簡(jiǎn)化了對(duì)數(shù)據(jù)庫(kù)的操作,可以通過(guò)視圖操作進(jìn)行對(duì)表的操作。

            3、視圖可以讓不同的用戶(hù)以不同的方式看到不同或者相同的數(shù)據(jù)集,相當(dāng)方便

            4、在某些情況下,由于表中數(shù)據(jù)量太大,因此在表的設(shè)計(jì)時(shí)常將表進(jìn)行水平或者垂直分割,但是表的結(jié)構(gòu)變化對(duì)應(yīng)用程序的產(chǎn)生不良的影響,而使用視圖可以重新組織數(shù)據(jù),從而使外模式保持不變,原有的應(yīng)用程序可以通過(guò)視圖來(lái)重載數(shù)據(jù)。

            5、視圖提供了一個(gè)簡(jiǎn)單而有效的安全機(jī)制。

            視圖的缺點(diǎn):

            如果該視圖處理的數(shù)據(jù)量非常大,那么就給sql數(shù)據(jù)庫(kù)帶來(lái)了很多壓力,執(zhí)行速度相對(duì)來(lái)說(shuō)比較慢,不如存儲(chǔ)過(guò)程,所以如果可以用存儲(chǔ)過(guò)程實(shí)現(xiàn)的,優(yōu)先用存儲(chǔ)過(guò)程創(chuàng)建視圖主要?jiǎng)?chuàng)建方式:

            1、用sql server管理平臺(tái)創(chuàng)建視圖

            2、用Transact-sql語(yǔ)句中的create view命令來(lái)創(chuàng)建視圖

            3、利用sql sever管理平臺(tái)的視圖模板來(lái)創(chuàng)建視圖

            創(chuàng)建視圖的時(shí)候要注意:

            1、只能在當(dāng)前數(shù)據(jù)庫(kù)中創(chuàng)建視圖,在視圖中最多只能引用1024例,視圖中記錄數(shù)目先知只有其基表中的記錄數(shù)決定。

            2、如果視圖引用的基表或者視圖被刪除,該視圖不能再被使用,知道創(chuàng)建新的基表或者視圖

            3、如果視圖中某一列是函數(shù)、數(shù)學(xué)表達(dá)式、常量或者來(lái)自多個(gè)表中的列名相同,則必須為列定義名稱(chēng)。

            4、不能再視圖上創(chuàng)建索引,不能再規(guī)則、默認(rèn)、觸發(fā)器中引用視圖

            5、當(dāng)通過(guò)視圖查詢(xún)數(shù)據(jù)時(shí),sql server要檢查以確保語(yǔ)句中涉及的所有數(shù)據(jù)庫(kù)對(duì)象存在,每個(gè)數(shù)據(jù)庫(kù)對(duì)象在語(yǔ)句的上下文中有效,而且數(shù)據(jù)修改語(yǔ)句不能違反數(shù)據(jù)完整性規(guī)則。

            6、視圖的名稱(chēng)必須遵循標(biāo)示符的規(guī)則,且對(duì)每個(gè)用戶(hù)必須是唯一的,此外,該名稱(chēng)不得與該用戶(hù)有任何相同名稱(chēng)的表 這是建立的視圖,其中TeacherInfo是從另外一個(gè)數(shù)據(jù)庫(kù)中添加進(jìn)來(lái)的。

            以下是通過(guò)視圖查詢(xún)出來(lái)的數(shù)據(jù)表“select * from QueryWorkInfoByFaculty”

            關(guān)于SQL Server數(shù)據(jù)庫(kù)用視圖來(lái)處理復(fù)雜的數(shù)據(jù)查詢(xún)關(guān)系的相關(guān)知識(shí)就介紹到這里了,希望本次的介紹能夠?qū)δ兴斋@!

          posted on 2012-03-16 09:47 順其自然EVO 閱讀(562) 評(píng)論(0)  編輯  收藏


          只有注冊(cè)用戶(hù)登錄后才能發(fā)表評(píng)論。


          網(wǎng)站導(dǎo)航:
           
          <2012年3月>
          26272829123
          45678910
          11121314151617
          18192021222324
          25262728293031
          1234567

          導(dǎo)航

          統(tǒng)計(jì)

          常用鏈接

          留言簿(55)

          隨筆分類(lèi)

          隨筆檔案

          文章分類(lèi)

          文章檔案

          搜索

          最新評(píng)論

          閱讀排行榜

          評(píng)論排行榜

          主站蜘蛛池模板: 宁都县| 鄯善县| 廉江市| 洱源县| 蓬安县| 邛崃市| 安图县| 门头沟区| 杭州市| 深州市| 阳东县| 宁城县| 安康市| 柳江县| 黎城县| 新闻| 塔河县| 泸州市| 澄迈县| 安国市| 义马市| 康马县| 宁蒗| 南陵县| 芜湖市| 三明市| 金溪县| 中方县| 辰溪县| 宁武县| 木里| 伊宁县| 瓮安县| 衡东县| 宿州市| 北票市| 紫阳县| 莱芜市| 门源| 肇庆市| 葵青区|