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

下載本文檔

版權(quán)說(shuō)明:本文檔由用戶(hù)提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)

文檔簡(jiǎn)介

1、學(xué)習(xí)要點(diǎn)學(xué)習(xí)要點(diǎn)1、查詢(xún)向?qū)Ш筒樵?xún)?cè)O(shè)計(jì)器的使用方法;2、單表查詢(xún)和交叉表查詢(xún);3、查詢(xún)?cè)O(shè)計(jì)器中各選項(xiàng)卡的功能和使用方法;4、本地視圖和遠(yuǎn)程視圖;5、視圖向?qū)Ш鸵晥D設(shè)計(jì)器的使用方法;6、使用視圖。 3.2 用查詢(xún)向?qū)гO(shè)計(jì)查詢(xún)用查詢(xún)向?qū)гO(shè)計(jì)查詢(xún) 3.3 用查詢(xún)?cè)O(shè)計(jì)器設(shè)計(jì)查詢(xún)用查詢(xún)?cè)O(shè)計(jì)器設(shè)計(jì)查詢(xún) 3.4 創(chuàng)建視圖創(chuàng)建視圖 3.5數(shù)據(jù)庫(kù)視圖的操作數(shù)據(jù)庫(kù)視圖的操作 小小 結(jié)結(jié) 返回返回退出退出3.6利用視圖更新數(shù)據(jù)利用視圖更新數(shù)據(jù) 3.7利用視圖處理自由數(shù)據(jù)利用視圖處理自由數(shù)據(jù) 3.2.1 設(shè)計(jì)單表查詢(xún)?cè)O(shè)計(jì)單表查詢(xún) 3.2.2 建立交叉表建立交叉表 返返 回回退退退退退退 出出出出出出 查詢(xún)向?qū)Э梢砸龑?dǎo)

2、用戶(hù)快速設(shè)計(jì)一個(gè)查詢(xún)。下面將示例使用查詢(xún)向?qū)Э梢砸龑?dǎo)用戶(hù)快速設(shè)計(jì)一個(gè)查詢(xún)。下面將示例使用查詢(xún)向?qū)гO(shè)計(jì)一個(gè)簡(jiǎn)單的單表查詢(xún):從查詢(xún)向?qū)гO(shè)計(jì)一個(gè)簡(jiǎn)單的單表查詢(xún):從XGGL數(shù)據(jù)庫(kù)的數(shù)據(jù)庫(kù)的Student表中查詢(xún)系部代號(hào)為表中查詢(xún)系部代號(hào)為“04”且是且是99級(jí)的所有學(xué)生的信息。級(jí)的所有學(xué)生的信息。 操作過(guò)程如下:首先從操作過(guò)程如下:首先從“文件文件”開(kāi)始,選擇【新建】開(kāi)始,選擇【新建】 -“查查詢(xún)?cè)儭?,然后單擊【向?qū)А堪粹o,則出現(xiàn)設(shè)計(jì)查詢(xún)的方式選擇對(duì),然后單擊【向?qū)А堪粹o,則出現(xiàn)設(shè)計(jì)查詢(xún)的方式選擇對(duì)話(huà)框。話(huà)框。 單擊 選擇選擇XGGL數(shù)數(shù)據(jù)庫(kù)中的據(jù)庫(kù)中的Student表,表,并將該表并將該表中的所有中

3、的所有字段添加字段添加到到“選定選定字段字段”列列表框中。表框中。 單擊查詢(xún)向?qū)Р樵?xún)向?qū)ё侄芜x取字段選取從中選擇Student.系部代號(hào)0在此輸入值4取默認(rèn)值從中選擇“包含”在此輸入值98單擊單擊【預(yù)覽】按鈕可以顯示查詢(xún)結(jié)果。根據(jù)要求,設(shè)置條件如上圖。其中,單擊【預(yù)覽】按鈕可以顯示查詢(xún)結(jié)果。根據(jù)要求,設(shè)置條件如上圖。其中,雖然表中沒(méi)有年級(jí)字段,但可通過(guò)雖然表中沒(méi)有年級(jí)字段,但可通過(guò)“學(xué)號(hào)學(xué)號(hào)”得到年級(jí)(學(xué)號(hào)的前二位為年得到年級(jí)(學(xué)號(hào)的前二位為年級(jí))。級(jí))。 查詢(xún)向?qū)Р樵?xún)向?qū)ШY選記錄篩選記錄選擇排序字段單擊【添加】 選擇排序方式調(diào)整排序順序移動(dòng)按鈕單擊查詢(xún)向?qū)Р樵?xún)向?qū)в涗浥判蛴涗浥判虿樵?xún)向?qū)Р樵?xún)

4、向?qū)拗朴涗浵拗朴涗浵拗撇樵?xún)結(jié)果中所包含的記錄數(shù)說(shuō)明:查詢(xún)結(jié)果中所包含說(shuō)明:查詢(xún)結(jié)果中所包含的記錄數(shù)限制共有四種方的記錄數(shù)限制共有四種方式:式:1、“部分類(lèi)型部分類(lèi)型”中選擇中選擇“所占記錄百分比所占記錄百分比”,“數(shù)量數(shù)量”中選擇中選擇“所有記所有記錄錄”,查詢(xún)結(jié)果集中包含,查詢(xún)結(jié)果集中包含全部記錄。全部記錄。2、“部分類(lèi)型部分類(lèi)型”中選擇中選擇“所占記錄百分比所占記錄百分比”,“數(shù)量數(shù)量”中選擇中選擇“部分部分值值”,再在,再在“微調(diào)框微調(diào)框”中中設(shè)置數(shù)值,查詢(xún)結(jié)果集中設(shè)置數(shù)值,查詢(xún)結(jié)果集中包含指定數(shù)值百分?jǐn)?shù)的記包含指定數(shù)值百分?jǐn)?shù)的記錄。錄。 3、“部分類(lèi)型部分類(lèi)型”中選擇中選擇“記錄號(hào)記

5、錄號(hào)”,“數(shù)量數(shù)量”中選擇中選擇“所有記錄所有記錄”,查詢(xún),查詢(xún)結(jié)果集中包含全部記錄。結(jié)果集中包含全部記錄。4、 “部分類(lèi)型部分類(lèi)型”中選擇中選擇“記錄號(hào)記錄號(hào)”,“數(shù)量數(shù)量”中選擇中選擇“部分值部分值”,再在,再在“微調(diào)框微調(diào)框”中設(shè)置數(shù)值,查詢(xún)結(jié)果集中包含指定數(shù)值的記錄數(shù)。中設(shè)置數(shù)值,查詢(xún)結(jié)果集中包含指定數(shù)值的記錄數(shù)。單擊取默認(rèn)值,查詢(xún)結(jié)果集中包含全部記錄查詢(xún)向?qū)Р樵?xún)向?qū)瓿赏瓿蓪⒉樵?xún)以文將查詢(xún)以文件的形式件的形式(.QPR)保)保存到一個(gè)指存到一個(gè)指定的目錄中。定的目錄中。 將查詢(xún)保存到一將查詢(xún)保存到一個(gè)指定的目錄中個(gè)指定的目錄中并運(yùn)行該文件。并運(yùn)行該文件。 利用查詢(xún)向?qū)гO(shè)計(jì)的查詢(xún)功能有

6、限,可以使用查詢(xún)?cè)O(shè)計(jì)器修改它。利用查詢(xún)向?qū)гO(shè)計(jì)的查詢(xún)功能有限,可以使用查詢(xún)?cè)O(shè)計(jì)器修改它。 單擊,可以查看查詢(xún)結(jié)果集中的全部數(shù)據(jù)單擊,可以查看查詢(xún)結(jié)果集中的全部數(shù)據(jù)打開(kāi)幫助文件幫助文件 取消所建立的查詢(xún)?nèi)∠⒌牟樵?xún) 返回到向?qū)У纳弦徊椒祷氐较驅(qū)У纳弦徊浇Y(jié)束向?qū)ВY(jié)束向?qū)?,完成查?xún)?cè)O(shè)完成查詢(xún)?cè)O(shè)計(jì)。計(jì)。單擊保存設(shè)計(jì)的查詢(xún)保存設(shè)計(jì)的查詢(xún)目錄選擇下拉列表框文件名輸入文本框文件類(lèi)型選擇下位列表框在在“文件名輸入文本框文件名輸入文本框”中中輸入輸入“Stud_query”后,單擊后,單擊【保存】按鈕,結(jié)束查詢(xún)?cè)O(shè)【保存】按鈕,結(jié)束查詢(xún)?cè)O(shè)計(jì)過(guò)程。計(jì)過(guò)程。在項(xiàng)目管理器中的“數(shù)據(jù)”選項(xiàng)中的查詢(xún)項(xiàng)下產(chǎn)生了一個(gè)查詢(xún)

