VFP查詢與視圖_第1頁
VFP查詢與視圖_第2頁
VFP查詢與視圖_第3頁
VFP查詢與視圖_第4頁
VFP查詢與視圖_第5頁
已閱讀5頁,還剩102頁未讀 繼續(xù)免費閱讀

下載本文檔

版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進行舉報或認領

文檔簡介

1、學習要點學習要點1、查詢向?qū)Ш筒樵冊O計器的使用方法;2、單表查詢和交叉表查詢;3、查詢設計器中各選項卡的功能和使用方法;4、本地視圖和遠程視圖;5、視圖向?qū)Ш鸵晥D設計器的使用方法;6、使用視圖。 查詢向?qū)Э梢砸龑в脩艨焖僭O計一個查詢。下面將示例使用查詢向?qū)Э梢砸龑в脩艨焖僭O計一個查詢。下面將示例使用查詢向?qū)гO計一個簡單的單表查詢:從查詢向?qū)гO計一個簡單的單表查詢:從XGGL數(shù)據(jù)庫的數(shù)據(jù)庫的Student表中查詢系部代號為表中查詢系部代號為“04”且是且是99級的所有學生的信息。級的所有學生的信息。 操作過程如下:首先從操作過程如下:首先從“文件文件”開始,選擇【新建】開始,選擇【新建】 -“查

2、查詢詢”,然后單擊【向?qū)А堪粹o,則出現(xiàn)設計查詢的方式選擇對,然后單擊【向?qū)А堪粹o,則出現(xiàn)設計查詢的方式選擇對話框。話框。 單擊 選擇選擇XGGL數(shù)數(shù)據(jù)庫中的據(jù)庫中的Student表,表,并將該表并將該表中的所有中的所有字段添加字段添加到到“選定選定字段字段”列列表框中。表框中。 單擊查詢向?qū)Р樵兿驅(qū)ё侄芜x取字段選取從中選擇Student.系部代號0在此輸入值4取默認值從中選擇“包含”在此輸入值98單擊單擊【預覽】按鈕可以顯示查詢結(jié)果。根據(jù)要求,設置條件如上圖。其中,單擊【預覽】按鈕可以顯示查詢結(jié)果。根據(jù)要求,設置條件如上圖。其中,雖然表中沒有年級字段,但可通過雖然表中沒有年級字段,但可通過“學

3、號學號”得到年級(學號的前二位為年得到年級(學號的前二位為年級)。級)。 查詢向?qū)Р樵兿驅(qū)ШY選記錄篩選記錄選擇排序字段單擊【添加】 選擇排序方式調(diào)整排序順序移動按鈕單擊查詢向?qū)Р樵兿驅(qū)в涗浥判蛴涗浥判虿樵兿驅(qū)Р樵兿驅(qū)拗朴涗浵拗朴涗浵拗撇樵兘Y(jié)果中所包含的記錄數(shù)說明:查詢結(jié)果中所包含說明:查詢結(jié)果中所包含的記錄數(shù)限制共有四種方的記錄數(shù)限制共有四種方式:式:1、“部分類型部分類型”中選擇中選擇“所占記錄百分比所占記錄百分比”,“數(shù)量數(shù)量”中選擇中選擇“所有記所有記錄錄”,查詢結(jié)果集中包含,查詢結(jié)果集中包含全部記錄。全部記錄。2、“部分類型部分類型”中選擇中選擇“所占記錄百分比所占記錄百分比”,“數(shù)

4、量數(shù)量”中選擇中選擇“部分部分值值”,再在,再在“微調(diào)框微調(diào)框”中中設置數(shù)值,查詢結(jié)果集中設置數(shù)值,查詢結(jié)果集中包含指定數(shù)值百分數(shù)的記包含指定數(shù)值百分數(shù)的記錄。錄。 3、“部分類型部分類型”中選擇中選擇“記錄號記錄號”,“數(shù)量數(shù)量”中選擇中選擇“所有記錄所有記錄”,查詢,查詢結(jié)果集中包含全部記錄。結(jié)果集中包含全部記錄。4、 “部分類型部分類型”中選擇中選擇“記錄號記錄號”,“數(shù)量數(shù)量”中選擇中選擇“部分值部分值”,再在,再在“微調(diào)框微調(diào)框”中設置數(shù)值,查詢結(jié)果集中包含指定數(shù)值的記錄數(shù)。中設置數(shù)值,查詢結(jié)果集中包含指定數(shù)值的記錄數(shù)。單擊取默認值,查詢結(jié)果集中包含全部記錄查詢向?qū)Р樵兿驅(qū)瓿赏瓿蓪?/p>

5、查詢以文將查詢以文件的形式件的形式(.QPR)保)保存到一個指存到一個指定的目錄中。定的目錄中。 將查詢保存到一將查詢保存到一個指定的目錄中個指定的目錄中并運行該文件。并運行該文件。 利用查詢向?qū)гO計的查詢功能有限,可以使用查詢設計器修改它。利用查詢向?qū)гO計的查詢功能有限,可以使用查詢設計器修改它。 單擊,可以查看查詢結(jié)果集中的全部數(shù)據(jù)單擊,可以查看查詢結(jié)果集中的全部數(shù)據(jù)打開幫助文件幫助文件 取消所建立的查詢?nèi)∠⒌牟樵?返回到向?qū)У纳弦徊椒祷氐较驅(qū)У纳弦徊浇Y(jié)束向?qū)?,結(jié)束向?qū)?,完成查詢設完成查詢設計。計。單擊保存設計的查詢保存設計的查詢目錄選擇下拉列表框文件名輸入文本框文件類型選擇下位列表

6、框在在“文件名輸入文本框文件名輸入文本框”中中輸入輸入“Stud_query”后,單擊后,單擊【保存】按鈕,結(jié)束查詢設【保存】按鈕,結(jié)束查詢設計過程。計過程。在項目管理器中的“數(shù)據(jù)”選項中的查詢項下產(chǎn)生了一個查詢文件 如果在上文所述的建如果在上文所述的建立查詢的第一步選擇立查詢的第一步選擇“交叉表向?qū)Ы徊姹硐驅(qū)А?,則可,則可以建立交叉表。下面通以建立交叉表。下面通過示例來介紹如何建立過示例來介紹如何建立交叉表。用交叉表。用Grade表中表中的數(shù)據(jù)建立一個交叉表,的數(shù)據(jù)建立一個交叉表,以顯示每個學生所有課以顯示每個學生所有課程的總成績。程的總成績。 Grade表表中的部分數(shù)據(jù)如:中的部分數(shù)據(jù)如:

