陳玲
(樺川縣職業(yè)教育中心,黑龍江樺川154300)
《數(shù)據(jù)庫應用基礎—Visual FoxPro 6.0》作為職高計算機專業(yè)的一個比較重要的學科,很多學生對學習此門課程感到吃力,尤其是在創(chuàng)建查詢和視圖這一章。學習VFP6.0的基礎是建立數(shù)據(jù)庫、向表中存儲數(shù)據(jù)。但是我們在表中存儲的數(shù)據(jù)再多而不去使用它也是沒有意義的,因此當我們建立數(shù)據(jù)庫和表以后,目的就是要使用這些數(shù)據(jù)。在Visual FoxPro6.0中,常常利用視圖和查詢來對收集的數(shù)據(jù)進行處理,得到有用的信息。很多學生在使用二者時,總是產(chǎn)生迷惑,既然二者都能篩選出我們所需要的數(shù)據(jù),那么只掌握其中一個不就可以了嗎?帶著這樣的疑問,我們分析一下到底查詢和視圖有什么不同。
我們有這樣一個例子,現(xiàn)有創(chuàng)建的一個“學生管理”數(shù)據(jù)庫,并且在該數(shù)據(jù)庫中創(chuàng)建了“原始檔案”表和“在校情況”表,現(xiàn)在我們要把9861班的現(xiàn)有團員篩選出來,并輸出“學號”“班級”“姓名”“性別”“政治面貌”等信息,并按“學號”升序。查詢結(jié)果顯示如下圖所示。
利用視圖輸出滿足條件的結(jié)果
利用查詢輸出滿足條件的結(jié)果
從上面結(jié)果可以看出,查詢和視圖都可以從我們收集的數(shù)據(jù)中提取所需要的信息,它們之間到底又有什么區(qū)別呢?為了能很好地使用查詢和視圖,我們就必須要掌握查詢和視圖的概念和二者的區(qū)別。
查詢是向數(shù)據(jù)庫發(fā)出檢索信息的請求,它通過限制一些條件從數(shù)據(jù)庫中提取特定的信息。查詢可以擴充用戶控制數(shù)據(jù)的能力,可以讓用戶按需要的方式顯示表中的信息。查詢能單獨以擴展名為.QPR的文件保存,可以在命令方式下使用,可以選擇查詢?nèi)ハ?但不能更新和修改數(shù)據(jù),而且只能一次性使用,只能訪問本地數(shù)據(jù)。查詢的去向有7種:“瀏覽”“臨時表”“表”“圖形”“屏幕”“報表”“標簽”。
視圖是一個類似于目錄的有關(guān)數(shù)據(jù)的虛擬表或者邏輯表,視圖中的數(shù)據(jù)來源于數(shù)據(jù)庫中的表或者其他視圖。它具有普通表的一般性質(zhì),可以對它進行瀏覽、修改和使用。值得一提的是利用視圖修改的結(jié)果可以送回數(shù)據(jù)源,進行永久的保存。但視圖依賴于數(shù)據(jù)庫而存在,在新建視圖之前,必須先打開相關(guān)數(shù)據(jù)庫。視圖和查詢也很相似,都可以從一個或多個相關(guān)聯(lián)的表中提取有用的信息。
由此可以看出視圖和查詢之間雖然有很多相似之處,但是也有著本質(zhì)的區(qū)別:
1.利用查詢設計器生成的是.QPR文件,它是完全獨立的,不依賴于任何數(shù)據(jù)庫和表而存在,而視圖則依賴于數(shù)據(jù)庫而存在。
2.利用查詢不能更新數(shù)據(jù)源,而利用視圖可以更新數(shù)據(jù)源。
3.查詢的去向有7種,而視圖只是一個虛擬的表。
當我們了解二者的本質(zhì)區(qū)別后,可以根據(jù)實際情況來創(chuàng)建查詢和視圖。如果我們創(chuàng)建查詢,要在建立之前明確以下幾點:首先確定數(shù)據(jù)源,然后確定查詢條件,最后確定查詢?nèi)ハ?。而查詢的建立方法有以?種:利用向?qū)Ы⒉樵?;利用設計器建立查詢;使用SQL-Select命令建立查詢。
建立視圖的目的也是為了能夠方便地從表中眾多的記錄中找到我們所需的記錄并可以進行數(shù)據(jù)的更新。視圖有二種:本地視圖和遠程視圖。本地視圖是指以本地表或其它本地視圖作為數(shù)據(jù)源而創(chuàng)建的視圖。遠程視圖是指以遠程數(shù)據(jù)表或遠程視圖作為數(shù)據(jù)源而創(chuàng)建的視圖。而建立視圖的方法只有兩種:一是利用視圖設計器建立,二是利用向?qū)Ы?。視圖建立以后,就可以使用它來顯示和更新數(shù)據(jù),并且可以作為創(chuàng)建視圖和表單的數(shù)據(jù)源。
拿引例中篩選輸出9861班團員為例,雖然使用視圖和查詢輸出的結(jié)果是一樣的,但是,查詢的結(jié)果我們不能夠更改,而視圖中的數(shù)據(jù)是可以更改的,并能將更改的結(jié)果傳回源表。在視圖設計器中的“更新選項卡”中將“性別”設置為更新字段,“學號”為關(guān)鍵字段,再選中“發(fā)送SQL”選項后,運行視圖,在創(chuàng)建的視圖中將“林雨雁”的“性別”更改為“男”,保存退出后,打開數(shù)據(jù)源表“原始檔案”表,可以看到“林雨雁”的性別被更改為“男”。
更改后表
綜上所述將查詢和視圖的區(qū)別總結(jié)如下:
(1)相同點:
①可以從數(shù)據(jù)源中查找滿足一定篩選條件的記錄和選定部分字段。
②自身不保存數(shù)據(jù),它們的查詢結(jié)果隨數(shù)據(jù)源內(nèi)容的變化而變化。
(2)不同點:
①視圖可以更新數(shù)據(jù)表,而查詢不能。
②視圖可訪問遠程數(shù)據(jù);而查詢不能直接訪問,須借助遠程視圖方可。
③視圖只能在數(shù)據(jù)庫中存在;而查詢不是數(shù)據(jù)庫的組成部分,它是一個獨立的程序文件。
④視圖只能從數(shù)據(jù)庫表中查找數(shù)據(jù),而查詢可以從自由表、數(shù)據(jù)庫表及多個數(shù)據(jù)庫表中查找數(shù)據(jù)。
根據(jù)上面的總結(jié)很多同學又會提出這樣的問題,既然視圖可以作為數(shù)據(jù)源,那它是不是一個表呢?它和表之間又有什么區(qū)別呢?下面再就視圖與表作一下比較:
(1)相同點:
①可以作為查詢與其他視圖的數(shù)據(jù)源。
②與邏輯結(jié)構(gòu)相似,即內(nèi)容由記錄組成,記錄由字段組成。
(2)不同點:
①視圖中不保存數(shù)據(jù),是虛擬表。
②即使不對視圖作任何修改,其內(nèi)容也可能發(fā)生變化。
③視圖中顯示的數(shù)據(jù)可能來自一個表、多個表或其他視圖。
④視圖可帶有參數(shù),而表不能。
⑤視圖是數(shù)據(jù)庫的一種組成單元,它只能是數(shù)據(jù)庫的一部分,不能單獨存在;而表可以不屬于任何一個數(shù)據(jù)庫,即自由表。
在VFP6.0中,有很多知識點需要我們不斷地對比、歸納總結(jié),就不難掌握它們的異同,就會更好地應用于教學和實踐當中。
原始檔案
[1]李紅,陳曉宇.數(shù)據(jù)庫應用基礎——Visual FoxPro 6.0(第2版)[M].電子工業(yè)出版社,2005.
[2]周察金.數(shù)據(jù)庫應用基礎——Visual FoxPro(第3版)[M].高等教育出版社,2011.