7、文件返回 如果在上文所述的建如果在上文所述的建立查詢(xún)的第一步選擇立查詢(xún)的第一步選擇“交叉表向?qū)Ы徊姹硐驅(qū)А保瑒t可,則可以建立交叉表。下面通以建立交叉表。下面通過(guò)示例來(lái)介紹如何建立過(guò)示例來(lái)介紹如何建立交叉表。用交叉表。用Grade表中表中的數(shù)據(jù)建立一個(gè)交叉表,的數(shù)據(jù)建立一個(gè)交叉表,以顯示每個(gè)學(xué)生所有課以顯示每個(gè)學(xué)生所有課程的總成績(jī)。程的總成績(jī)。 Grade表表中的部分?jǐn)?shù)據(jù)如:中的部分?jǐn)?shù)據(jù)如: 前面的設(shè)計(jì)過(guò)程同以前面的設(shè)計(jì)過(guò)程同以上內(nèi)容,但是在第二步上內(nèi)容,但是在第二步需要確定交叉表的行和需要確定交叉表的行和列列 。交叉表設(shè)計(jì)向?qū)Ы徊姹碓O(shè)計(jì)向?qū)ё侄芜x取字段選取選擇數(shù)據(jù)庫(kù)和表選定字段單擊單個(gè)字段選定

8、按鈕全部字段選定按鈕 單個(gè)字段撤消按鈕說(shuō)明:在這說(shuō)明:在這一步先在一步先在“數(shù)據(jù)庫(kù)和表數(shù)據(jù)庫(kù)和表”一選擇一一選擇一個(gè)數(shù)據(jù)庫(kù),個(gè)數(shù)據(jù)庫(kù),再選擇用以再選擇用以建立交叉表建立交叉表的數(shù)據(jù)表,的數(shù)據(jù)表,然后再?gòu)目扇缓笤購(gòu)目捎米侄瘟斜碛米侄瘟斜砜蛑羞x擇要框中選擇要用的字段,用的字段,交叉表只用交叉表只用三個(gè)字段,三個(gè)字段,這一步可多這一步可多選選 字段。字段。全部字段撤消按鈕單擊交叉表向?qū)Ы徊姹硐驅(qū)Фx布局定義布局說(shuō)明:說(shuō)明:(1)行,將要加入到)行,將要加入到交叉表中的第一個(gè)字交叉表中的第一個(gè)字段名,本示例中選擇段名,本示例中選擇字段字段“學(xué)號(hào)學(xué)號(hào)”;(2)列,將要加入到)列,將要加入到交叉表中的從第

9、二個(gè)交叉表中的從第二個(gè)字段開(kāi)始的若干個(gè)字字段開(kāi)始的若干個(gè)字段的字段名,注意這段的字段名,注意這些從源表中選擇的數(shù)些從源表中選擇的數(shù)據(jù)不能超過(guò)據(jù)不能超過(guò)254個(gè)。本個(gè)。本示例中選擇字段示例中選擇字段“課課程代號(hào)程代號(hào)”;(3)數(shù)據(jù),對(duì)應(yīng)行和)數(shù)據(jù),對(duì)應(yīng)行和列的運(yùn)算結(jié)果,本示列的運(yùn)算結(jié)果,本示例中選擇例中選擇“課程成課程成績(jī)績(jī)”。 按提示操作:從可用字段列表框中將“學(xué)號(hào)”字段拖入“行”框,將“課程代號(hào)”拖入“列”框,將“課程成績(jī)”拖入“數(shù)據(jù)”框。單擊交叉表查詢(xún)向?qū)Ы徊姹聿樵?xún)向?qū)Ъ尤肟偨Y(jié)信息加入總結(jié)信息說(shuō)明:說(shuō)明:這一步的操作,這一步的操作,決定在生成的交叉表中決定在生成的交叉表中要加入的一個(gè)字段的

10、內(nèi)要加入的一個(gè)字段的內(nèi)容。容。(1)求和:求出對(duì)應(yīng)行和列的數(shù)據(jù)字段的和;(2)計(jì)數(shù):求出對(duì)應(yīng)行和列的數(shù)據(jù)字段的數(shù)目;(3)平均值:求出對(duì)應(yīng)行和列的數(shù)據(jù)字段的平均值;(4)最大值:求出對(duì)應(yīng)行和列的數(shù)據(jù)字段的最大值;(5)最小值:求出對(duì)應(yīng)行和列的數(shù)據(jù)字段的最小值。 本示例中選擇“求和”運(yùn)算。如果不想加入總結(jié)信息,可以在“分類(lèi)匯總”中選擇“無(wú)”。 單擊交叉表向?qū)Ы徊姹硐驅(qū)瓿赏瓿蓪⒔徊姹聿樵?xún)以文件的形式(.QPR)保存到一個(gè)指定的目錄中。 將交叉表查詢(xún)保存到一個(gè)指定的目錄中并運(yùn)行該文件。 將交叉表查詢(xún)保存到一個(gè)指定的目錄中并打開(kāi)“查詢(xún)?cè)O(shè)計(jì)器”修改它。 對(duì)于值為空的記錄是否以.NULL.填充 說(shuō)明:系

11、統(tǒng)默認(rèn)值是“保存交叉表查詢(xún)”和“顯示NULL值”。選擇“保存并運(yùn)行交叉表查詢(xún)”后單擊交叉表保存及運(yùn)行結(jié)果交叉表保存及運(yùn)行結(jié)果 按上一步的操作完成后,進(jìn)行到按上一步的操作完成后,進(jìn)行到“另存為另存為”對(duì)話(huà)框中,將對(duì)話(huà)框中,將該查詢(xún)?nèi)∶麨樵摬樵?xún)?nèi)∶麨镚rad_Query,然后保存在默認(rèn)的目錄中。,然后保存在默認(rèn)的目錄中。 保存后,系統(tǒng)進(jìn)入到數(shù)據(jù)查詢(xún)過(guò)程,稍候系統(tǒng)將查詢(xún)結(jié)果顯示保存后,系統(tǒng)進(jìn)入到數(shù)據(jù)查詢(xún)過(guò)程,稍候系統(tǒng)將查詢(xún)結(jié)果顯示出來(lái)。如:出來(lái)。如: 從中可以看到,凡是沒(méi)有數(shù)據(jù)的欄,就被從中可以看到,凡是沒(méi)有數(shù)據(jù)的欄,就被.NULL.NULL.值填充值填充, ,且有且有許多數(shù)據(jù)丟失許多數(shù)據(jù)丟失。 交

12、叉表可以用數(shù)據(jù)過(guò)濾處理,在下一節(jié)中介紹。交叉表可以用數(shù)據(jù)過(guò)濾處理,在下一節(jié)中介紹。返回 3.3.1 確定各表間的聯(lián)接關(guān)系確定各表間的聯(lián)接關(guān)系 退退退退退退 出出出出出出3.3.2 選定查詢(xún)字段選定查詢(xún)字段 3.3.3 篩選記錄篩選記錄 3.3.4查詢(xún)結(jié)果排序查詢(xún)結(jié)果排序 3.3.5 建立分組查詢(xún)建立分組查詢(xún) 3.3.6 雜項(xiàng)的設(shè)置雜項(xiàng)的設(shè)置 3.3.7 定向輸出查詢(xún)結(jié)果定向輸出查詢(xún)結(jié)果 3.3.8 運(yùn)行查詢(xún)運(yùn)行查詢(xún) 返返 回回 在實(shí)際應(yīng)用中,查詢(xún)向?qū)гO(shè)計(jì)的查詢(xún)往往不能滿(mǎn)足需求。在實(shí)際應(yīng)用中,查詢(xún)向?qū)гO(shè)計(jì)的查詢(xún)往往不能滿(mǎn)足需求。這時(shí)還可以采用查詢(xún)?cè)O(shè)計(jì)器方便靈活的設(shè)計(jì)各種查詢(xún),也可以這時(shí)還可以采用

13、查詢(xún)?cè)O(shè)計(jì)器方便靈活的設(shè)計(jì)各種查詢(xún),也可以先用查詢(xún)向?qū)гO(shè)計(jì)一個(gè)簡(jiǎn)單的查詢(xún),再打開(kāi)并修改它。先用查詢(xún)向?qū)гO(shè)計(jì)一個(gè)簡(jiǎn)單的查詢(xún),再打開(kāi)并修改它。 將上一節(jié)建立的將上一節(jié)建立的Grad_QueryGrad_Query交叉表查詢(xún),用交叉表查詢(xún),用“查詢(xún)?cè)O(shè)計(jì)器查詢(xún)?cè)O(shè)計(jì)器”進(jìn)行修改,使用之包含盡可能少的空欄。進(jìn)行修改,使用之包含盡可能少的空欄。 可以通過(guò)以下所提供的多種方法之一來(lái)打開(kāi)查詢(xún)?cè)O(shè)計(jì)器:可以通過(guò)以下所提供的多種方法之一來(lái)打開(kāi)查詢(xún)?cè)O(shè)計(jì)器:從從“項(xiàng)目管理器項(xiàng)目管理器”啟動(dòng)查詢(xún)?cè)O(shè)計(jì)器啟動(dòng)查詢(xún)?cè)O(shè)計(jì)器 1 1、在、在“項(xiàng)目管理器項(xiàng)目管理器”中選擇中選擇“數(shù)據(jù)數(shù)據(jù)”選項(xiàng)卡,再選取選項(xiàng)卡,再選取“查詢(xún)查詢(xún)”項(xiàng),再單