7、 前面的設計過程同以前面的設計過程同以上內(nèi)容,但是在第二步上內(nèi)容,但是在第二步需要確定交叉表的行和需要確定交叉表的行和列列 。交叉表設計向?qū)Ы徊姹碓O計向?qū)ё侄芜x取字段選取選擇數(shù)據(jù)庫和表選定字段單擊單個字段選定按鈕全部字段選定按鈕 單個字段撤消按鈕說明:在這說明:在這一步先在一步先在“數(shù)據(jù)庫和表數(shù)據(jù)庫和表”一選擇一一選擇一個數(shù)據(jù)庫,個數(shù)據(jù)庫,再選擇用以再選擇用以建立交叉表建立交叉表的數(shù)據(jù)表,的數(shù)據(jù)表,然后再從可然后再從可用字段列表用字段列表框中選擇要框中選擇要用的字段,用的字段,交叉表只用交叉表只用三個字段,三個字段,這一步可多這一步可多選選 字段。字段。全部字段撤消按鈕單擊交叉表向?qū)Ы徊姹硐驅(qū)?/p>

8、定義布局定義布局說明:說明:(1)行,將要加入到)行,將要加入到交叉表中的第一個字交叉表中的第一個字段名,本示例中選擇段名,本示例中選擇字段字段“學號學號”;(2)列,將要加入到)列,將要加入到交叉表中的從第二個交叉表中的從第二個字段開始的若干個字字段開始的若干個字段的字段名,注意這段的字段名,注意這些從源表中選擇的數(shù)些從源表中選擇的數(shù)據(jù)不能超過據(jù)不能超過254個。本個。本示例中選擇字段示例中選擇字段“課課程代號程代號”;(3)數(shù)據(jù),對應行和)數(shù)據(jù),對應行和列的運算結(jié)果,本示列的運算結(jié)果,本示例中選擇例中選擇“課程成課程成績績”。 按提示操作:從可用字段列表框中將“學號”字段拖入“行”框,將“

9、課程代號”拖入“列”框,將“課程成績”拖入“數(shù)據(jù)”框。單擊交叉表查詢向?qū)Ы徊姹聿樵兿驅(qū)Ъ尤肟偨Y(jié)信息加入總結(jié)信息說明:說明:這一步的操作,這一步的操作,決定在生成的交叉表中決定在生成的交叉表中要加入的一個字段的內(nèi)要加入的一個字段的內(nèi)容。容。(1)求和:求出對應行和列的數(shù)據(jù)字段的和;(2)計數(shù):求出對應行和列的數(shù)據(jù)字段的數(shù)目;(3)平均值:求出對應行和列的數(shù)據(jù)字段的平均值;(4)最大值:求出對應行和列的數(shù)據(jù)字段的最大值;(5)最小值:求出對應行和列的數(shù)據(jù)字段的最小值。 本示例中選擇“求和”運算。如果不想加入總結(jié)信息,可以在“分類匯總”中選擇“無”。 單擊交叉表向?qū)Ы徊姹硐驅(qū)瓿赏瓿蓪⒔徊姹聿樵円晕?/p>

10、件的形式(.QPR)保存到一個指定的目錄中。 將交叉表查詢保存到一個指定的目錄中并運行該文件。 將交叉表查詢保存到一個指定的目錄中并打開“查詢設計器”修改它。 對于值為空的記錄是否以.NULL.填充 說明:系統(tǒng)默認值是“保存交叉表查詢”和“顯示NULL值”。選擇“保存并運行交叉表查詢”后單擊交叉表保存及運行結(jié)果交叉表保存及運行結(jié)果 按上一步的操作完成后,進行到按上一步的操作完成后,進行到“另存為另存為”對話框中,將對話框中,將該查詢?nèi)∶麨樵摬樵內(nèi)∶麨镚rad_Query,然后保存在默認的目錄中。,然后保存在默認的目錄中。 保存后,系統(tǒng)進入到數(shù)據(jù)查詢過程,稍候系統(tǒng)將查詢結(jié)果顯示保存后,系統(tǒng)進入到

11、數(shù)據(jù)查詢過程,稍候系統(tǒng)將查詢結(jié)果顯示出來。如:出來。如: 從中可以看到,凡是沒有數(shù)據(jù)的欄,就被從中可以看到,凡是沒有數(shù)據(jù)的欄,就被.NULL.NULL.值填充值填充, ,且有且有許多數(shù)據(jù)丟失。許多數(shù)據(jù)丟失。 交叉表可以用數(shù)據(jù)過濾處理,在下一節(jié)中介紹。交叉表可以用數(shù)據(jù)過濾處理,在下一節(jié)中介紹。 在實際應用中,查詢向?qū)гO計的查詢往往不能滿足需求。在實際應用中,查詢向?qū)гO計的查詢往往不能滿足需求。這時還可以采用查詢設計器方便靈活的設計各種查詢,也可以這時還可以采用查詢設計器方便靈活的設計各種查詢,也可以先用查詢向?qū)гO計一個簡單的查詢,再打開并修改它。先用查詢向?qū)гO計一個簡單的查詢,再打開并修改它。

12、將上一節(jié)建立的將上一節(jié)建立的Grad_QueryGrad_Query交叉表查詢,用交叉表查詢,用“查詢設計器查詢設計器”進行修改,使用之包含盡可能少的空欄。進行修改,使用之包含盡可能少的空欄。 可以通過以下所提供的多種方法之一來打開查詢設計器:可以通過以下所提供的多種方法之一來打開查詢設計器:從從“項目管理器項目管理器”啟動查詢設計器啟動查詢設計器 1 1、在、在“項目管理器項目管理器”中選擇中選擇“數(shù)據(jù)數(shù)據(jù)”選項卡,再選取選項卡,再選取“查詢查詢”項,再單擊【新建】,進入查詢設計方式選擇對話框后單擊項,再單擊【新建】,進入查詢設計方式選擇對話框后單擊【新建查詢】,【新建查詢】,則啟動則啟動“

13、查詢設計器查詢設計器”。 2 2、在、在“項目管理器項目管理器”中選擇中選擇“數(shù)據(jù)數(shù)據(jù)”選項卡,從選項卡,從“查詢查詢”項項中選擇一個已存在的查詢文件,再單擊【修改】,也中選擇一個已存在的查詢文件,再單擊【修改】,也啟動啟動“查查詢設計器詢設計器”。 從【文件】菜單啟動查詢設計器從【文件】菜單啟動查詢設計器選擇系統(tǒng)菜單中的【文件】選擇系統(tǒng)菜單中的【文件】|【新建】命令,在【新建】命令,在“新建新建”對話框?qū)υ捒蛑羞x中中選中“文件類型文件類型”下的下的“查詢查詢”單選項,再單擊右邊的【新建單選項,再單擊右邊的【新建文件】按鈕,也可啟動文件】按鈕,也可啟動“查詢設計器查詢設計器”;使用使用CREA

14、TE QUERY命令命令也可啟動也可啟動“查詢設計器查詢設計器”查詢設計器下部分的窗口中有幾個選項卡,其含義簡介如下:查詢設計器下部分的窗口中有幾個選項卡,其含義簡介如下:(1 1)“字段字段”:用來選定包含在查詢結(jié)果中的字段;:用來選定包含在查詢結(jié)果中的字段;(2 2)“排序依據(jù)排序依據(jù)”:用來決定查詢結(jié)果輸出中記錄或行的:用來決定查詢結(jié)果輸出中記錄或行的排列順序;排列順序;(3 3)“聯(lián)接聯(lián)接”:用來確定各數(shù)據(jù)表或視圖之間的聯(lián)接關系;:用來確定各數(shù)據(jù)表或視圖之間的聯(lián)接關系;(4 4)“篩選篩選”:相當于命令:相當于命令SET FILTER TOSET FILTER TO,利用過濾的方,利用

15、過濾的方法查找一個特定的數(shù)據(jù)子集;法查找一個特定的數(shù)據(jù)子集;(5 5)“分組依據(jù)分組依據(jù)”:所謂分組就是將一組類似的記錄壓縮:所謂分組就是將一組類似的記錄壓縮成一個結(jié)果記錄,這樣就可以完成基于一組的計算。成一個結(jié)果記錄,這樣就可以完成基于一組的計算。 查詢設計器窗口查詢設計器窗口查詢文件設計與創(chuàng)建步驟查詢文件設計與創(chuàng)建步驟 要設計一個查詢文件,首先必須明確查詢的目的要設計一個查詢文件,首先必須明確查詢的目的是什么,即想要得到哪些數(shù)據(jù),并以什么方式存在;是什么,即想要得到哪些數(shù)據(jù),并以什么方式存在;或者想要得到滿足某些條件的特定記錄,或者想要知或者想要得到滿足某些條件的特定記錄,或者想要知道某些

16、記錄的字段值組合成的表達式按某一方式輸出。道某些記錄的字段值組合成的表達式按某一方式輸出。明確了輸出的數(shù)據(jù)后,就可以開始設計查詢了,一般明確了輸出的數(shù)據(jù)后,就可以開始設計查詢了,一般要通過以下幾個步驟進行:要通過以下幾個步驟進行:(1 1)啟動查詢設計器;)啟動查詢設計器;(2 2)選擇出現(xiàn)在查詢結(jié)果中的字段;)選擇出現(xiàn)在查詢結(jié)果中的字段;(3 3)設置選擇條件來查找可給出所需結(jié)果的記錄;)設置選擇條件來查找可給出所需結(jié)果的記錄;(4 4)設置排序或分組選項來組織查詢結(jié)果;)設置排序或分組選項來組織查詢結(jié)果;(5 5)選擇查詢結(jié)果的輸出類型:表、報表、瀏覽等;)選擇查詢結(jié)果的輸出類型:表、報表

17、、瀏覽等;(6 6)運行查詢。)運行查詢。 示例示例:創(chuàng)建一個含有多個表中信息的查詢。在:創(chuàng)建一個含有多個表中信息的查詢。在XGGLXGGL數(shù)據(jù)庫數(shù)據(jù)庫中有三個表:中有三個表:StudentStudent、GradeGrade、CoursesCourses,現(xiàn)在想知道學號,現(xiàn)在想知道學號前四位是前四位是99049904和和98049804的所有學生考試的成績。的所有學生考試的成績。 當在多個表或視圖間進行查詢時,需要指出這些表或視當在多個表或視圖間進行查詢時,需要指出這些表或視圖間的聯(lián)接關系。圖間的聯(lián)接關系。 操作方法如下:操作方法如下:啟動查詢設計器,在啟動查詢設計器,在“添加表和視圖添加表

18、和視圖”對話框中從對話框中從“數(shù)據(jù)數(shù)據(jù)庫庫”中選擇中選擇GXGLXTGXGLXT庫,在庫,在“數(shù)據(jù)庫中的表數(shù)據(jù)庫中的表”中選擇中選擇StudentStudent表,單擊【添加】按鈕,再選擇表,單擊【添加】按鈕,再選擇GradeGrade表,再單擊【添加】,表,再單擊【添加】, 此時系統(tǒng)自動彈出一個此時系統(tǒng)自動彈出一個“聯(lián)接條件聯(lián)接條件”,詢問,詢問是否根據(jù)兩表中都有的是否根據(jù)兩表中都有的“學號學號”字段建立內(nèi)部聯(lián)字段建立內(nèi)部聯(lián)接,單擊接,單擊“確定確定”,兩表間就有了一條連線,代,兩表間就有了一條連線,代表它們之間的聯(lián)接。然后再添加表它們之間的聯(lián)接。然后再添加CoursesCourses表,最

19、后表,最后關閉對話框。關閉對話框。在“查詢設計器”中選擇“聯(lián)接”選項卡,如圖:(1)Inner Join:內(nèi)部聯(lián)接,指定只有滿足聯(lián)接條件的記錄包含在結(jié)果中,此類型是默認的,也是最常用的;(2)Right Outer Join:右聯(lián)接,指定滿足聯(lián)接條件的記錄,以及滿足聯(lián)接條件右側(cè)的表中記錄(即使不匹配聯(lián)接條件)都包含在結(jié)果中;(3)Left Outer Join:左聯(lián)接,指定滿足聯(lián)接條件的記錄,以及滿足聯(lián)接條件左側(cè)的表中記錄(即使不匹配聯(lián)接條件)都包含在結(jié)果中;(4)Full Join:完全聯(lián)接,指定所有滿足和不滿足聯(lián)接條件的記錄都包含在結(jié)果中。 如果想修改各表間的聯(lián)接,雙擊查詢設計器上部窗口表

20、之間的連線,系統(tǒng)將彈出“連接條件”對話框;或者通過打開查詢設計器下部的“聯(lián)接”選項卡進行。一般不應隨便更改連接條件,不然會與實際數(shù)據(jù)間的關系不符。在VFP6中表間的聯(lián)接有四種類型,分別是: “條件”列表中包含如下幾項:(1)=:指字段值與實例相等;(2)LIKE:表示“字段名”欄中給出的字段值與“實例”欄中給出的文本值之間執(zhí)行不完全匹配,它主要針對字符類型。例如,如設置查詢條件為“Student.學號 LIKE 9904”,那么諸如“學號”字段前四位為9904的記錄都滿足該條件;(3)=:表示在“字段名”欄中給出的字段值與“實例”欄中給出的文本值之間執(zhí)行完全匹配檢查,它主要是針對字符型。(4)

21、:即為“字段名”欄中給出的字段的值應大于“實例”欄中給出的值;(5)=:即為“字段名”欄中給出的字段的值應大于或等于“實例”欄中給出的值;(6):即為“字段名”欄中給出的字段的值應小于“實例”欄中給出的值;(7)=:即為“字段名”欄中給出的字段的值應小于或等于“實例”欄中給出的值;(8)Is Null:指定字段必須包含Null值;(9)Between:即為輸出字段的值應大于或等于“實例”欄中的最小值,而小于或等于“實例”欄中的最大值;(10)IN(在之中):即為輸出字段的值必須是“實例”欄中所給出值中的一個,在“實例”欄中給出的各值之間以逗號分隔。 此外,“聯(lián)接”選項卡中的“否”列用于指定.N