14、擊【新建】,進(jìn)入查詢(xún)?cè)O(shè)計(jì)方式選擇對(duì)話(huà)框后單擊項(xiàng),再單擊【新建】,進(jìn)入查詢(xún)?cè)O(shè)計(jì)方式選擇對(duì)話(huà)框后單擊【新建查詢(xún)】,【新建查詢(xún)】,則啟動(dòng)則啟動(dòng)“查詢(xún)?cè)O(shè)計(jì)器查詢(xún)?cè)O(shè)計(jì)器”。 2 2、在、在“項(xiàng)目管理器項(xiàng)目管理器”中選擇中選擇“數(shù)據(jù)數(shù)據(jù)”選項(xiàng)卡,從選項(xiàng)卡,從“查詢(xún)查詢(xún)”項(xiàng)項(xiàng)中選擇一個(gè)已存在的查詢(xún)文件,再單擊【修改】,也中選擇一個(gè)已存在的查詢(xún)文件,再單擊【修改】,也啟動(dòng)啟動(dòng)“查查詢(xún)?cè)O(shè)計(jì)器詢(xún)?cè)O(shè)計(jì)器”。 從【文件】菜單啟動(dòng)查詢(xún)?cè)O(shè)計(jì)器從【文件】菜單啟動(dòng)查詢(xún)?cè)O(shè)計(jì)器選擇系統(tǒng)菜單中的【文件】選擇系統(tǒng)菜單中的【文件】|【新建】命令,在【新建】命令,在“新建新建”對(duì)話(huà)框?qū)υ?huà)框中選中中選中“文件類(lèi)型文件類(lèi)型”下的下的“查詢(xún)查

15、詢(xún)”單選項(xiàng),再單擊右邊的【新建單選項(xiàng),再單擊右邊的【新建文件】按鈕,也可啟動(dòng)文件】按鈕,也可啟動(dòng)“查詢(xún)?cè)O(shè)計(jì)器查詢(xún)?cè)O(shè)計(jì)器”;使用使用CREATE QUERY命令命令也可啟動(dòng)也可啟動(dòng)“查詢(xún)?cè)O(shè)計(jì)器查詢(xún)?cè)O(shè)計(jì)器”查詢(xún)?cè)O(shè)計(jì)器下部分的窗口中有幾個(gè)選項(xiàng)卡,其含義簡(jiǎn)介如下:查詢(xún)?cè)O(shè)計(jì)器下部分的窗口中有幾個(gè)選項(xiàng)卡,其含義簡(jiǎn)介如下:(1 1)“字段字段”:用來(lái)選定包含在查詢(xún)結(jié)果中的字段;:用來(lái)選定包含在查詢(xún)結(jié)果中的字段;(2 2)“排序依據(jù)排序依據(jù)”:用來(lái)決定查詢(xún)結(jié)果輸出中記錄或行的:用來(lái)決定查詢(xún)結(jié)果輸出中記錄或行的排列順序;排列順序;(3 3)“聯(lián)接聯(lián)接”:用來(lái)確定各數(shù)據(jù)表或視圖之間的聯(lián)接關(guān)系;:用來(lái)確定各數(shù)據(jù)表或

16、視圖之間的聯(lián)接關(guān)系;(4 4)“篩選篩選”:相當(dāng)于命令:相當(dāng)于命令SET FILTER TOSET FILTER TO,利用過(guò)濾的方,利用過(guò)濾的方法查找一個(gè)特定的數(shù)據(jù)子集;法查找一個(gè)特定的數(shù)據(jù)子集;(5 5)“分組依據(jù)分組依據(jù)”:所謂分組就是將一組類(lèi)似的記錄壓縮:所謂分組就是將一組類(lèi)似的記錄壓縮成一個(gè)結(jié)果記錄,這樣就可以完成基于一組的計(jì)算。成一個(gè)結(jié)果記錄,這樣就可以完成基于一組的計(jì)算。 返回查詢(xún)?cè)O(shè)計(jì)器窗口查詢(xún)?cè)O(shè)計(jì)器窗口查詢(xún)文件設(shè)計(jì)與創(chuàng)建步驟查詢(xún)文件設(shè)計(jì)與創(chuàng)建步驟 要設(shè)計(jì)一個(gè)查詢(xún)文件,首先必須明確查詢(xún)的目的要設(shè)計(jì)一個(gè)查詢(xún)文件,首先必須明確查詢(xún)的目的是什么,即想要得到哪些數(shù)據(jù),并以什么方式存在;是

17、什么,即想要得到哪些數(shù)據(jù),并以什么方式存在;或者想要得到滿(mǎn)足某些條件的特定記錄,或者想要知或者想要得到滿(mǎn)足某些條件的特定記錄,或者想要知道某些記錄的字段值組合成的表達(dá)式按某一方式輸出。道某些記錄的字段值組合成的表達(dá)式按某一方式輸出。明確了輸出的數(shù)據(jù)后,就可以開(kāi)始設(shè)計(jì)查詢(xún)了,一般明確了輸出的數(shù)據(jù)后,就可以開(kāi)始設(shè)計(jì)查詢(xún)了,一般要通過(guò)以下幾個(gè)步驟進(jìn)行:要通過(guò)以下幾個(gè)步驟進(jìn)行:(1 1)啟動(dòng)查詢(xún)?cè)O(shè)計(jì)器;)啟動(dòng)查詢(xún)?cè)O(shè)計(jì)器;(2 2)選擇出現(xiàn)在查詢(xún)結(jié)果中的字段;)選擇出現(xiàn)在查詢(xún)結(jié)果中的字段;(3 3)設(shè)置選擇條件來(lái)查找可給出所需結(jié)果的記錄;)設(shè)置選擇條件來(lái)查找可給出所需結(jié)果的記錄;(4 4)設(shè)置排序或分組

18、選項(xiàng)來(lái)組織查詢(xún)結(jié)果;)設(shè)置排序或分組選項(xiàng)來(lái)組織查詢(xún)結(jié)果;(5 5)選擇查詢(xún)結(jié)果的輸出類(lèi)型:表、報(bào)表、瀏覽等;)選擇查詢(xún)結(jié)果的輸出類(lèi)型:表、報(bào)表、瀏覽等;(6 6)運(yùn)行查詢(xún)。)運(yùn)行查詢(xún)。 示例示例:創(chuàng)建一個(gè)含有多個(gè)表中信息的查詢(xún)。在:創(chuàng)建一個(gè)含有多個(gè)表中信息的查詢(xún)。在XGGLXGGL數(shù)據(jù)庫(kù)數(shù)據(jù)庫(kù)中有三個(gè)表:中有三個(gè)表:StudentStudent、GradeGrade、CoursesCourses,現(xiàn)在想知道學(xué)號(hào),現(xiàn)在想知道學(xué)號(hào)前四位是前四位是99049904和和98049804的所有學(xué)生考試的成績(jī)。的所有學(xué)生考試的成績(jī)。 當(dāng)在多個(gè)表或視圖間進(jìn)行查詢(xún)時(shí),需要指出這些表或視當(dāng)在多個(gè)表或視圖間進(jìn)行查

19、詢(xún)時(shí),需要指出這些表或視圖間的聯(lián)接關(guān)系。圖間的聯(lián)接關(guān)系。 操作方法如下:操作方法如下:?jiǎn)?dòng)查詢(xún)?cè)O(shè)計(jì)器,在啟動(dòng)查詢(xún)?cè)O(shè)計(jì)器,在“添加表和視圖添加表和視圖”對(duì)話(huà)框中從對(duì)話(huà)框中從“數(shù)據(jù)數(shù)據(jù)庫(kù)庫(kù)”中選擇中選擇GXGLXTGXGLXT庫(kù),在庫(kù),在“數(shù)據(jù)庫(kù)中的表數(shù)據(jù)庫(kù)中的表”中選擇中選擇StudentStudent表,單擊【添加】按鈕,再選擇表,單擊【添加】按鈕,再選擇GradeGrade表,再單擊【添加】,表,再單擊【添加】, 此時(shí)系統(tǒng)自動(dòng)彈出一個(gè)此時(shí)系統(tǒng)自動(dòng)彈出一個(gè)“聯(lián)接條件聯(lián)接條件”,詢(xún)問(wèn),詢(xún)問(wèn)是否根據(jù)兩表中都有的是否根據(jù)兩表中都有的“學(xué)號(hào)學(xué)號(hào)”字段建立內(nèi)部聯(lián)字段建立內(nèi)部聯(lián)接,單擊接,單擊“確定確定”

20、,兩表間就有了一條連線(xiàn),代,兩表間就有了一條連線(xiàn),代表它們之間的聯(lián)接。然后再添加表它們之間的聯(lián)接。然后再添加CoursesCourses表,最后表,最后關(guān)閉對(duì)話(huà)框。關(guān)閉對(duì)話(huà)框。在“查詢(xún)?cè)O(shè)計(jì)器”中選擇“聯(lián)接”選項(xiàng)卡,如圖:(1)Inner Join:內(nèi)部聯(lián)接,指定只有滿(mǎn)足聯(lián)接條件的記錄包含在結(jié)果中,此類(lèi)型是默認(rèn)的,也是最常用的;(2)Right Outer Join:右聯(lián)接,指定滿(mǎn)足聯(lián)接條件的記錄,以及滿(mǎn)足聯(lián)接條件右側(cè)的表中記錄(即使不匹配聯(lián)接條件)都包含在結(jié)果中;(3)Left Outer Join:左聯(lián)接,指定滿(mǎn)足聯(lián)接條件的記錄,以及滿(mǎn)足聯(lián)接條件左側(cè)的表中記錄(即使不匹配聯(lián)接條件)都包含在結(jié)

21、果中;(4)Full Join:完全聯(lián)接,指定所有滿(mǎn)足和不滿(mǎn)足聯(lián)接條件的記錄都包含在結(jié)果中。 如果想修改各表間的聯(lián)接,雙擊查詢(xún)?cè)O(shè)計(jì)器上部窗口表之間的連線(xiàn),系統(tǒng)將彈出“連接條件”對(duì)話(huà)框;或者通過(guò)打開(kāi)查詢(xún)?cè)O(shè)計(jì)器下部的“聯(lián)接”選項(xiàng)卡進(jìn)行。一般不應(yīng)隨便更改連接條件,不然會(huì)與實(shí)際數(shù)據(jù)間的關(guān)系不符。在VFP6中表間的聯(lián)接有四種類(lèi)型,分別是: “條件”列表中包含如下幾項(xiàng):(1)=:指字段值與實(shí)例相等;(2)LIKE:表示“字段名”欄中給出的字段值與“實(shí)例”欄中給出的文本值之間執(zhí)行不完全匹配,它主要針對(duì)字符類(lèi)型。例如,如設(shè)置查詢(xún)條件為“Student.學(xué)號(hào) LIKE 9904”,那么諸如“學(xué)號(hào)”字段前四位為9

22、904的記錄都滿(mǎn)足該條件;(3)=:表示在“字段名”欄中給出的字段值與“實(shí)例”欄中給出的文本值之間執(zhí)行完全匹配檢查,它主要是針對(duì)字符型。(4):即為“字段名”欄中給出的字段的值應(yīng)大于“實(shí)例”欄中給出的值;(5)=:即為“字段名”欄中給出的字段的值應(yīng)大于或等于“實(shí)例”欄中給出的值;(6):即為“字段名”欄中給出的字段的值應(yīng)小于“實(shí)例”欄中給出的值;(7)=:即為“字段名”欄中給出的字段的值應(yīng)小于或等于“實(shí)例”欄中給出的值;(8)Is Null:指定字段必須包含Null值;(9)Between:即為輸出字段的值應(yīng)大于或等于“實(shí)例”欄中的最小值,而小于或等于“實(shí)例”欄中的最大值;(10)IN(在之中

23、):即為輸出字段的值必須是“實(shí)例”欄中所給出值中的一個(gè),在“實(shí)例”欄中給出的各值之間以逗號(hào)分隔。 此外,“聯(lián)接”選項(xiàng)卡中的“否”列用于指定.NOT.條件,“邏輯”列用于設(shè)置各聯(lián)接條件和篩選條件之間的邏輯關(guān)系(無(wú)、.AND.和.OR.),“大小寫(xiě)”列用于指定是否區(qū)分大小寫(xiě)。下方的“插入”和“移去”按鈕分別用于增加或移去查詢(xún)條件。 返回 在設(shè)置篩選條件時(shí),我們應(yīng)注意如下幾點(diǎn):(1)備注字段和通用字段不能用于設(shè)置查詢(xún)條件;(2)邏輯值的前后必須使用句點(diǎn)號(hào),如.T.;(3)只有當(dāng)字符串與查詢(xún)的表中字段名相同時(shí),要用引號(hào)將字符串括起來(lái),否則不需要用引號(hào)將字符串括起來(lái);(4)日期不必用花括號(hào)括起來(lái)。 根據(jù)

24、建立查詢(xún)的目的,選擇查詢(xún)結(jié)果中應(yīng)包含的字段。操作方法與用向?qū)гO(shè)計(jì)查詢(xún)的方法相同。在本示例中先在“查詢(xún)?cè)O(shè)計(jì)器”中選擇“字段”選項(xiàng)卡,然后從可用字段列表框中選擇:Student.學(xué)號(hào)、Student.姓名、Courses.課程名稱(chēng)、Grade.課程成績(jī),如圖。 選擇一個(gè)字段單擊【添加】選定的字段列表重復(fù)操作添加Student.姓名、Courses.課程名稱(chēng)、Grade.課程成績(jī)返回 選擇表中符合條件的一部分記錄而不是全部記錄是查詢(xún)的重要任務(wù)。此例要求從所有學(xué)生的成績(jī)信息中選出“學(xué)號(hào)”前四位為“9904”和“9804”的所有學(xué)生的成績(jī),可以利用查詢(xún)?cè)O(shè)計(jì)器中的“篩選”選項(xiàng)卡?!昂Y選”選項(xiàng)卡可確定用于選

25、擇記錄的字段和比較準(zhǔn)則,以及輸入與該字段進(jìn)行比較的示例值。 選擇篩選字段 設(shè)置篩選條件 輸入篩選實(shí)例設(shè)置條件邏輯是否區(qū)分大小寫(xiě) 返回在字段名下的下拉選擇框中選擇“Grade.開(kāi)課學(xué)期”,在“條件”下的下拉選擇框中選擇“=”,在“實(shí)例”下的文本框中輸入“第1學(xué)期”,在“邏輯”下的下拉選擇框中選擇“AND”,然后再在字段名下的下拉選擇框中選擇“Student.學(xué)號(hào)”,在“條件”下的下拉選擇框中選擇“In”,在“實(shí)例”下的文本框中輸入“9904,9804”(請(qǐng)注意中間的“,”是En狀態(tài)下輸入的)。返回我們可以通過(guò)“排序依據(jù)”選項(xiàng)卡設(shè)置查詢(xún)的排序次序,方法同在用查詢(xún)向?qū)гO(shè)計(jì)查詢(xún)介紹的一樣,首先從“選定

26、字段”框中選定要使用的字段,并把它們移到“排序條件”框中,然后利用“排序選項(xiàng)”(從中選擇升序或降序)來(lái)設(shè)置排序條件。本例中設(shè)置Student.學(xué)號(hào),升序?yàn)榕判蛞罁?jù)。選擇一個(gè)字段單擊【添加】選定的字段列表 如果還需要添加用于排序的字段,可以重復(fù)以上的操作步驟。返回 所謂分組就是將一組類(lèi)似的記錄壓縮成一個(gè)結(jié)果記錄,這樣就可完成基于一組記錄的計(jì)算。分組在與某些累計(jì)功能聯(lián)合使用時(shí)效果最好,例如SUM(),COUNT(),AVG()等。如果不想壓縮結(jié)果記錄,則不必設(shè)置它。在此例中不設(shè)分組查詢(xún)。如果想求各門(mén)課程的平均成績(jī),可以用“課程名稱(chēng)”進(jìn)行分類(lèi)查詢(xún)。選擇一個(gè)字段單擊【添加】選定的字段列表操作步驟如下:

27、(1)在查詢(xún)?cè)O(shè)計(jì)器的“字段”選項(xiàng)卡中,單擊“函數(shù)和表達(dá)式”右邊的按鈕,出現(xiàn)“表達(dá)式”生成器;(2)在“數(shù)學(xué)”下拉式列表框中雙擊AVG(expN),在“來(lái)源于表”下拉框中選擇Grade表,在“字段”列表框中雙擊“課程成績(jī)”,單擊【確定】。即在“函數(shù)和表達(dá)式”框中自動(dòng)生成了“AVG(Grade.課程成績(jī))”這個(gè)表達(dá)式,用以計(jì)算Grade表中課程成績(jī)的平均值。(3)單擊“添加”按鈕,該表達(dá)式被添加到“選定字段”列表框中。將來(lái)查詢(xún)結(jié)果中就會(huì)有一列數(shù)據(jù)求平均值;(4)單擊“分組依據(jù)”選項(xiàng)卡,進(jìn)入“分組依據(jù)”窗口,在“可用字段”中選擇Grade.課程名稱(chēng),再單擊【添加】按鈕,該字段即成為分組字段。 運(yùn)行查