22、OT.條件,“邏輯”列用于設置各聯(lián)接條件和篩選條件之間的邏輯關系(無、.AND.和.OR.),“大小寫”列用于指定是否區(qū)分大小寫。下方的“插入”和“移去”按鈕分別用于增加或移去查詢條件。 在設置篩選條件時,我們應注意如下幾點:(1)備注字段和通用字段不能用于設置查詢條件;(2)邏輯值的前后必須使用句點號,如.T.;(3)只有當字符串與查詢的表中字段名相同時,要用引號將字符串括起來,否則不需要用引號將字符串括起來;(4)日期不必用花括號括起來。 根據(jù)建立查詢的目的,選擇查詢結(jié)果中應包含的字段。操作方法與用向?qū)гO計查詢的方法相同。在本示例中先在“查詢設計器”中選擇“字段”選項卡,然后從可用字段列表

23、框中選擇:Student.學號、Student.姓名、Courses.課程名稱、Grade.課程成績,如圖。 選擇一個字段單擊【添加】選定的字段列表重復操作添加Student.姓名、Courses.課程名稱、Grade.課程成績 選擇表中符合條件的一部分記錄而不是全部記錄是查詢的重要任務。此例要求從所有學生的成績信息中選出“學號”前四位為“9904”和“9804”的所有學生的成績,可以利用查詢設計器中的“篩選”選項卡?!昂Y選”選項卡可確定用于選擇記錄的字段和比較準則,以及輸入與該字段進行比較的示例值。 選擇篩選字段 設置篩選條件 輸入篩選實例設置條件邏輯是否區(qū)分大小寫 在字段名下的下拉選擇框中

24、選擇“Grade.開課學期”,在“條件”下的下拉選擇框中選擇“=”,在“實例”下的文本框中輸入“第1學期”,在“邏輯”下的下拉選擇框中選擇“AND”,然后再在字段名下的下拉選擇框中選擇“Student.學號”,在“條件”下的下拉選擇框中選擇“In”,在“實例”下的文本框中輸入“9904,9804”(請注意中間的“,”是En狀態(tài)下輸入的)。我們可以通過“排序依據(jù)”選項卡設置查詢的排序次序,方法同在用查詢向?qū)гO計查詢介紹的一樣,首先從“選定字段”框中選定要使用的字段,并把它們移到“排序條件”框中,然后利用“排序選項”(從中選擇升序或降序)來設置排序條件。本例中設置Student.學號,升序為排序依

25、據(jù)。選擇一個字段單擊【添加】選定的字段列表 如果還需要添加用于排序的字段,可以重復以上的操作步驟。 所謂分組就是將一組類似的記錄壓縮成一個結(jié)果記錄,這樣就可完成基于一組記錄的計算。分組在與某些累計功能聯(lián)合使用時效果最好,例如SUM(),COUNT(),AVG()等。如果不想壓縮結(jié)果記錄,則不必設置它。在此例中不設分組查詢。如果想求各門課程的平均成績,可以用“課程名稱”進行分類查詢。選擇一個字段單擊【添加】選定的字段列表操作步驟如下:(1)在查詢設計器的“字段”選項卡中,單擊“函數(shù)和表達式”右邊的按鈕,出現(xiàn)“表達式”生成器;(2)在“數(shù)學”下拉式列表框中雙擊AVG(expN),在“來源于表”下拉

26、框中選擇Grade表,在“字段”列表框中雙擊“課程成績”,單擊【確定】。即在“函數(shù)和表達式”框中自動生成了“AVG(Grade.課程成績)”這個表達式,用以計算Grade表中課程成績的平均值。(3)單擊“添加”按鈕,該表達式被添加到“選定字段”列表框中。將來查詢結(jié)果中就會有一列數(shù)據(jù)求平均值;(4)單擊“分組依據(jù)”選項卡,進入“分組依據(jù)”窗口,在“可用字段”中選擇Grade.課程名稱,再單擊【添加】按鈕,該字段即成為分組字段。 運行查詢后的結(jié)果 經(jīng)過以上五個步驟,基本上已生成了一個比較全面的查詢。接下來還可以通過查詢設計器中的“雜項”選項卡做最后處理。單擊“雜項”選項卡,可以看到其間包括“無重復

27、記錄”、“交叉數(shù)據(jù)表”、“全部”、“百分比”這四個復選框和一個微調(diào)按鈕。選中“無重復記錄”復選框表示對于查詢結(jié)果如果存在重復記錄,則只取相同記錄中的一個。選中此項,在查詢生成器的SQL語句中會自動加上限定詞Distinct,表示去掉重復記錄。當輸出的字段只有三項時,“交叉數(shù)據(jù)表”復選框為可選狀態(tài),否則為不可選狀態(tài)。選中“交叉數(shù)據(jù)表”復選框表示將查詢的結(jié)果以交叉表的形式傳遞給其它報表或表。三項查詢字段分別表示X軸、Y軸和圖形的單元值。 如,在本示例中,將前面已加入到“選定字段”中的Student.學號字段移去,并按Student.姓名、Courses.課程名稱和Grade.課程成績的順序調(diào)整字段

28、在“選定字段”列表框中的順序,然后在“雜項”選項卡中選中“交叉數(shù)據(jù)表”,同時將“分組依據(jù)”中的“Grade.課程代號”取消,其它設置不變。 從圖中可以看到“交叉數(shù)據(jù)表”成為了可選?,F(xiàn)選中“交叉數(shù)據(jù)表”項,如圖:設置 查詢檢索的信息,可以輸出到不同的目的地,以用作不同的用途。如果沒有選定輸出的目的地,查詢結(jié)果將顯示在瀏覽窗口中。查詢輸出目的可以是瀏覽窗口、臨時表、表、圖形、屏幕、報表、標簽等。選擇結(jié)果的去向方法如下: 單擊“查詢設計器工具”中的【查詢?nèi)ハ颉堪粹o,或者從【查詢】菜單中選擇【查詢?nèi)ハ颉?,可看到如圖所示的“查詢?nèi)ハ颉睂υ捒颉?對話框中的按鈕含義如下: 【瀏覽】:在瀏覽窗口中顯示查詢結(jié)果

29、,這是查詢?nèi)笔≡O置; 【臨時表】:將查詢結(jié)果存儲在一個臨時只讀表中。多次查詢的結(jié)果可放在不同的表內(nèi)。該表可用于瀏覽數(shù)據(jù),制作報表等,直到用戶關閉它們;【表】:將查詢的結(jié)果保存在一個命名的表(.DBF )中,此時查詢的結(jié)果是真正的存放到磁盤上的,多次查詢的結(jié)果可放在不同的表內(nèi);【圖形】:使查詢結(jié)果可用于Microsoft Graph(包含在VFP6中的一個獨立的應用程序)中制作圖表;【屏幕】:在VFP6主窗口或當前活動輸出窗口中顯示查詢結(jié)果;【報表】:將輸出送到一個報表文件(.FRX)中;【標簽】:將輸出送到一個標簽文件(.LBX)中。 選定一個去向,按一定的步驟設置一些屬性,然后單擊【確定】按

30、鈕,系統(tǒng)就將按意圖放置查詢結(jié)果。 假設本例將查詢結(jié)果保存到臨時表中,取臨時表名為“查詢1”。 在完成了查詢的設計工作并指定了結(jié)果輸出去向后,可通過以下五種方式之一運行查詢:在查詢設計器區(qū)域內(nèi)單擊右鍵,在彈出菜單中選擇“運行查詢”;在“項目管理器”中選定查詢的名稱,然后選定“運行”按鈕;在“查詢”菜單中選擇“運行查詢”:在命令窗口中鍵入DO 查詢名.qpr。單擊系統(tǒng)常用菜單上的“運行”按鈕。 本例中按前述步驟設置后,單擊系統(tǒng)菜單上的“運行”按鈕運行交叉表查詢,并將查詢結(jié)果保存到臨時表“查詢1”中,然后再在瀏覽窗口中單擊【顯示】|【瀏覽“查詢1”】,結(jié)果如右表。 視圖可以通過向?qū)Ш驮O計器兩種方法來

31、創(chuàng)建。1 1、 利用向?qū)?chuàng)建本地視圖利用向?qū)?chuàng)建本地視圖用本地視圖向?qū)?chuàng)建本地視圖,可采取以下方式:方式一:(1)在主窗口下打開【工具】菜單,選擇【向?qū)А坎藛蚊?。?)再選擇【全部】菜單,出現(xiàn)【向?qū)нx取】對話框,如圖 單擊滑動按鈕選擇“本地視圖向?qū)А眴螕簟敬_定】進入到“本地視圖向?qū)Р襟E1字段選取”方式二:(1)在主窗口下打開【文件】菜單,選擇【新建】菜單命令。(2)選擇“視圖”,再單擊【向?qū)А浚瑢棾觥颈镜匾晥D向?qū)А繉υ捒?。?)然后按照向?qū)聊簧系闹甘静僮鳌7绞饺海?)在項目管理器中選定數(shù)據(jù)庫。(2)選定本地視圖,單擊【新建】按鈕。(3)單擊【視圖向?qū)А堪粹o (4)然后按照向?qū)聊簧系闹?/p>

32、示操作。方式四:(1)打開數(shù)據(jù)庫設計器,打開【數(shù)據(jù)庫】菜單。(2)選擇【新建本地視圖】,再單擊【視圖向?qū)А堪粹o。(3)然后按照向?qū)聊簧系闹甘静僮鳌?說明:按照上述幾種方式,可以快速建立本地視圖,但要強調(diào)的是,在項目管理器中創(chuàng)建或使用視圖時,項目管理器會自動打開數(shù)據(jù)庫。如果要使用項目以外的表或視圖,則必須先打開數(shù)據(jù)庫或事先確認數(shù)據(jù)庫在作用范圍內(nèi)。 本地視圖向?qū)В翰襟E本地視圖向?qū)В翰襟E1字段選取字段選取 本地視圖向?qū)υ捒蛉鐖D,創(chuàng)建視圖大體要經(jīng)過以下步驟:(1)字段選取。)字段選取。選擇數(shù)據(jù)庫,數(shù)據(jù)庫中的表和表中的字段。如果當前已經(jīng)打開了一個數(shù)據(jù)庫,則第一步的對話框中顯示的是創(chuàng)建當前數(shù)據(jù)庫的視圖

33、,也可以選擇其它的數(shù)據(jù)庫。(2)關聯(lián)表。)關聯(lián)表。建立數(shù)據(jù)庫中表與表之間的關系。(3)包含記錄。)包含記錄。指定包含表中的全部記錄還是僅匹配的記錄。(4)篩選記錄。)篩選記錄。選定符合條件的記錄。(5)排序記錄。)排序記錄。為選定的記錄按照某一字段進行排序。 (6)限定記錄。)限定記錄。定制顯示一定數(shù)量的記錄。(7)完成視圖。)完成視圖。選擇保存視圖后瀏覽還是修改。 例:創(chuàng)建包含Grade表和Courses表的本地視圖“視圖1”。選擇表Grade單擊全部添加按鈕選擇Courses表單擊單個添加按鈕,添加課程名、學時數(shù)、學分數(shù)選擇字段完成后,單擊【下一步】,步驟2為表建立關系。本地視圖向?qū)В翰襟E

34、本地視圖向?qū)В翰襟E2為表建立關系為表建立關系父表字段選擇下拉選擇框子表字段選擇下拉選擇框說明:在這一步要建立用來建立本地視圖的表間的關系。1、先在父表字段選擇下拉選擇框中選擇要用來建立關系的主關鍵字;2、再在子表字段選擇下拉選擇框中選擇用來建立關系的子表關鍵字;3、單擊【添加】,將設定關系添加到關系列表框中。上面的字段符合要求,單擊【添加】關系設置完成后單擊【下一步】進入到步驟2a字段選取對話框。本地視圖向?qū)В翰襟E2a字段選取生成的本地視圖中只包含表中關系相匹配的記錄,對應于關系中的內(nèi)聯(lián)接的設置結(jié)果。生成的本地視圖中包含Grade表中的全部記錄和子表中關鍵字段相匹配的記錄,對應于關系中的左聯(lián)接

35、的設置結(jié)果。生成的本地視圖中包含Courses表中全部記錄和父表中關鍵字段相匹配的記錄,對應于關系中的右聯(lián)接的設置結(jié)果。生成的本地視圖中包含表中所有的記錄,對應于關系中的完全聯(lián)接的設置結(jié)果。 本例中選用默認值:僅包含匹配的行。然后單擊【下一步】,進入步驟3篩選記錄。本地視圖向?qū)В翰襟E3篩選記錄 說明:本地視圖向?qū)У暮Y選記錄與查詢向?qū)У暮Y選記錄的方式類似。 在本例中不篩選記錄。單擊【下一步】,進入到本地視圖向?qū)У牟襟E4排序記錄。本地視圖向?qū)В翰襟E4排序記錄 說明:在這一步中設置在本地視圖的記錄順序。 本例中可先按“學號”排序,學號相同的再按“課程代號”排序。 操作方法與建立查詢的記錄排序方法相同

36、。先在“可用字段”列表框中選擇“學號”,然后單擊【添加】,再選擇“課程代號”,再單擊【添加】如上圖。 排序字段及順序設置后單擊【下一步】,進入本地視圖向?qū)В翰襟E4a限制記錄。本地視圖向?qū)В翰襟E4a限制記錄 限制記錄的方法與建立查詢的限制記錄的方法完全相同。在本例中仍保持在本地視圖中包含所有的記錄,因而取默認值,直接單擊【下一步】,進入本地視圖向?qū)В翰襟E5完成。 在第5步中的操作方法也與建立查詢的方法相同,現(xiàn)選擇“保存本地視圖并瀏覽”,然后單擊【完成】。彈出“視圖名”對話框。在“視圖名”文本框中輸入“視圖1”。 輸入視圖名后單擊【確認】按鈕,系統(tǒng)顯示所建立的本地視圖的結(jié)果。本地視圖向?qū)ЫY(jié)束。2