28、詢(xún)后的結(jié)果返回 經(jīng)過(guò)以上五個(gè)步驟,基本上已生成了一個(gè)比較全面的查詢(xún)。接下來(lái)還可以通過(guò)查詢(xún)?cè)O(shè)計(jì)器中的“雜項(xiàng)”選項(xiàng)卡做最后處理。單擊“雜項(xiàng)”選項(xiàng)卡,可以看到其間包括“無(wú)重復(fù)記錄”、“交叉數(shù)據(jù)表”、“全部”、“百分比”這四個(gè)復(fù)選框和一個(gè)微調(diào)按鈕。選中“無(wú)重復(fù)記錄”復(fù)選框表示對(duì)于查詢(xún)結(jié)果如果存在重復(fù)記錄,則只取相同記錄中的一個(gè)。選中此項(xiàng),在查詢(xún)生成器的SQL語(yǔ)句中會(huì)自動(dòng)加上限定詞Distinct,表示去掉重復(fù)記錄。當(dāng)輸出的字段只有三項(xiàng)時(shí),“交叉數(shù)據(jù)表”復(fù)選框?yàn)榭蛇x狀態(tài),否則為不可選狀態(tài)。選中“交叉數(shù)據(jù)表”復(fù)選框表示將查詢(xún)的結(jié)果以交叉表的形式傳遞給其它報(bào)表或表。三項(xiàng)查詢(xún)字段分別表示X軸、Y軸和圖形的單元

29、值。 如,在本示例中,將前面已加入到“選定字段”中的Student.學(xué)號(hào)字段移去,并按Student.姓名、Courses.課程名稱(chēng)和Grade.課程成績(jī)的順序調(diào)整字段在“選定字段”列表框中的順序,然后在“雜項(xiàng)”選項(xiàng)卡中選中“交叉數(shù)據(jù)表”,同時(shí)將“分組依據(jù)”中的“Grade.課程代號(hào)”取消,其它設(shè)置不變。 從圖中可以看到“交叉數(shù)據(jù)表”成為了可選?,F(xiàn)選中“交叉數(shù)據(jù)表”項(xiàng),如圖:設(shè)置返回 查詢(xún)檢索的信息,可以輸出到不同的目的地,以用作不同的用途。如果沒(méi)有選定輸出的目的地,查詢(xún)結(jié)果將顯示在瀏覽窗口中。查詢(xún)輸出目的可以是瀏覽窗口、臨時(shí)表、表、圖形、屏幕、報(bào)表、標(biāo)簽等。選擇結(jié)果的去向方法如下: 單擊“查

30、詢(xún)?cè)O(shè)計(jì)器工具”中的【查詢(xún)?nèi)ハ颉堪粹o,或者從【查詢(xún)】菜單中選擇【查詢(xún)?nèi)ハ颉?,可看到如圖所示的“查詢(xún)?nèi)ハ颉睂?duì)話(huà)框。 對(duì)話(huà)框中的按鈕含義如下: 【瀏覽】:在瀏覽窗口中顯示查詢(xún)結(jié)果,這是查詢(xún)?nèi)笔≡O(shè)置; 【臨時(shí)表】:將查詢(xún)結(jié)果存儲(chǔ)在一個(gè)臨時(shí)只讀表中。多次查詢(xún)的結(jié)果可放在不同的表內(nèi)。該表可用于瀏覽數(shù)據(jù),制作報(bào)表等,直到用戶(hù)關(guān)閉它們;【表】:將查詢(xún)的結(jié)果保存在一個(gè)命名的表(.DBF )中,此時(shí)查詢(xún)的結(jié)果是真正的存放到磁盤(pán)上的,多次查詢(xún)的結(jié)果可放在不同的表內(nèi);【圖形】:使查詢(xún)結(jié)果可用于Microsoft Graph(包含在VFP6中的一個(gè)獨(dú)立的應(yīng)用程序)中制作圖表;【屏幕】:在VFP6主窗口或當(dāng)前活動(dòng)輸出窗口

31、中顯示查詢(xún)結(jié)果;【報(bào)表】:將輸出送到一個(gè)報(bào)表文件(.FRX)中;【標(biāo)簽】:將輸出送到一個(gè)標(biāo)簽文件(.LBX)中。 選定一個(gè)去向,按一定的步驟設(shè)置一些屬性,然后單擊【確定】按鈕,系統(tǒng)就將按意圖放置查詢(xún)結(jié)果。 假設(shè)本例將查詢(xún)結(jié)果保存到臨時(shí)表中,取臨時(shí)表名為“查詢(xún)1”。 返回 在完成了查詢(xún)的設(shè)計(jì)工作并指定了結(jié)果輸出去向后,可通過(guò)以下五種方式之一運(yùn)行查詢(xún):在查詢(xún)?cè)O(shè)計(jì)器區(qū)域內(nèi)單擊右鍵,在彈出菜單中選擇“運(yùn)行查詢(xún)”;在“項(xiàng)目管理器”中選定查詢(xún)的名稱(chēng),然后選定“運(yùn)行”按鈕;在“查詢(xún)”菜單中選擇“運(yùn)行查詢(xún)”:在命令窗口中鍵入DO 查詢(xún)名.qpr。單擊系統(tǒng)常用菜單上的“運(yùn)行”按鈕。 本例中按前述步驟設(shè)置后,單擊

32、系統(tǒng)菜單上的“運(yùn)行”按鈕運(yùn)行交叉表查詢(xún),并將查詢(xún)結(jié)果保存到臨時(shí)表“查詢(xún)1”中,然后再在瀏覽窗口中單擊【顯示】|【瀏覽“查詢(xún)1”】,結(jié)果如右表。返回 3.4.1 創(chuàng)建本地視圖創(chuàng)建本地視圖 3.4.2 用已有的用已有的SQL SELECT語(yǔ)句創(chuàng)建視圖語(yǔ)句創(chuàng)建視圖 3.4.3 創(chuàng)建遠(yuǎn)程視圖創(chuàng)建遠(yuǎn)程視圖 返回返回退出退出 視圖可以通過(guò)向?qū)Ш驮O(shè)計(jì)器兩種方法來(lái)創(chuàng)建。1 1、 利用向?qū)?chuàng)建本地視圖利用向?qū)?chuàng)建本地視圖用本地視圖向?qū)?chuàng)建本地視圖,可采取以下方式:方式一:(1)在主窗口下打開(kāi)【工具】菜單,選擇【向?qū)А坎藛蚊?。?)再選擇【全部】菜單,出現(xiàn)【向?qū)нx取】對(duì)話(huà)框,如圖 單擊滑動(dòng)按鈕選擇“本地視圖向?qū)?/p>

33、”單擊【確定】進(jìn)入到“本地視圖向?qū)Р襟E1字段選取”方式二:(1)在主窗口下打開(kāi)【文件】菜單,選擇【新建】菜單命令。(2)選擇“視圖”,再單擊【向?qū)А?,將彈出【本地視圖向?qū)А繉?duì)話(huà)框。(3)然后按照向?qū)聊簧系闹甘静僮?。方式三:?)在項(xiàng)目管理器中選定數(shù)據(jù)庫(kù)。(2)選定本地視圖,單擊【新建】按鈕。(3)單擊【視圖向?qū)А堪粹o (4)然后按照向?qū)聊簧系闹甘静僮鳌7绞剿模海?)打開(kāi)數(shù)據(jù)庫(kù)設(shè)計(jì)器,打開(kāi)【數(shù)據(jù)庫(kù)】菜單。(2)選擇【新建本地視圖】,再單擊【視圖向?qū)А堪粹o。(3)然后按照向?qū)聊簧系闹甘静僮鳌?說(shuō)明:按照上述幾種方式,可以快速建立本地視圖,但要強(qiáng)調(diào)的是,在項(xiàng)目管理器中創(chuàng)建或使用視圖時(shí),項(xiàng)目管理

34、器會(huì)自動(dòng)打開(kāi)數(shù)據(jù)庫(kù)。如果要使用項(xiàng)目以外的表或視圖,則必須先打開(kāi)數(shù)據(jù)庫(kù)或事先確認(rèn)數(shù)據(jù)庫(kù)在作用范圍內(nèi)。 本地視圖向?qū)В翰襟E本地視圖向?qū)В翰襟E1字段選取字段選取 本地視圖向?qū)?duì)話(huà)框如圖,創(chuàng)建視圖大體要經(jīng)過(guò)以下步驟:(1)字段選取。)字段選取。選擇數(shù)據(jù)庫(kù),數(shù)據(jù)庫(kù)中的表和表中的字段。如果當(dāng)前已經(jīng)打開(kāi)了一個(gè)數(shù)據(jù)庫(kù),則第一步的對(duì)話(huà)框中顯示的是創(chuàng)建當(dāng)前數(shù)據(jù)庫(kù)的視圖,也可以選擇其它的數(shù)據(jù)庫(kù)。(2)關(guān)聯(lián)表。)關(guān)聯(lián)表。建立數(shù)據(jù)庫(kù)中表與表之間的關(guān)系。(3)包含記錄。)包含記錄。指定包含表中的全部記錄還是僅匹配的記錄。(4)篩選記錄。)篩選記錄。選定符合條件的記錄。(5)排序記錄。)排序記錄。為選定的記錄按照某一字段進(jìn)