37、2、利用視圖設計器創(chuàng)建本地視圖、利用視圖設計器創(chuàng)建本地視圖(1 1) 進入視圖設計器進入視圖設計器進入視圖設計器的方法與進入查詢設計器的方法基本相同,下面以新建視圖的方式進入視圖設計器。啟動視圖設計器方法啟動視圖設計器方法 新建一個視圖可按以下步驟進入視圖設計器:選擇【文件】|【新建】命令,單擊“視圖”單選框,再單擊【新建文件】按鈕。在數(shù)據(jù)庫設計器中,選擇【數(shù)據(jù)庫】|【新建本地視圖】或單擊數(shù)據(jù)庫設計器的快捷菜單中的【新建本地視圖】|【新視圖】按鈕。在項目管理器中,單擊“數(shù)據(jù)”選項卡,在列表框中選定“本地視圖”,再單擊【新建】按鈕,單擊【新建視圖】按鈕。 修改一個視圖可按以下步驟進入視圖設計器:

38、在數(shù)據(jù)庫設計器窗口中,單擊選定需要修改的視圖,選擇【數(shù)據(jù)庫】|【修改】命令。在數(shù)據(jù)庫設計器窗口中,右擊需要修改的視圖,在出現(xiàn)的快捷菜單中選擇【修改】命令。在項目管理器中,單擊【數(shù)據(jù)】選項卡,在列表框中選定需要修改的視圖,單擊【修改】按鈕。 “視圖設計器視圖設計器”工具欄說明工具欄說明添加表 移去表添加聯(lián)接 顯示SQL窗口最大化上部窗格添加表:顯示“添加表或視圖”對話框,從而可以向設計器窗口添加一個表或視圖移去表:從設計器窗口的上窗格中移去選定的表。添加聯(lián)接:在視圖中的兩個表之間創(chuàng)建聯(lián)接條件顯示/隱藏SQL窗口:顯示或隱藏建立當前視圖的SQL語句最大化/最小化上部窗口:放大或縮小視圖設計器的上窗

39、格(2)從表中選擇所需字段在進行本地視圖設計器之前,先建立Classzc表和Department表,表結(jié)構(gòu)和數(shù)據(jù)如下: 通過上述方式之一打開視圖設計器,在進入設計器之前,需要選定數(shù)據(jù)庫和表,現(xiàn)選定XGGL數(shù)據(jù)庫 ,如右圖: 從中選定表Classzc并單擊【添加】按鈕,然后單擊【關閉】按鈕,啟動視圖設計器。視圖設計器 進入視圖設計器后,第一步先需要選定字段,選定字段可直接通過字段選項卡進行。其操作方法與查詢設計器中選擇字段的方法相同。從“可用字段”列表框里選定Classzc.班級簡稱字段,單擊【添加】按鈕或雙擊該字段,則Classzc. 班級簡稱字段將會出現(xiàn)在右邊的“選定字段”列表框中。本次建立

40、的視圖里,還需要選定Classzc.學習性質(zhì)、Classzc.學制二個字段。它們選定的方法與選定Classzc. 班級簡稱字段一樣。如果需選定字段是“可用字段”列表框中的所有字段,可以單擊【全部添加】按鈕,這樣就把所有字段添加到了“選定字段”列表框中去了,可以通過【移去】按鈕將其移出來。如果需要全部移出,可以利用【全部移去】按鈕快速移出。 要將表中的字段添加到“選定字段”列表框中,除了上述方法外,還可以將鼠標指向視圖設計器上部窗口中的表窗口中的字段上,按住鼠標左鍵或右鍵拖動一個字段到“選定字段”列表框,該字段就被加入到了“選定字段”列表框中。還可以通過雙擊字段名將其加入到“選定字段”列表框。表

41、窗口中的代表表中的全部字段,它也是可以拖動或雙擊的。若要從“選定字段”列表框中移去字段,也可以使用鼠標拖動或雙擊。 “字段”選項卡還有一個【屬性】按鈕和一個“函數(shù)和表達式”文本框。只要“選定字段”列表框中有一個值,【屬性】命令按鈕就成為可選的了。選擇【屬性】后,出現(xiàn)圖: 屬性設置可分為五種類型:字段有效性、顯示、匹配字段到類、數(shù)據(jù)匹配和注釋。其中字段有效性、顯示、匹配字段到類和注釋在第3章中介紹數(shù)據(jù)表設計時已經(jīng)作過說明,視圖設計和數(shù)據(jù)表設計在字段屬性上基本類似。“函數(shù)和表達式”文本框及其按鈕:“函數(shù)和表達式” 文本框用于輸入一個函數(shù)和表達式,具體操作只需單擊“函數(shù)和表達式”文本框后的對話按鈕,

42、在隨后出現(xiàn)的表達式生成器中書寫函數(shù)或表達式。此選項的功能是為了生成一個虛擬的字段。 后面的創(chuàng)建步驟與本章前述的用查詢設計器設計查詢相似,在此不一一闡述。 (3)建立多表關聯(lián) 前面主要是針對單一的本地表建立視圖,雖然很容易,但它的實際功能不大。因為在實際開發(fā)中,系統(tǒng)的數(shù)據(jù)庫很復雜,表的關聯(lián)性很強,用戶關心的往往是一些復雜的數(shù)據(jù),因此需要建立多表視圖。 從定義上講,多表視圖指的是:視圖中的字段來源于兩個或兩個以上的表。但是,在視圖中表間的關系既不像數(shù)據(jù)庫中的關系是永久的,也不像表中的關系是暫時的,它不靠索引字段進行聯(lián)接,而是通過定義一個聯(lián)接表達式來進行聯(lián)接,表間的關系是松散的??梢园慈缦罗k法建立表

43、間的聯(lián)接:在視圖設計器中單擊“聯(lián)接”選項卡即可設置多表間的關聯(lián)。在“添加表或視圖”對話框中,選定表后,單擊【添加】按鈕,當視圖設計器中的表在兩個及以上時,視圖設計器就會為選定的表建立關聯(lián)。說明:用以上的方法建立多表關聯(lián),必須有多個表添加到了視圖設計器中。后續(xù)的操作方法與設計多表查詢相似,除不同點外,相同的部分這里不再講述。例:建立表Department、Classzc、Student、Courses和Grade五表之間的關聯(lián)的視圖,名稱為:視圖3。(4)與設計多表查詢不相同的部分更新條件視圖的最大特點在于能用視圖更新數(shù)據(jù),這也是建立視圖與建立查詢的主要區(qū)別,也是視圖的重點所在。視圖設計器中的“