35、行排序。 (6)限定記錄。)限定記錄。定制顯示一定數(shù)量的記錄。(7)完成視圖。)完成視圖。選擇保存視圖后瀏覽還是修改。 例:創(chuàng)建包含Grade表和Courses表的本地視圖“視圖1”。選擇表Grade單擊全部添加按鈕選擇Courses表單擊單個(gè)添加按鈕,添加課程名、學(xué)時(shí)數(shù)、學(xué)分?jǐn)?shù)選擇字段完成后,單擊【下一步】,步驟2為表建立關(guān)系。本地視圖向?qū)В翰襟E本地視圖向?qū)В翰襟E2為表建立關(guān)系為表建立關(guān)系父表字段選擇下拉選擇框子表字段選擇下拉選擇框說(shuō)明:在這一步要建立用來(lái)建立本地視圖的表間的關(guān)系。1、先在父表字段選擇下拉選擇框中選擇要用來(lái)建立關(guān)系的主關(guān)鍵字;2、再在子表字段選擇下拉選擇框中選擇用來(lái)建立關(guān)系的

36、子表關(guān)鍵字;3、單擊【添加】,將設(shè)定關(guān)系添加到關(guān)系列表框中。上面的字段符合要求,單擊【添加】關(guān)系設(shè)置完成后單擊【下一步】進(jìn)入到步驟2a字段選取對(duì)話(huà)框。本地視圖向?qū)В翰襟E2a字段選取生成的本地視圖中只包含表中關(guān)系相匹配的記錄,對(duì)應(yīng)于關(guān)系中的內(nèi)聯(lián)接的設(shè)置結(jié)果。生成的本地視圖中包含Grade表中的全部記錄和子表中關(guān)鍵字段相匹配的記錄,對(duì)應(yīng)于關(guān)系中的左聯(lián)接的設(shè)置結(jié)果。生成的本地視圖中包含Courses表中全部記錄和父表中關(guān)鍵字段相匹配的記錄,對(duì)應(yīng)于關(guān)系中的右聯(lián)接的設(shè)置結(jié)果。生成的本地視圖中包含表中所有的記錄,對(duì)應(yīng)于關(guān)系中的完全聯(lián)接的設(shè)置結(jié)果。 本例中選用默認(rèn)值:僅包含匹配的行。然后單擊【下一步】,進(jìn)入

37、步驟3篩選記錄。本地視圖向?qū)В翰襟E3篩選記錄 說(shuō)明:本地視圖向?qū)У暮Y選記錄與查詢(xún)向?qū)У暮Y選記錄的方式類(lèi)似。 在本例中不篩選記錄。單擊【下一步】,進(jìn)入到本地視圖向?qū)У牟襟E4排序記錄。本地視圖向?qū)В翰襟E4排序記錄 說(shuō)明:在這一步中設(shè)置在本地視圖的記錄順序。 本例中可先按“學(xué)號(hào)”排序,學(xué)號(hào)相同的再按“課程代號(hào)”排序。 操作方法與建立查詢(xún)的記錄排序方法相同。先在“可用字段”列表框中選擇“學(xué)號(hào)”,然后單擊【添加】,再選擇“課程代號(hào)”,再單擊【添加】如上圖。 排序字段及順序設(shè)置后單擊【下一步】,進(jìn)入本地視圖向?qū)В翰襟E4a限制記錄。本地視圖向?qū)В翰襟E4a限制記錄 限制記錄的方法與建立查詢(xún)的限制記錄的方法完全

38、相同。在本例中仍保持在本地視圖中包含所有的記錄,因而取默認(rèn)值,直接單擊【下一步】,進(jìn)入本地視圖向?qū)В翰襟E5完成。 在第5步中的操作方法也與建立查詢(xún)的方法相同,現(xiàn)選擇“保存本地視圖并瀏覽”,然后單擊【完成】。彈出“視圖名”對(duì)話(huà)框。在“視圖名”文本框中輸入“視圖1”。 輸入視圖名后單擊【確認(rèn)】按鈕,系統(tǒng)顯示所建立的本地視圖的結(jié)果。本地視圖向?qū)ЫY(jié)束。2 2、利用視圖設(shè)計(jì)器創(chuàng)建本地視圖、利用視圖設(shè)計(jì)器創(chuàng)建本地視圖(1 1) 進(jìn)入視圖設(shè)計(jì)器進(jìn)入視圖設(shè)計(jì)器進(jìn)入視圖設(shè)計(jì)器的方法與進(jìn)入查詢(xún)?cè)O(shè)計(jì)器的方法基本相同,下面以新建視圖的方式進(jìn)入視圖設(shè)計(jì)器。啟動(dòng)視圖設(shè)計(jì)器方法啟動(dòng)視圖設(shè)計(jì)器方法 新建一個(gè)視圖可按以下步驟進(jìn)

39、入視圖設(shè)計(jì)器:選擇【文件】|【新建】命令,單擊“視圖”單選框,再單擊【新建文件】按鈕。在數(shù)據(jù)庫(kù)設(shè)計(jì)器中,選擇【數(shù)據(jù)庫(kù)】|【新建本地視圖】或單擊數(shù)據(jù)庫(kù)設(shè)計(jì)器的快捷菜單中的【新建本地視圖】|【新視圖】按鈕。在項(xiàng)目管理器中,單擊“數(shù)據(jù)”選項(xiàng)卡,在列表框中選定“本地視圖”,再單擊【新建】按鈕,單擊【新建視圖】按鈕。 修改一個(gè)視圖可按以下步驟進(jìn)入視圖設(shè)計(jì)器:在數(shù)據(jù)庫(kù)設(shè)計(jì)器窗口中,單擊選定需要修改的視圖,選擇【數(shù)據(jù)庫(kù)】|【修改】命令。在數(shù)據(jù)庫(kù)設(shè)計(jì)器窗口中,右擊需要修改的視圖,在出現(xiàn)的快捷菜單中選擇【修改】命令。在項(xiàng)目管理器中,單擊【數(shù)據(jù)】選項(xiàng)卡,在列表框中選定需要修改的視圖,單擊【修改】按鈕。 “視圖設(shè)計(jì)

40、器視圖設(shè)計(jì)器”工具欄說(shuō)明工具欄說(shuō)明添加表 移去表添加聯(lián)接 顯示SQL窗口最大化上部窗格添加表:顯示“添加表或視圖”對(duì)話(huà)框,從而可以向設(shè)計(jì)器窗口添加一個(gè)表或視圖移去表:從設(shè)計(jì)器窗口的上窗格中移去選定的表。添加聯(lián)接:在視圖中的兩個(gè)表之間創(chuàng)建聯(lián)接條件顯示/隱藏SQL窗口:顯示或隱藏建立當(dāng)前視圖的SQL語(yǔ)句最大化/最小化上部窗口:放大或縮小視圖設(shè)計(jì)器的上窗格(2)從表中選擇所需字段在進(jìn)行本地視圖設(shè)計(jì)器之前,先建立Classzc表和Department表,表結(jié)構(gòu)和數(shù)據(jù)如下: 通過(guò)上述方式之一打開(kāi)視圖設(shè)計(jì)器,在進(jìn)入設(shè)計(jì)器之前,需要選定數(shù)據(jù)庫(kù)和表,現(xiàn)選定XGGL數(shù)據(jù)庫(kù) ,如右圖: 從中選定表Classzc并

41、單擊【添加】按鈕,然后單擊【關(guān)閉】按鈕,啟動(dòng)視圖設(shè)計(jì)器。視圖設(shè)計(jì)器 進(jìn)入視圖設(shè)計(jì)器后,第一步先需要選定字段,選定字段可直接通過(guò)字段選項(xiàng)卡進(jìn)行。其操作方法與查詢(xún)?cè)O(shè)計(jì)器中選擇字段的方法相同。從“可用字段”列表框里選定Classzc.班級(jí)簡(jiǎn)稱(chēng)字段,單擊【添加】按鈕或雙擊該字段,則Classzc. 班級(jí)簡(jiǎn)稱(chēng)字段將會(huì)出現(xiàn)在右邊的“選定字段”列表框中。本次建立的視圖里,還需要選定Classzc.學(xué)習(xí)性質(zhì)、Classzc.學(xué)制二個(gè)字段。它們選定的方法與選定Classzc. 班級(jí)簡(jiǎn)稱(chēng)字段一樣。如果需選定字段是“可用字段”列表框中的所有字段,可以單擊【全部添加】按鈕,這樣就把所有字段添加到了“選定字段”列表框中

42、去了,可以通過(guò)【移去】按鈕將其移出來(lái)。如果需要全部移出,可以利用【全部移去】按鈕快速移出。 要將表中的字段添加到“選定字段”列表框中,除了上述方法外,還可以將鼠標(biāo)指向視圖設(shè)計(jì)器上部窗口中的表窗口中的字段上,按住鼠標(biāo)左鍵或右鍵拖動(dòng)一個(gè)字段到“選定字段”列表框,該字段就被加入到了“選定字段”列表框中。還可以通過(guò)雙擊字段名將其加入到“選定字段”列表框。表窗口中的代表表中的全部字段,它也是可以拖動(dòng)或雙擊的。若要從“選定字段”列表框中移去字段,也可以使用鼠標(biāo)拖動(dòng)或雙擊。 “字段”選項(xiàng)卡還有一個(gè)【屬性】按鈕和一個(gè)“函數(shù)和表達(dá)式”文本框。只要“選定字段”列表框中有一個(gè)值,【屬性】命令按鈕就成為可選的了。選擇