44、更新條件”選項卡可以用來設置允許視圖更新表字段的條件。 “更新條件”選項卡選項包括如下內(nèi)容:“表”:指定視圖所使用的哪些表可以修改。選擇這個下拉列表框中的選項,可以確定哪些表中的字段可以在“字段名”列表框中,以便設置更新條件。此列表中所顯示的表都包含了“字段”選項卡“選定字段”列表中的字段?!局刂藐P鍵字】:這個按鈕作用是從每個表中選擇主關鍵字字段作為視圖的關鍵字字段。每個主關鍵字字段是在“字段名”列表中的、在鑰匙符號下面打一個對鉤的字段,關鍵字字段可可用來使視圖中的修改與表中的原始記錄相匹配?!救扛隆浚嚎梢詮淖侄蚊谋究蛑锌吹揭恍┳侄吻暗你U筆符號下打了一個對鉤,這表明這些字段可以更新。在這

45、個按鈕中可以選擇除了關鍵字字段以外的所有字段來進行更新,并在“字段名”列表的鉛筆符號下打一個對鉤。“發(fā)送SQL更新”:指定是否將視圖記錄中的修改傳送給原始表。如果選擇了這個復選框,將把在視圖中對記錄字段的修改返回到源表中。“字段名”列表框:顯示了從“表”列表框中所選的表中的字段、并用來輸出這些字段,不過這些字段都是可以更新的。在字段文本框中共有下列3種方式字段:關鍵字段(使用鑰匙符號作標記),指定該字段是否為關鍵字段??筛伦侄危ㄊ褂勉U筆符號作標記),指定該字段是否為可更新字段。字段名,顯示可標志為關鍵字字段或可更新字段的輸出字段名。 “SQL WHERE 子句包括”:“關鍵字段”:如果在原始

46、表中有一個關鍵字字段被改變,設置WHERE子句來檢測沖突,對于由另一用戶對表中原始記錄的其他字段所做修改不進行比較?!瓣P鍵字和可更新字段”:設置WHERE子句來檢測由某一用戶修改了任何可更新的字段的沖突?!瓣P鍵字和已修改字段”:如果從視圖首次檢索(默認)以后,關鍵字字段或原始表記錄的已修改字段中,某個字段做過修改,設置WHERE子句來檢測沖突?!瓣P鍵字段和時間戳”:如果自原始表記錄的時間戳首次檢索以后,它被修改過,設置WHERE子句來檢測沖突。只有當遠程表有時間戳列時,此選項才有效。“使用更新”:此單選按鈕組用于指定字段如何在后端服務器上進行更新?!癝QL DELETE然后INSERT”:指定

47、先刪除原始表記錄后,再創(chuàng)建一個新的在視圖中被修改的記錄?!癝QL UPDATE”:指定用視圖字段中的內(nèi)容來修改原始表中的字段。具體說明如何設置更新條件詳見6.5在視圖中更新數(shù)據(jù)。 同查詢一樣,可用SELECTSQL語言創(chuàng)建視圖。SELECTSQL語句: 格式:SELECT ALL | DISTINCT TOP nExpr PERCENT Alias. Select_Item AS Column_ Name , Alias. Select_Item AS Column_Name . FROM FORCE DatabaseName! Table AS Local_Alias INNER|LEFT

48、OUTER| RIGHT OUTER |FULL OUTER JOINDatabaseName! Table AS Local_Alias ON JoinCondition INTO Destination|TO FILE FileName ADDITIVE|TO PRINTER PROMPT|TO SCREEN PREFERENCE PreferenceName NOCONSOLE PLAIN NOWAIT WHERE JoinCondition .AND. JoinCondition . .AND.|.OR. FilterCondition .AND.|.OR. FilterConditi

49、on . GROUP BY GroupColumn , GroupColumn . HAVING FilterCondition UNION ALL SELECTCommand ORDER BY Order_Item ASC|DESC , Order_Item ASC|DESC .功能:功能:從一個或多個表中檢索數(shù)據(jù)。參數(shù)描述:參數(shù)描述:SELECT:用SELECT子句指定在查詢結(jié)果中包含的字段、常量和表達式。ALL:在查詢結(jié)果中包含所有的行(包括重復值)。它是系統(tǒng)的默認設置。DISTINCT:在查詢結(jié)果中刪除重復行。TOP nExpr PERCENT:在符合查詢條件的所有記錄中,選取指定數(shù)量

50、或百分比的記錄。TOP子句必須與ORDER BY子句同時使用。ORDER BY子句指定按哪個字段排序,TOP子句根據(jù)此排序選定開始的nExp個 或nExp %的記錄??梢灾付ㄟx取132767條記錄。Alias.:限定匹配項的名稱。Select-Item指定的每一項在查詢結(jié)果中都生成一列,如果多個項具有相同的名稱,則應在這些項前加上表的別名和一個句點號,以防止出現(xiàn)重復的列。Select_Item :指定包含在查詢中的一個項。一個項可以是:FROM子句中所包含的表中的字段名稱。一個常量,查詢結(jié)果中的每一行都出現(xiàn)這個常量值。一個表達式,可以是用戶自定義函數(shù)名。AS Column_Name:指定查詢結(jié)

51、果中的列標題。當Select-Item是一個表達式或一個字段函數(shù)時,如果要給此列取一個有意義的名稱可用這個子句。它可以是一個表達式。FROM:列出所有從中檢索數(shù)據(jù)的表。如果沒有打開表,VFP會顯示“打開”對話框以便指定文件位置,表打開以后直到查詢結(jié)束才關閉。FORCE:如果包含了此子句,VFP在建立查詢時會嚴格按照在FROM子句中申明的順序建立聯(lián)接,否則會試圖對查詢進行優(yōu)化。避免優(yōu)化過程,可能會加快查詢執(zhí)行的速度。DatabaseName!:當包含表的數(shù)據(jù)庫不是當前的數(shù)據(jù)庫時,此子句指定數(shù)據(jù)庫的名稱。如果數(shù)據(jù)庫不是當前數(shù)據(jù)庫,就必須指定包含表的數(shù)據(jù)庫名稱,注意其后應加上“!”號。Table A

52、S Local_Alias:為Table中的表指定一個臨時名稱。如果指定了本地別名,那么在整個Select語句中都必須用這個別名代替表名。INNER JOIN:只有在其它表中包含對應記錄(一個或多個)的記錄才出現(xiàn)在查詢結(jié)果中。LEFT OUTER JOIN:在查詢結(jié)果中包含JOIN左側(cè)表中的所有記錄,以及右側(cè)表中匹配的記錄。這是左聯(lián)接。RIGHT OUTER JOIN:在查詢結(jié)果中包含JOIN右側(cè)表中的所有記錄,以及左側(cè)表中匹配的記錄。這是右聯(lián)接。FULL OUTER JOIN:在查詢結(jié)果中包含JOIN兩側(cè)表中的所有記錄,這是完全聯(lián)接。DatabaseName!Table AS Local_A

53、lias:指定和當前表建立聯(lián)接的表所在的數(shù)據(jù)庫及表名或本地表別名。ON JoinCondition:指定聯(lián)接條件。INTO Destination:指定在何處保存查詢結(jié)果。如果在同一個查詢中同時包含了INTO子句和TO子句,則TO子句不起作用。如果沒有包含INTO子句,查詢結(jié)果顯示在“瀏覽”窗口中。Destination可以是下列子句之一:ARRAY ArrayName:將查詢結(jié)果保存到數(shù)組中。如果查詢結(jié)果中不包含任何記錄,則不創(chuàng)建這個數(shù)組。CURSOR CursorName:將查詢結(jié)果保存到臨時表中。如果指定了一個已打開表的名稱,則VFP產(chǎn)生錯誤信息。執(zhí)行完SELECT語句后,臨時表仍然保持

54、打開、活動,但只讀。一旦關閉臨時表,則自動刪除它。DBF TableName|TABLE TableName:將查詢結(jié)果保存到一個表中,如果指定的表已經(jīng)打開,并且SET SAFETY設置為OFF,則VFP在不給出任何警告信息的情況下改寫該表。執(zhí)行完SELECT語句后,臨時表仍然保持打開活動狀態(tài)。TO FILE FileName ADDITIVE | TO PRINTER PROMPT | TO SCREEN:如果命令中包含了TO子句,但沒有包括INTO子句,則查詢結(jié)果定向輸出到名為FileName的ASCII碼文件、打印機或主窗口。包含ADDITIVE子句使查詢結(jié)果追加到所指定的文本文件的內(nèi)容

55、后面。PREFERENCE PreferenceName:如果查詢結(jié)果送往瀏覽窗口,就可以使用該子句保存瀏覽窗口的屬性和選項以備后用。NOCONSOLE:不顯示送到打印機、文件、或VFP主窗口的查詢結(jié)果。PLAIN:防止列標題出現(xiàn)在顯示的查詢結(jié)果中。NOWAIT:打開瀏覽窗口并將結(jié)果輸出到這個窗口后繼續(xù)程序的執(zhí)行。WHERE:告訴VFP只在查詢結(jié)果中包含一定的記錄。從多表檢索中查找數(shù)據(jù)時需要用到該子句。JoinCondition:指定一個字段,該字段聯(lián)接FROM子句中的表。如果查詢中包括不止一個表就應該為第一個表后的每一個表指定聯(lián)接條件。聯(lián)接多個查詢條件必須使用.AND.。每個聯(lián)接都是這樣的形

56、式:FieldName1 Comparison FieldName2其中:FieldName1是一個表的字段名,F(xiàn)ieldName2是另一個表的字段名。Comparison是下列的某一操作符:=、=、LIKE、,!=,#、=、=FilterCondition:指定包含在查詢結(jié)果中的記錄必須滿足條件。篩選條件的數(shù)目沒有限制,只要將它們用.AND.或.OR.操作符連接起來即可。也可以使用操作符.NOT.對邏輯表達式取反,或使用EMPTY()函數(shù)檢查字段是否為空等。GROUP BY GroupColumn:按列的值對查詢結(jié)果進行分組。GroupColumn 可以是常規(guī)的表字段名,也可以是一個包含SQ

57、L字段函數(shù)的字段名,還可以是一個數(shù)值表達式指定查詢結(jié)果表中的列位置。HAVING FilterCondition:指定包含在查詢結(jié)果中的組必須滿足的條件。它應和GROUP BY GroupColumn一起使用。UNION ALL SELECTCommand:把一個SELECT語句的最后查詢結(jié)果同另一個SELECT語句最后的查詢結(jié)果組合起來。ALL防止UNION刪除組合結(jié)果中的重復行。ORDER BY Order_Item :根據(jù)列的數(shù)據(jù)對查詢結(jié)果進行排序。每個Order_Item都必須對應查詢結(jié)果中的一列。 用SELECTSQL命令完成上節(jié)的設計任務:SELECT Department.系部名

58、稱, Classzc.班級名稱, Student.學號, ; Student.姓名, Course.課程名, Grade.課程成績; FROM gxglxt!department INNER JOIN gxglxt!classzc; INNER JOIN gxglxt!student; INNER JOIN gxglxt!grade; INNER JOIN gxglxt!course ; ON Grade.課程代號 = Course.課程代號 ; ON Student.學號 = Grade.學號 ; ON Classzc.班級代號 = Student.班級代號 ; ON Department.

59、系部代號 = Classzc.系部代號; WHERE Classzc.系部代號 = 04; .AND. Grade.開課學期 = 第1學期; ORDER BY Student.學號;INTO CURSOR 視圖1 運行該SELECT語句后,選擇【顯示】|【瀏覽“視圖1”】屏幕顯示如圖: 1、 用視圖向?qū)?chuàng)建遠程視圖 創(chuàng)建使用遠程數(shù)據(jù)(ODBC)的視圖,必須存在一個數(shù)據(jù)庫來保存視圖,同時還需要存在數(shù)據(jù)源或命名連接。如果沒有打開數(shù)據(jù)庫,系統(tǒng)將提示打開數(shù)據(jù)庫或創(chuàng)建數(shù)據(jù)庫。在運行“遠程視圖向?qū)А敝埃梢栽凇斑x項”對話框的“遠程數(shù)據(jù)”選項卡上設置遠程視圖和連接的默認選項。也可以在“連接設計器”中創(chuàng)建連

60、接。 如果要利用遠程視圖向?qū)?chuàng)建遠程視圖,則選擇【文件】|【新建】命令,在彈出的新建對話框中選中遠程視圖,然后單擊【向?qū)А堪粹o。就會進入遠程視圖向?qū)υ捒蛑??;蛘咴跀?shù)據(jù)庫設計器工具欄中單擊【新建遠程視圖】按鈕,選擇使用向?qū)А?創(chuàng)建遠程視圖主要有以下步驟:1、 數(shù)據(jù)源選取2、 字段選取3、 為表建立關系4、 包含記錄5、 排序記錄6、 篩選記錄7、 完成在第一步數(shù)據(jù)源選取中,可以在可用的數(shù)據(jù)源列表框中選擇一種ODBC數(shù)據(jù)源或者一個已經(jīng)建立的連接。如果選擇的是一種未連接任何數(shù)據(jù)源的ODBC數(shù)據(jù)源,系統(tǒng)將顯示一個“確認連接”對話框,從中選擇一個數(shù)據(jù)源。當選擇的VFP Tables或VFPDataba

溫馨提示

  • 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會有圖紙預覽,若沒有圖紙預覽就沒有圖紙。
  • 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
  • 5. 人人文庫網(wǎng)僅提供信息存儲空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負責。
  • 6. 下載文件中如有侵權(quán)或不適當內(nèi)容,請與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。

評論

0/150

提交評論