43、【屬性】后,出現(xiàn)圖: 屬性設(shè)置可分為五種類(lèi)型:字段有效性、顯示、匹配字段到類(lèi)、數(shù)據(jù)匹配和注釋。其中字段有效性、顯示、匹配字段到類(lèi)和注釋在第3章中介紹數(shù)據(jù)表設(shè)計(jì)時(shí)已經(jīng)作過(guò)說(shuō)明,視圖設(shè)計(jì)和數(shù)據(jù)表設(shè)計(jì)在字段屬性上基本類(lèi)似?!昂瘮?shù)和表達(dá)式”文本框及其按鈕:“函數(shù)和表達(dá)式” 文本框用于輸入一個(gè)函數(shù)和表達(dá)式,具體操作只需單擊“函數(shù)和表達(dá)式”文本框后的對(duì)話(huà)按鈕,在隨后出現(xiàn)的表達(dá)式生成器中書(shū)寫(xiě)函數(shù)或表達(dá)式。此選項(xiàng)的功能是為了生成一個(gè)虛擬的字段。 后面的創(chuàng)建步驟與本章前述的用查詢(xún)?cè)O(shè)計(jì)器設(shè)計(jì)查詢(xún)相似,在此不一一闡述。 (3)建立多表關(guān)聯(lián) 前面主要是針對(duì)單一的本地表建立視圖,雖然很容易,但它的實(shí)際功能不大。因?yàn)樵趯?shí)

44、際開(kāi)發(fā)中,系統(tǒng)的數(shù)據(jù)庫(kù)很復(fù)雜,表的關(guān)聯(lián)性很強(qiáng),用戶(hù)關(guān)心的往往是一些復(fù)雜的數(shù)據(jù),因此需要建立多表視圖。 從定義上講,多表視圖指的是:視圖中的字段來(lái)源于兩個(gè)或兩個(gè)以上的表。但是,在視圖中表間的關(guān)系既不像數(shù)據(jù)庫(kù)中的關(guān)系是永久的,也不像表中的關(guān)系是暫時(shí)的,它不靠索引字段進(jìn)行聯(lián)接,而是通過(guò)定義一個(gè)聯(lián)接表達(dá)式來(lái)進(jìn)行聯(lián)接,表間的關(guān)系是松散的??梢园慈缦罗k法建立表間的聯(lián)接:在視圖設(shè)計(jì)器中單擊“聯(lián)接”選項(xiàng)卡即可設(shè)置多表間的關(guān)聯(lián)。在“添加表或視圖”對(duì)話(huà)框中,選定表后,單擊【添加】按鈕,當(dāng)視圖設(shè)計(jì)器中的表在兩個(gè)及以上時(shí),視圖設(shè)計(jì)器就會(huì)為選定的表建立關(guān)聯(lián)。說(shuō)明:用以上的方法建立多表關(guān)聯(lián),必須有多個(gè)表添加到了視圖設(shè)計(jì)器

45、中。后續(xù)的操作方法與設(shè)計(jì)多表查詢(xún)相似,除不同點(diǎn)外,相同的部分這里不再講述。例:建立表Department、Classzc、Student、Courses和Grade五表之間的關(guān)聯(lián)的視圖,名稱(chēng)為:視圖3。(4)與設(shè)計(jì)多表查詢(xún)不相同的部分更新條件視圖的最大特點(diǎn)在于能用視圖更新數(shù)據(jù),這也是建立視圖與建立查詢(xún)的主要區(qū)別,也是視圖的重點(diǎn)所在。視圖設(shè)計(jì)器中的“更新條件”選項(xiàng)卡可以用來(lái)設(shè)置允許視圖更新表字段的條件。 “更新條件”選項(xiàng)卡選項(xiàng)包括如下內(nèi)容:“表”:指定視圖所使用的哪些表可以修改。選擇這個(gè)下拉列表框中的選項(xiàng),可以確定哪些表中的字段可以在“字段名”列表框中,以便設(shè)置更新條件。此列表中所顯示的表都包含

46、了“字段”選項(xiàng)卡“選定字段”列表中的字段。【重置關(guān)鍵字】:這個(gè)按鈕作用是從每個(gè)表中選擇主關(guān)鍵字字段作為視圖的關(guān)鍵字字段。每個(gè)主關(guān)鍵字字段是在“字段名”列表中的、在鑰匙符號(hào)下面打一個(gè)對(duì)鉤的字段,關(guān)鍵字字段可可用來(lái)使視圖中的修改與表中的原始記錄相匹配。【全部更新】:可以從字段名文本框中看到一些字段前的鉛筆符號(hào)下打了一個(gè)對(duì)鉤,這表明這些字段可以更新。在這個(gè)按鈕中可以選擇除了關(guān)鍵字字段以外的所有字段來(lái)進(jìn)行更新,并在“字段名”列表的鉛筆符號(hào)下打一個(gè)對(duì)鉤。“發(fā)送SQL更新”:指定是否將視圖記錄中的修改傳送給原始表。如果選擇了這個(gè)復(fù)選框,將把在視圖中對(duì)記錄字段的修改返回到源表中?!白侄蚊绷斜砜颍猴@示了從“

47、表”列表框中所選的表中的字段、并用來(lái)輸出這些字段,不過(guò)這些字段都是可以更新的。在字段文本框中共有下列3種方式字段:關(guān)鍵字段(使用鑰匙符號(hào)作標(biāo)記),指定該字段是否為關(guān)鍵字段??筛伦侄危ㄊ褂勉U筆符號(hào)作標(biāo)記),指定該字段是否為可更新字段。字段名,顯示可標(biāo)志為關(guān)鍵字字段或可更新字段的輸出字段名。 “SQL WHERE 子句包括”:“關(guān)鍵字段”:如果在原始表中有一個(gè)關(guān)鍵字字段被改變,設(shè)置WHERE子句來(lái)檢測(cè)沖突,對(duì)于由另一用戶(hù)對(duì)表中原始記錄的其他字段所做修改不進(jìn)行比較?!瓣P(guān)鍵字和可更新字段”:設(shè)置WHERE子句來(lái)檢測(cè)由某一用戶(hù)修改了任何可更新的字段的沖突?!瓣P(guān)鍵字和已修改字段”:如果從視圖首次檢索(默

48、認(rèn))以后,關(guān)鍵字字段或原始表記錄的已修改字段中,某個(gè)字段做過(guò)修改,設(shè)置WHERE子句來(lái)檢測(cè)沖突?!瓣P(guān)鍵字段和時(shí)間戳”:如果自原始表記錄的時(shí)間戳首次檢索以后,它被修改過(guò),設(shè)置WHERE子句來(lái)檢測(cè)沖突。只有當(dāng)遠(yuǎn)程表有時(shí)間戳列時(shí),此選項(xiàng)才有效?!笆褂酶隆保捍藛芜x按鈕組用于指定字段如何在后端服務(wù)器上進(jìn)行更新。“SQL DELETE然后INSERT”:指定先刪除原始表記錄后,再創(chuàng)建一個(gè)新的在視圖中被修改的記錄?!癝QL UPDATE”:指定用視圖字段中的內(nèi)容來(lái)修改原始表中的字段。具體說(shuō)明如何設(shè)置更新條件詳見(jiàn)6.5在視圖中更新數(shù)據(jù)。 返回 同查詢(xún)一樣,可用SELECTSQL語(yǔ)言創(chuàng)建視圖。SELECTSQ

49、L語(yǔ)句: 格式: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 OUTER| RIGHT OUTER |FULL OUTER JOINDatabaseName! Table AS Local_Alias ON JoinCondition INTO Destination|TO FILE FileName A

50、DDITIVE|TO PRINTER PROMPT|TO SCREEN PREFERENCE PreferenceName NOCONSOLE PLAIN NOWAIT WHERE JoinCondition .AND. JoinCondition . .AND.|.OR. FilterCondition .AND.|.OR. FilterCondition . GROUP BY GroupColumn , GroupColumn . HAVING FilterCondition UNION ALL SELECTCommand ORDER BY Order_Item ASC|DESC , Or

51、der_Item ASC|DESC .功能:功能:從一個(gè)或多個(gè)表中檢索數(shù)據(jù)。參數(shù)描述:參數(shù)描述:SELECT:用SELECT子句指定在查詢(xún)結(jié)果中包含的字段、常量和表達(dá)式。ALL:在查詢(xún)結(jié)果中包含所有的行(包括重復(fù)值)。它是系統(tǒng)的默認(rèn)設(shè)置。DISTINCT:在查詢(xún)結(jié)果中刪除重復(fù)行。TOP nExpr PERCENT:在符合查詢(xún)條件的所有記錄中,選取指定數(shù)量或百分比的記錄。TOP子句必須與ORDER BY子句同時(shí)使用。ORDER BY子句指定按哪個(gè)字段排序,TOP子句根據(jù)此排序選定開(kāi)始的nExp個(gè) 或nExp %的記錄??梢灾付ㄟx取132767條記錄。Alias.:限定匹配項(xiàng)的名稱(chēng)。Select-

52、Item指定的每一項(xiàng)在查詢(xún)結(jié)果中都生成一列,如果多個(gè)項(xiàng)具有相同的名稱(chēng),則應(yīng)在這些項(xiàng)前加上表的別名和一個(gè)句點(diǎn)號(hào),以防止出現(xiàn)重復(fù)的列。Select_Item :指定包含在查詢(xún)中的一個(gè)項(xiàng)。一個(gè)項(xiàng)可以是:FROM子句中所包含的表中的字段名稱(chēng)。一個(gè)常量,查詢(xún)結(jié)果中的每一行都出現(xiàn)這個(gè)常量值。一個(gè)表達(dá)式,可以是用戶(hù)自定義函數(shù)名。AS Column_Name:指定查詢(xún)結(jié)果中的列標(biāo)題。當(dāng)Select-Item是一個(gè)表達(dá)式或一個(gè)字段函數(shù)時(shí),如果要給此列取一個(gè)有意義的名稱(chēng)可用這個(gè)子句。它可以是一個(gè)表達(dá)式。FROM:列出所有從中檢索數(shù)據(jù)的表。如果沒(méi)有打開(kāi)表,VFP會(huì)顯示“打開(kāi)”對(duì)話(huà)框以便指定文件位置,表打開(kāi)以后直到查

53、詢(xún)結(jié)束才關(guān)閉。FORCE:如果包含了此子句,VFP在建立查詢(xún)時(shí)會(huì)嚴(yán)格按照在FROM子句中申明的順序建立聯(lián)接,否則會(huì)試圖對(duì)查詢(xún)進(jìn)行優(yōu)化。避免優(yōu)化過(guò)程,可能會(huì)加快查詢(xún)執(zhí)行的速度。DatabaseName!:當(dāng)包含表的數(shù)據(jù)庫(kù)不是當(dāng)前的數(shù)據(jù)庫(kù)時(shí),此子句指定數(shù)據(jù)庫(kù)的名稱(chēng)。如果數(shù)據(jù)庫(kù)不是當(dāng)前數(shù)據(jù)庫(kù),就必須指定包含表的數(shù)據(jù)庫(kù)名稱(chēng),注意其后應(yīng)加上“!”號(hào)。Table AS Local_Alias:為T(mén)able中的表指定一個(gè)臨時(shí)名稱(chēng)。如果指定了本地別名,那么在整個(gè)Select語(yǔ)句中都必須用這個(gè)別名代替表名。INNER JOIN:只有在其它表中包含對(duì)應(yīng)記錄(一個(gè)或多個(gè))的記錄才出現(xiàn)在查詢(xún)結(jié)果中。LEFT OUTE

54、R JOIN:在查詢(xún)結(jié)果中包含JOIN左側(cè)表中的所有記錄,以及右側(cè)表中匹配的記錄。這是左聯(lián)接。RIGHT OUTER JOIN:在查詢(xún)結(jié)果中包含JOIN右側(cè)表中的所有記錄,以及左側(cè)表中匹配的記錄。這是右聯(lián)接。FULL OUTER JOIN:在查詢(xún)結(jié)果中包含JOIN兩側(cè)表中的所有記錄,這是完全聯(lián)接。DatabaseName!Table AS Local_Alias:指定和當(dāng)前表建立聯(lián)接的表所在的數(shù)據(jù)庫(kù)及表名或本地表別名。ON JoinCondition:指定聯(lián)接條件。INTO Destination:指定在何處保存查詢(xún)結(jié)果。如果在同一個(gè)查詢(xún)中同時(shí)包含了INTO子句和TO子句,則TO子句不起作用。

55、如果沒(méi)有包含INTO子句,查詢(xún)結(jié)果顯示在“瀏覽”窗口中。Destination可以是下列子句之一:ARRAY ArrayName:將查詢(xún)結(jié)果保存到數(shù)組中。如果查詢(xún)結(jié)果中不包含任何記錄,則不創(chuàng)建這個(gè)數(shù)組。CURSOR CursorName:將查詢(xún)結(jié)果保存到臨時(shí)表中。如果指定了一個(gè)已打開(kāi)表的名稱(chēng),則VFP產(chǎn)生錯(cuò)誤信息。執(zhí)行完SELECT語(yǔ)句后,臨時(shí)表仍然保持打開(kāi)、活動(dòng),但只讀。一旦關(guān)閉臨時(shí)表,則自動(dòng)刪除它。DBF TableName|TABLE TableName:將查詢(xún)結(jié)果保存到一個(gè)表中,如果指定的表已經(jīng)打開(kāi),并且SET SAFETY設(shè)置為OFF,則VFP在不給出任何警告信息的情況下改寫(xiě)該表。執(zhí)

56、行完SELECT語(yǔ)句后,臨時(shí)表仍然保持打開(kāi)活動(dòng)狀態(tài)。TO FILE FileName ADDITIVE | TO PRINTER PROMPT | TO SCREEN:如果命令中包含了TO子句,但沒(méi)有包括INTO子句,則查詢(xún)結(jié)果定向輸出到名為FileName的ASCII碼文件、打印機(jī)或主窗口。包含ADDITIVE子句使查詢(xún)結(jié)果追加到所指定的文本文件的內(nèi)容后面。PREFERENCE PreferenceName:如果查詢(xún)結(jié)果送往瀏覽窗口,就可以使用該子句保存瀏覽窗口的屬性和選項(xiàng)以備后用。NOCONSOLE:不顯示送到打印機(jī)、文件、或VFP主窗口的查詢(xún)結(jié)果。PLAIN:防止列標(biāo)題出現(xiàn)在顯示的查詢(xún)結(jié)

57、果中。NOWAIT:打開(kāi)瀏覽窗口并將結(jié)果輸出到這個(gè)窗口后繼續(xù)程序的執(zhí)行。WHERE:告訴VFP只在查詢(xún)結(jié)果中包含一定的記錄。從多表檢索中查找數(shù)據(jù)時(shí)需要用到該子句。JoinCondition:指定一個(gè)字段,該字段聯(lián)接FROM子句中的表。如果查詢(xún)中包括不止一個(gè)表就應(yīng)該為第一個(gè)表后的每一個(gè)表指定聯(lián)接條件。聯(lián)接多個(gè)查詢(xún)條件必須使用.AND.。每個(gè)聯(lián)接都是這樣的形式:FieldName1 Comparison FieldName2其中:FieldName1是一個(gè)表的字段名,F(xiàn)ieldName2是另一個(gè)表的字段名。Comparison是下列的某一操作符:=、=、LIKE、,!=,#、=、=FilterCo

58、ndition:指定包含在查詢(xún)結(jié)果中的記錄必須滿(mǎn)足條件。篩選條件的數(shù)目沒(méi)有限制,只要將它們用.AND.或.OR.操作符連接起來(lái)即可。也可以使用操作符.NOT.對(duì)邏輯表達(dá)式取反,或使用EMPTY()函數(shù)檢查字段是否為空等。GROUP BY GroupColumn:按列的值對(duì)查詢(xún)結(jié)果進(jìn)行分組。GroupColumn 可以是常規(guī)的表字段名,也可以是一個(gè)包含SQL字段函數(shù)的字段名,還可以是一個(gè)數(shù)值表達(dá)式指定查詢(xún)結(jié)果表中的列位置。HAVING FilterCondition:指定包含在查詢(xún)結(jié)果中的組必須滿(mǎn)足的條件。它應(yīng)和GROUP BY GroupColumn一起使用。UNION ALL SELECTC

59、ommand:把一個(gè)SELECT語(yǔ)句的最后查詢(xún)結(jié)果同另一個(gè)SELECT語(yǔ)句最后的查詢(xún)結(jié)果組合起來(lái)。ALL防止UNION刪除組合結(jié)果中的重復(fù)行。ORDER BY Order_Item :根據(jù)列的數(shù)據(jù)對(duì)查詢(xún)結(jié)果進(jìn)行排序。每個(gè)Order_Item都必須對(duì)應(yīng)查詢(xún)結(jié)果中的一列。 用SELECTSQL命令完成上節(jié)的設(shè)計(jì)任務(wù):SELECT Department.系部名稱(chēng), Classzc.班級(jí)名稱(chēng), Student.學(xué)號(hào), ; Student.姓名, Course.課程名, Grade.課程成績(jī); FROM gxglxt!department INNER JOIN gxglxt!classzc; INNER

60、 JOIN gxglxt!student; INNER JOIN gxglxt!grade; INNER JOIN gxglxt!course ; ON Grade.課程代號(hào) = Course.課程代號(hào) ; ON Student.學(xué)號(hào) = Grade.學(xué)號(hào) ; ON Classzc.班級(jí)代號(hào) = Student.班級(jí)代號(hào) ; ON Department.系部代號(hào) = Classzc.系部代號(hào); WHERE Classzc.系部代號(hào) = 04; .AND. Grade.開(kāi)課學(xué)期 = 第1學(xué)期; ORDER BY Student.學(xué)號(hào);INTO CURSOR 視圖1 運(yùn)行該SELECT語(yǔ)句后,選擇

溫馨提示

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

最新文檔

評(píng)論

0/150

提交評(píng)論