第05章:查詢與視圖_第1頁
第05章:查詢與視圖_第2頁
第05章:查詢與視圖_第3頁
第05章:查詢與視圖_第4頁
第05章:查詢與視圖_第5頁
已閱讀5頁,還剩135頁未讀 繼續免費閱讀

下載本文檔

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

文檔簡介

1、 visual foxpro 漳州師范學院計算中心 5.1 查詢與統計命令查詢與統計命令 l5.1.1 數據篩選命令數據篩選命令 l設置記錄篩選設置記錄篩選: (1)set filter to (2)功能:設置當前表中可以被訪問的記錄必須滿足的條功能:設置當前表中可以被訪問的記錄必須滿足的條 件件 (對對select-sql命令無效命令無效) l設置字段篩選設置字段篩選 (1)set fields to all like|except 通配符通配符 (2)功能:指定當前表中可以被訪問的字段功能:指定當前表中可以被訪問的字段 set fields on 字段篩選有效字段篩選有效 set fiel

2、ds off字段篩選無效字段篩選無效 visual foxpro 漳州師范學院計算中心 lset fields to關閉所有字段關閉所有字段 l例例5.1 設置設置student 表中只有男性記錄的學號、表中只有男性記錄的學號、 姓名、出生日期三個字段可被訪問。姓名、出生日期三個字段可被訪問。 use student set filter to 性別性別 set fields to 學號,姓名,性別學號,姓名,性別 list visual foxpro 漳州師范學院計算中心 use student list set fields to all like 專專*篩選專業字段篩選專業字段 set

3、fields on篩選字段有效篩選字段有效(默認默認) list set fields to all 所有字段有效所有字段有效 list set fields to 關閉所有字段關閉所有字段(要有此句要有此句) set fields to all like 專專*篩選專業字段篩選專業字段 list set fields off篩選專業字段無效篩選專業字段無效 list visual foxpro 漳州師范學院計算中心 5.1.2 查找定位命令查找定位命令 l順序查找就是按照記錄的物理排列順序查找滿足指定順序查找就是按照記錄的物理排列順序查找滿足指定 要求的記錄要求的記錄(查找時不要求索引查找時

4、不要求索引) l順序查找順序查找: (1)locate for (2)功能:在指定的記錄范圍內按順序查找滿足條件的第功能:在指定的記錄范圍內按順序查找滿足條件的第 一個記錄一個記錄 l繼續順序查找繼續順序查找:continue l功能:按上一個功能:按上一個locate的條件在指定范圍內從下一的條件在指定范圍內從下一 條記錄起繼續查找滿足條件的下一個記錄條記錄起繼續查找滿足條件的下一個記錄 visual foxpro 漳州師范學院計算中心 l若在指定范圍內找到滿足條件的記錄,指針指向滿若在指定范圍內找到滿足條件的記錄,指針指向滿 足條件的第一條記錄,函數足條件的第一條記錄,函數foun()返回

5、返回.t. eof()返返 回回.f. l若在指定范圍內找不到滿足條件的記錄,函數若在指定范圍內找不到滿足條件的記錄,函數 foun()返回返回.f. 若范圍為若范圍為all或或 rest 則則eof()返返 回回.t.,指針定位在指定范圍的下一條記錄。,指針定位在指定范圍的下一條記錄。 visual foxpro 漳州師范學院計算中心 索引查找索引查找 l利用索引文件進行查找。由于在索引文件中各個記利用索引文件進行查找。由于在索引文件中各個記 錄的邏輯位置是索引關鍵字的值由小到大排列的,錄的邏輯位置是索引關鍵字的值由小到大排列的, 因此可以使用二分法因此可以使用二分法(折半法折半法)根據索引

6、關鍵字的值進根據索引關鍵字的值進 行查找。提高查找速度。行查找。提高查找速度。 l(1)seek l(2)功能:按索引來查找功能:按索引來查找指定的關鍵段值。指定的關鍵段值。 可查找可查找c、n、d型字段值,型字段值, 值與索引關鍵字段同值與索引關鍵字段同 l例例5.2 在在student表中分別索引查找表中分別索引查找(1)第一個第一個 “金融金融”的專業學生記錄的姓名的專業學生記錄的姓名 (2)1981年年10月月9 日出生的學生姓名。日出生的學生姓名。 visual foxpro 漳州師范學院計算中心 use student index on 專業專業 tag 專業索引專業索引 seek

7、 “金融金融” ? 姓名姓名 index on 出生日期出生日期 tag 出生索引出生索引 seek 1981/10/09 或或seek ctod(“10/09/81”) ? 姓名姓名 visual foxpro 漳州師范學院計算中心 lfind/ l先索引再先索引再find查找查找 l只能索引查找只能索引查找c、n型常量,型常量, l值要與索引關鍵字段同值要與索引關鍵字段同 l例例5.3 在在student表中分別索引查找表中分別索引查找 第一個第一個“金融金融” 的專業學生的姓名的專業學生的姓名 luse student lindex on 專業專業 tag 專業索引專業索引 l(或:或:

8、set order to tag 專業索引專業索引) lfind 金融金融 (或:或:zy=“金融金融” find &zy ) visual foxpro 漳州師范學院計算中心 5.1.3 統計命令統計命令 l1. 記錄個數統計:記錄個數統計: l(1) count for/while to l(2)功能:統計當前表中指定范圍內滿足條件的記錄功能:統計當前表中指定范圍內滿足條件的記錄 個數,并可將結果存入內存變量中個數,并可將結果存入內存變量中 l說明說明: (1)范圍缺省為范圍缺省為all (2)當當set delete on時,已做刪除標記的記錄不被時,已做刪除標記的記錄不被 統計統計(而

9、而reccount()函數,即使函數,即使set delete on 已做刪除標記的記錄出被已做刪除標記的記錄出被 統計統計) visual foxpro 漳州師范學院計算中心 例例5.4 統計統計student 表中獎學金在表中獎學金在200-300元之間的元之間的 學生數學生數 use student count all for 獎學金獎學金=200 and 獎學金獎學金=300 to num ? num visual foxpro 漳州師范學院計算中心 l統計求和統計求和 l(1)sum for/while to l(2)功能:對當前表中指定范圍內指定條件的記錄的指功能:對當前表中指定范

10、圍內指定條件的記錄的指 定數值字段進行縱向求和,并可將求和結果在于內存定數值字段進行縱向求和,并可將求和結果在于內存 變量中變量中 l例例5.5 統計統計student 表中所有婦女學生的獎學金總表中所有婦女學生的獎學金總 額額 use student sum 獎學金獎學金 for .not.性別性別 to 獎學金總額獎學金總額 ? 獎學金總額獎學金總額 visual foxpro 漳州師范學院計算中心 l統計平均數統計平均數 laverage for/whileto l(2)功能:對當前表中指定范圍內指定條件的記錄的功能:對當前表中指定范圍內指定條件的記錄的 指定數值字段進行縱向求平均值,并

11、可將求平均結指定數值字段進行縱向求平均值,并可將求平均結 果在于內存變量中果在于內存變量中 l例例5.6 統計統計student 表中所有婦女學生的獎學金平表中所有婦女學生的獎學金平 均值均值 use student average 獎學金獎學金 for .not.性別性別 to 平均獎學金平均獎學金 ? 平均獎學金平均獎學金 visual foxpro 漳州師范學院計算中心 l計算命令計算命令 l(1)calculate for/whileto l (2)對當前表中指定范圍內滿足指定條件的記錄,按對當前表中指定范圍內滿足指定條件的記錄,按 指定函數進行計算,并可將結果送入對應的內存變指定函數

12、進行計算,并可將結果送入對應的內存變 量中保存量中保存 l例例5.7 統計統計student 表中的最高獎學金和最低獎表中的最高獎學金和最低獎 學金學金 use student calculate max(獎學金獎學金),min(獎學金獎學金) to 最高最高 獎學金,最低獎學金獎學金,最低獎學金 ?最高獎學金,最低獎學金?最高獎學金,最低獎學金 visual foxpro 漳州師范學院計算中心 5.1.4 多表操作多表操作 lvfp中共有中共有32767個工作區個工作區 l區號:區號:132767 l區名:對前區名:對前10個區區名:個區區名:a、b、c.j l工作區別名:可利用工作區別名:

13、可利用 use alias 可為打開表的工作區取別名。可為打開表的工作區取別名。 l選擇當前工作區選擇當前工作區 select / 0 說明說明 :select 0 表示尚未使用的工作區中編號最小的表示尚未使用的工作區中編號最小的 那個工作區作為當前工作區。那個工作區作為當前工作區。 visual foxpro 漳州師范學院計算中心 l當前工作區字段的引用當前工作區字段的引用 (1)訪問當前工作區中表的字段時,可以直接引用字段名訪問當前工作區中表的字段時,可以直接引用字段名 l例例:use student go 3 ? 姓名姓名 (2)訪問非當前工作區表中的字段時,使用:訪問非當前工作區表中的

14、字段時,使用: /. 或或 /- l例例5.8:select 2 use grade alias cjb go 3 select 1 use student ? cjb-姓名姓名 visual foxpro 漳州師范學院計算中心 建立表之間的關聯命令建立表之間的關聯命令 (1)set relation to into ,intoadditive (2)功能:功能:把當前工作區上的表把當前工作區上的表(主動表主動表)與被動表通過關與被動表通過關 聯字段建立指針聯動關系,使得當前工作區上表的指聯字段建立指針聯動關系,使得當前工作區上表的指 針移動時,被動表的記錄指針也發生相應的移動。針移動時,被動

15、表的記錄指針也發生相應的移動。 說明:說明: (1)是兩個關聯表的共有的字段。是兩個關聯表的共有的字段。 (2)主動表在當前工作區,被動表在非當前工作區。主動表在當前工作區,被動表在非當前工作區。 (3)被動表須對關鍵字段索引。被動表須對關鍵字段索引。 (4)主動表可同時與多個被動表建立關聯。主動表可同時與多個被動表建立關聯。 (5)additive:建立關聯時同時保留已有的關聯:建立關聯時同時保留已有的關聯(若省若省 略,則斷開略,則斷開) visual foxpro 漳州師范學院計算中心 lset relation to:斷開所有關聯:斷開所有關聯 l(6)關聯只是一種臨時關系,退出系統時

16、關聯自動消關聯只是一種臨時關系,退出系統時關聯自動消 失失 l例例5.9 通過在表通過在表grade 與與student之間按學號建之間按學號建 立指針關聯立指針關聯 select 2 use student alias stu index on 學號學號 tag 學號索引學號索引 select 1 use grade set relation to 學號學號 into stu browse fields 學號學號,stu.姓名姓名,stu.專業專業,課程號課程號, 成績成績 visual foxpro 漳州師范學院計算中心 5.2使用查詢設計器建立查詢使用查詢設計器建立查詢 l查詢(查詢(q

17、uery)概念)概念 vfp的查詢功能可以使用戶從數據庫檢索所需的數的查詢功能可以使用戶從數據庫檢索所需的數 據,可以對查詢結果進行排序分類,并可以采用數據,可以對查詢結果進行排序分類,并可以采用數 據表、報表、圖形等多種方式存儲、顯示查詢結果。據表、報表、圖形等多種方式存儲、顯示查詢結果。 vfp提供兩種方法實現查詢提供兩種方法實現查詢: 直接編寫直接編寫selectsql語句并執行;語句并執行; 用查詢設計器或查詢向導查詢文件并運行用查詢設計器或查詢向導查詢文件并運行 visual foxpro 漳州師范學院計算中心 查詢的設計過程查詢的設計過程 創建查詢時,通常可以遵循以下六個步驟來創建

18、查詢。創建查詢時,通常可以遵循以下六個步驟來創建查詢。 (1)用)用“查詢向導查詢向導”或或“查詢設計器查詢設計器”創建查詢。創建查詢。 (2)選擇在查詢結果中)選擇在查詢結果中需要的字段需要的字段。 (3)設置查詢記錄的)設置查詢記錄的條件條件。 (4)設置)設置排序排序及及分組分組條件來組織查詢結果。條件來組織查詢結果。 (5)選擇查詢)選擇查詢輸出類別輸出類別,可以是報表、表文件、圖表、,可以是報表、表文件、圖表、 瀏覽窗口和表文件等等。瀏覽窗口和表文件等等。 (6)運行此查詢。)運行此查詢。 visual foxpro 漳州師范學院計算中心 5.2.1 查詢設計器簡介查詢設計器簡介 l

19、在查詢設計器中,用戶不用編寫命令代碼,只要根據在查詢設計器中,用戶不用編寫命令代碼,只要根據 設計器提供的交互應用界面,便可構造設計器提供的交互應用界面,便可構造select-sql 命令并存儲成查詢文件(文件擴展名命令并存儲成查詢文件(文件擴展名.qpr),還可),還可 方便地修改、運行查詢文件。方便地修改、運行查詢文件。 啟動查詢設計器的方法啟動查詢設計器的方法 一、文件菜單一、文件菜單 選擇系統菜單中的【文件】選擇系統菜單中的【文件】|【新建】【新建】 命令,在命令,在“新建新建”對話框中選中對話框中選中 “文件類型文件類型”下的下的“查詢查詢”單選項,單選項, 再單擊右邊的【新建文件】

20、按鈕,再單擊右邊的【新建文件】按鈕, 可啟動可啟動“查詢設計器查詢設計器” visual foxpro 漳州師范學院計算中心 二二、在、在“項目管理器項目管理器” 1 1、在、在“項目管理器項目管理器”中選擇中選擇“數據數據”選項卡,再選選項卡,再選 取取“查詢查詢”項,再單擊【新建】,進入查詢設計方式項,再單擊【新建】,進入查詢設計方式 選擇對話框后單擊【新建查詢】,選擇對話框后單擊【新建查詢】,則啟動則啟動“查詢設計查詢設計 器器”,在添加表或視圖中選擇表,然后關閉在添加表或視圖中選擇表,然后關閉 2 2、在、在“項目管理器項目管理器”中選擇中選擇“數據數據”選項卡,從選項卡,從 “查詢查

21、詢”項中選擇一個已存在的查詢文件,再單擊項中選擇一個已存在的查詢文件,再單擊 【修改】,也【修改】,也啟動啟動“查詢設計器查詢設計器”。 三、在命令窗口中使用三、在命令窗口中使用 create query命令命令 visual foxpro 漳州師范學院計算中心 查詢設計器查詢設計器 visual foxpro 漳州師范學院計算中心 設計單表查詢設計單表查詢 查詢向導查詢向導可以引導用戶快速設計一個查詢。例子:從可以引導用戶快速設計一個查詢。例子:從 gxglxt數據庫的數據庫的student表中查詢系部代號為表中查詢系部代號為“04”且且 是是99級的所有學生的信息。級的所有學生的信息。 項

22、目管理器項目管理器 數據數據 查詢查詢 新建新建 選擇設計查詢的方式選擇設計查詢的方式 單擊單擊 visual foxpro 漳州師范學院計算中心 選擇 選擇gxglxt數據庫中的數據庫中的student 表,并將該表中的所有字段添加到表,并將該表中的所有字段添加到 “選定字段選定字段”列表框中。列表框中。 單擊單擊 查詢向導查詢向導字段選取字段選取 visual foxpro 漳州師范學院計算中心 從中選擇從中選擇 student.系系 部代號部代號 0 在此輸入值在此輸入值 4 取默認值取默認值 從中選擇從中選擇 “包含包含” 在此輸入值在此輸入值 98 單擊單擊 單擊【預覽】按鈕可以顯示

23、查詢結果。根據要求,設置條件如上圖。其中,單擊【預覽】按鈕可以顯示查詢結果。根據要求,設置條件如上圖。其中, 雖然表中沒有年級字段,但可通過雖然表中沒有年級字段,但可通過“學號學號”得到年級(學號的前二位為年得到年級(學號的前二位為年 級)。級)。 查詢向導查詢向導篩選記錄篩選記錄 visual foxpro 漳州師范學院計算中心 選擇排序字段選擇排序字段單擊【添加】單擊【添加】 選擇排序方式選擇排序方式 調整排調整排 序順序序順序 移動按鈕 單擊單擊 查詢向導查詢向導記錄排序記錄排序 visual foxpro 漳州師范學院計算中心 查詢向導查詢向導限制記錄限制記錄 限制查詢結限制查詢結 果

24、中所包含果中所包含 的記錄數的記錄數 說明:查詢結果說明:查詢結果 中所包含的記錄中所包含的記錄 數限制共有四種數限制共有四種 方式:方式: 1、“部分類型部分類型” 中選擇中選擇“所占記所占記 錄百分比錄百分比”, “數量數量”中選擇中選擇 “所有記錄所有記錄”, 查詢結果集中包查詢結果集中包 含全部記錄。含全部記錄。 2、“部分類型部分類型”中選擇中選擇“所占記錄百分比所占記錄百分比”,“數量數量” 中選擇中選擇“部分值部分值”,再在,再在“微調框微調框”中設置數值,查中設置數值,查 詢結果集中包含指定數值百分數的記錄。詢結果集中包含指定數值百分數的記錄。 單擊 取默認值,取默認值, 查詢

25、結果查詢結果 集中包含集中包含 全部記錄全部記錄 visual foxpro 漳州師范學院計算中心 查詢向導查詢向導限制記錄限制記錄 (2) 3、“部分類型部分類型”中選擇中選擇“記錄號記錄號”,“數量數量”中選中選 擇擇“所有記錄所有記錄”,查詢結果集中包含全部記錄。,查詢結果集中包含全部記錄。 4、 “部分類型部分類型”中選擇中選擇“記錄號記錄號”,“數量數量”中選擇中選擇 “部分值部分值”,再在,再在“微調框微調框”中設置數值,查詢結果中設置數值,查詢結果 集中包含指定數值的記錄數。集中包含指定數值的記錄數。 visual foxpro 漳州師范學院計算中心 查詢向導完成 將查詢以文將查

26、詢以文 件的形式件的形式 (.qpr)保)保 存到一個指存到一個指 定的目錄中。定的目錄中。 將查詢保存到一將查詢保存到一 個指定的目錄中個指定的目錄中 并運行該文件。并運行該文件。 利用查詢向導設計的查詢功能有限,可以使用查詢設計器修改它。利用查詢向導設計的查詢功能有限,可以使用查詢設計器修改它。 單擊,可以查看查詢結果集中的全部數據單擊,可以查看查詢結果集中的全部數據 打開幫助文件打開幫助文件 取消所建立的查詢取消所建立的查詢 返回到向導的上一步返回到向導的上一步 結束向導,結束向導, 完成查詢設完成查詢設 計。計。 單擊單擊 visual foxpro 漳州師范學院計算中心 保存設計的查

27、詢保存設計的查詢 目錄選擇下拉列表框 文件名輸入文本框 文件類型選擇下位列表框 在在“文件名輸入文本框文件名輸入文本框”中中 輸入輸入“stud_query”后,單擊后,單擊 【保存】按鈕,結束查詢設【保存】按鈕,結束查詢設 計過程。計過程。 在項目管理器中 的“數據”選項 中的查詢項下產 生了一個查詢文 件 visual foxpro 漳州師范學院計算中心 若建立查詢時選若建立查詢時選 擇擇“交叉表向導交叉表向導”, 則可以建立交叉表。則可以建立交叉表。 用用grade表中的數據表中的數據 建立一個交叉表,建立一個交叉表, 以顯示每個學生所以顯示每個學生所 有課程的總成績。有課程的總成績。

28、grade表中的部分數表中的部分數 據如圖據如圖 前面的設計過程前面的設計過程 同以上內容,但是同以上內容,但是 在第二步需要確定在第二步需要確定 交叉表的行和列交叉表的行和列 。 建立交叉表建立交叉表 visual foxpro 漳州師范學院計算中心 交叉表設計向導交叉表設計向導字段選取字段選取 選擇數據庫和表 選定字段 單擊 單個字段選定按鈕單個字段選定按鈕 全部字段選定按鈕全部字段選定按鈕 單個字段撤消按鈕單個字段撤消按鈕 說明:在這說明:在這 一步先在一步先在“ 數據庫和表數據庫和表 ”一選擇一一選擇一 個數據庫,個數據庫, 再選擇用以再選擇用以 建立交叉表建立交叉表 的數據表,的數據

29、表, 然后再從可然后再從可 用字段列表用字段列表 框中選擇要框中選擇要 用的字段,用的字段, 交叉表只用交叉表只用 三個字段,三個字段, 這一步可多這一步可多 選選 字段。字段。 全部字段撤消按鈕全部字段撤消按鈕單擊單擊 visual foxpro 漳州師范學院計算中心 交叉表向導交叉表向導定義布局定義布局 說明:說明: (1)行,將要加入到)行,將要加入到 交叉表中的第一個字交叉表中的第一個字 段名,本示例中選擇段名,本示例中選擇 字段字段“學號學號”; (2)列,將要加入到)列,將要加入到 交叉表中的從第二個交叉表中的從第二個 字段開始的若干個字字段開始的若干個字 段的字段名,注意這段的字

30、段名,注意這 些從源表中選擇的數些從源表中選擇的數 據不能超過據不能超過254個。本個。本 示例中選擇字段示例中選擇字段“課課 程代號程代號”; (3)數據,對應行和)數據,對應行和 列的運算結果,本示列的運算結果,本示 例中選擇例中選擇“課程成課程成 績績”。 按提示操作:從可用字段列表框按提示操作:從可用字段列表框 中將中將“學號學號”字段拖入字段拖入“行行”框,框, 將將“課程代號課程代號”拖入拖入“列列”框,將框,將 “課程成績課程成績”拖入拖入“數據數據”框。框。 單擊單擊 visual foxpro 漳州師范學院計算中心 交叉表查詢向導交叉表查詢向導加入總結信息加入總結信息 說明:

31、說明:這一步的操作,這一步的操作, 決定在生成的交叉表中決定在生成的交叉表中 要加入的一個字段的內要加入的一個字段的內 容。容。 (1)求和:求出對應行)求和:求出對應行 和列的數據字段的和;和列的數據字段的和; (2)計數:求出對應行)計數:求出對應行 和列的數據字段的數目;和列的數據字段的數目; (3)平均值:求出對應)平均值:求出對應 行和列的數據字段的平行和列的數據字段的平 均值;均值; (4)最大值:求出對應)最大值:求出對應 行和列的數據字段的最行和列的數據字段的最 大值;大值; (5)最小值:求出對應)最小值:求出對應 行和列的數據字段的最行和列的數據字段的最 小值。小值。 本示

32、例中選擇本示例中選擇“求和求和” 運算。如果不想加入總運算。如果不想加入總 結信息,可以在結信息,可以在“分類分類 匯總匯總”中選擇中選擇“無無”。 單擊單擊 visual foxpro 漳州師范學院計算中心 交叉表向導交叉表向導完成完成 將交叉表查詢以文件的將交叉表查詢以文件的 形式(形式(.qpr)保存到一)保存到一 個指定的目錄中。個指定的目錄中。 將交叉表查詢保存到一將交叉表查詢保存到一 個指定的目錄中并運行個指定的目錄中并運行 該文件。該文件。 將交叉表查詢保存到一個指定的目錄中并打開將交叉表查詢保存到一個指定的目錄中并打開“查詢設計器查詢設計器”修改修改 它。它。 對于值為空的記錄

33、是否以對于值為空的記錄是否以.null.填充填充 說明說明:系統默認值系統默認值 是是“保存交叉表查詢保存交叉表查詢” 和和“顯示顯示null值值”。 選擇選擇“保存并運行保存并運行 交叉表查詢交叉表查詢”后單后單 擊擊 visual foxpro 漳州師范學院計算中心 交叉表保存及運行結果交叉表保存及運行結果 按上一步的操作完成后,進行到按上一步的操作完成后,進行到“另存為另存為”對話框中,將該對話框中,將該 查詢取名為查詢取名為grad_query,然后保存在默認的目錄中。,然后保存在默認的目錄中。 保存后,系統進入到數據查詢過程,稍候系統將查詢結果顯示保存后,系統進入到數據查詢過程,稍候

34、系統將查詢結果顯示 出來。如:出來。如: 從中可以看到,凡是沒有數據的欄,就被從中可以看到,凡是沒有數據的欄,就被.null.null.值填充值填充, ,且有且有 許多數據丟失許多數據丟失。 交叉表可以用數據過濾處理交叉表可以用數據過濾處理. . visual foxpro 漳州師范學院計算中心 查詢設計器查詢設計器 要設計一個查詢文件,首先必須明確查詢的目的要設計一個查詢文件,首先必須明確查詢的目的 是什么,即想要得到哪些數據,并以什么方式存在;是什么,即想要得到哪些數據,并以什么方式存在; 或者想要得到滿足某些條件的特定記錄,或者想要知或者想要得到滿足某些條件的特定記錄,或者想要知 道某些

35、記錄的字段值組合成的表達式按某一方式輸出。道某些記錄的字段值組合成的表達式按某一方式輸出。 明確了輸出的數據后,就可以開始設計查詢了明確了輸出的數據后,就可以開始設計查詢了. . visual foxpro 漳州師范學院計算中心 (1 1)“字段字段”:用來選定包含在查詢結果中的字:用來選定包含在查詢結果中的字 段;段; (2 2)“排序依據排序依據”:用來決定查詢結果輸出中記:用來決定查詢結果輸出中記 錄或行的排列順序;錄或行的排列順序; (3 3)“聯接聯接”:用來確定各數據表或視圖之間的:用來確定各數據表或視圖之間的 聯接關系;聯接關系; (4 4)“篩選篩選”:相當于命令:相當于命令s

36、et filter toset filter to,利,利 用過濾的方法查找一個特定的數據子集;用過濾的方法查找一個特定的數據子集; (5 5)“分組依據分組依據”:所謂分組就是將一組類似的:所謂分組就是將一組類似的 記錄壓縮成一個結果記錄,這樣就可以完成基于一記錄壓縮成一個結果記錄,這樣就可以完成基于一 組的計算。組的計算。 查詢設計器窗口中選項卡的含義查詢設計器窗口中選項卡的含義 visual foxpro 漳州師范學院計算中心 根據建立查詢的目的,選擇查詢結果中應包含的字段。根據建立查詢的目的,選擇查詢結果中應包含的字段。 操作方法與用向導設計查詢的方法相同。在本示例中先操作方法與用向導

37、設計查詢的方法相同。在本示例中先 在在“查詢設計器查詢設計器”中選擇中選擇“字段字段”選項卡,然后從可用選項卡,然后從可用 字段列表框中選擇:字段列表框中選擇:student.學號、學號、student.姓名、姓名、 courses.課程名稱、課程名稱、grade.課程成績,如圖。課程成績,如圖。 選擇一個字段選擇一個字段單擊【添加】單擊【添加】選定的字段列表選定的字段列表 重復操作添加重復操作添加student.姓名、姓名、courses.課程名稱、課程名稱、grade.課程成績課程成績 選定查詢字段選定查詢字段 visual foxpro 漳州師范學院計算中心 確定各表間的聯接關系確定各表

38、間的聯接關系 例如在例如在gxglxtgxglxt數據庫中有三個表:數據庫中有三個表:studentstudent、gradegrade、coursescourses, 現在想知道學號前四位是現在想知道學號前四位是99049904和和98049804的所有學生考試的成績。的所有學生考試的成績。 當在多個表或視圖間進行查詢時,需要指出這些表或視圖間當在多個表或視圖間進行查詢時,需要指出這些表或視圖間 的聯接關系。在的聯接關系。在“添加表和視圖添加表和視圖”對話框中從對話框中從“數據庫數據庫”中選中選 擇擇gxglxtgxglxt庫,在庫,在“數據庫中的表數據庫中的表”中選擇中選擇students

39、tudent表,單擊【添表,單擊【添 加】按鈕,再選擇加】按鈕,再選擇gradegrade表,再單擊【添加】,此時系統自動表,再單擊【添加】,此時系統自動 彈出一個彈出一個“聯接條件聯接條件”, 詢問是否根據兩表中都有詢問是否根據兩表中都有 的的“學號學號”字段建立內部字段建立內部 聯接,單擊聯接,單擊“確定確定”,兩,兩 表間就有了一條連線,代表間就有了一條連線,代 表它們之間的聯接。然后表它們之間的聯接。然后 再添加再添加coursescourses表,最后表,最后 關閉對話框。關閉對話框。 visual foxpro 漳州師范學院計算中心 在在“查詢設計器查詢設計器”中選擇中選擇“聯接聯

40、接”選項選項 卡卡 visual foxpro 漳州師范學院計算中心 (1)inner join : 內部聯接,指定只有滿足聯接條件內部聯接,指定只有滿足聯接條件 的記錄包含在結果中,此類型是默認的,也是最常用的記錄包含在結果中,此類型是默認的,也是最常用 的;的; 即即:只返回完全滿足連接條件的記錄只返回完全滿足連接條件的記錄 (2)right outer join :右聯接,指定滿足聯接條件:右聯接,指定滿足聯接條件 的記錄,以及滿足聯接條件右側的表中記錄(即使不的記錄,以及滿足聯接條件右側的表中記錄(即使不 匹配聯接條件)都包含在結果中;即匹配聯接條件)都包含在結果中;即:返回后一個表中

41、返回后一個表中 的所有記錄以及前一個表中匹配的記錄的所有記錄以及前一個表中匹配的記錄 (3)left outer join : 左聯接,指定滿足聯接條件的左聯接,指定滿足聯接條件的 記錄,以及滿足聯接條件左側的表中記錄(即使不匹記錄,以及滿足聯接條件左側的表中記錄(即使不匹 配聯接條件)都包含在結果中;即配聯接條件)都包含在結果中;即:返回前一個表中的返回前一個表中的 所有記錄以及后一個表中匹配的記錄所有記錄以及后一個表中匹配的記錄 (4)full join :完全聯接,指定所有滿足和不滿足聯:完全聯接,指定所有滿足和不滿足聯 接條件的記錄都包含在結果中。即接條件的記錄都包含在結果中。即:返回

42、兩個表中的匹返回兩個表中的匹 配和不匹配的所有記配和不匹配的所有記 錄錄 。 表間的四種聯接類型表間的四種聯接類型 visual foxpro 漳州師范學院計算中心 如果想修改各表間的聯接,雙擊查詢設計器上部窗口表如果想修改各表間的聯接,雙擊查詢設計器上部窗口表 之間的連線,系統將彈出之間的連線,系統將彈出“連接條件連接條件”對話框;或者通對話框;或者通 過打開查詢設計器下部的過打開查詢設計器下部的“聯接聯接”選項卡進行。一般不選項卡進行。一般不 應隨便更改連接條件,不然會與實際數據間的關系不符。應隨便更改連接條件,不然會與實際數據間的關系不符。 “條件條件”列表中包含如下幾項:列表中包含如下

43、幾項: (1)=:指字段值與實例相等;:指字段值與實例相等; (2)like:表示:表示“字段名字段名”欄中給出的字段值與欄中給出的字段值與“實實 例例”欄中給出的文本值之間執行不完全匹配,它主要針欄中給出的文本值之間執行不完全匹配,它主要針 對字符類型。例如,如設置查詢條件為對字符類型。例如,如設置查詢條件為“student.學號學號 like 9904”,那么諸如,那么諸如“學號學號”字段前四位為字段前四位為9904的的 記錄都滿足該條件;記錄都滿足該條件; (3)=:表示在:表示在“字段名字段名”欄中給出的字段值與欄中給出的字段值與“實實 例例”欄中給出的文本值之間執行完全匹配檢查,它也

44、主欄中給出的文本值之間執行完全匹配檢查,它也主 要是針對字符類型的。要是針對字符類型的。 visual foxpro 漳州師范學院計算中心 (4):即為:即為“字段名字段名”欄中給出的字段的值應大于欄中給出的字段的值應大于 “實例實例”欄中給出的值;欄中給出的值; (5)=:即為:即為“字段名字段名”欄中給出的字段的值應大于欄中給出的字段的值應大于 或等于或等于“實例實例”欄中給出的值;欄中給出的值; (6):即為:即為“字段名字段名”欄中給出的字段的值應小于欄中給出的字段的值應小于 “實例實例”欄中給出的值;欄中給出的值; (7)=:即為:即為“字段名字段名”欄中給出的字段的值應小于欄中給出

45、的字段的值應小于 或等于或等于“實例實例”欄中給出的值;欄中給出的值; (8)is null:指定字段必須包含:指定字段必須包含null值;值; (9)between:即為輸出字段的值應大于或等于:即為輸出字段的值應大于或等于“實例實例” 欄中的最小值,而小于或等于欄中的最小值,而小于或等于“實例實例”欄中的最大值;欄中的最大值; (10)in(在(在之中):即為輸出字段的值必須是之中):即為輸出字段的值必須是“實實 例例”欄中所給出值中的一個,在欄中所給出值中的一個,在“實例實例”欄中給出的各欄中給出的各 值之間以逗號分隔。值之間以逗號分隔。 visual foxpro 漳州師范學院計算中心

46、 此外,此外,“聯接聯接”選項卡中的選項卡中的“否否”列用于指定列用于指定.not.條條 件,件,“邏輯邏輯”列用于設置各聯接條件和篩選條件之間列用于設置各聯接條件和篩選條件之間 的邏輯關系(無、的邏輯關系(無、.and.和和.or.) “大小寫大小寫”列用于指定是否區分大小寫。列用于指定是否區分大小寫。 下方的下方的“插入插入”和和“移去移去”按鈕分別用于增加或移去按鈕分別用于增加或移去 查詢條件。查詢條件。 最后,在設置篩選條件時,我們應注意如下幾點:最后,在設置篩選條件時,我們應注意如下幾點: (1)備注字段和通用字段不能用于設置查詢條件;)備注字段和通用字段不能用于設置查詢條件; (2

47、)邏輯值的前后必須使用句點號,如)邏輯值的前后必須使用句點號,如.t.; (3)只有當字符串與查詢的表中字段名相同時,要用)只有當字符串與查詢的表中字段名相同時,要用 引號將字符串括起來,否則不需要用引號將字符串括引號將字符串括起來,否則不需要用引號將字符串括 起來;起來; (4)日期不必用花括號括起來。)日期不必用花括號括起來。 visual foxpro 漳州師范學院計算中心 選擇表中符合條件的一部分記錄而不是全部記錄是查選擇表中符合條件的一部分記錄而不是全部記錄是查 詢的重要任務。此例要求從所有學生的成績信息中選出詢的重要任務。此例要求從所有學生的成績信息中選出 “學號學號”前四位為前四

48、位為“9904”和和“9804”的所有學生的成績,的所有學生的成績, 可以利用查詢設計器中的可以利用查詢設計器中的“篩選篩選”選項卡。選項卡。“篩選篩選”選選 項卡可確定用于選擇記錄的字段和比較準則,以及輸入項卡可確定用于選擇記錄的字段和比較準則,以及輸入 與該字段進行比較的示例值。與該字段進行比較的示例值。 選擇篩選字段選擇篩選字段 設置篩選條件設置篩選條件 輸入篩選實例輸入篩選實例設置條件邏輯設置條件邏輯是否區分大小寫是否區分大小寫 篩選記錄篩選記錄 visual foxpro 漳州師范學院計算中心 在字段名下的下拉選擇框中選擇在字段名下的下拉選擇框中選擇“grade.開課學期開課學期”,

49、 在在“條件條件”下的下拉選擇框中選擇下的下拉選擇框中選擇“=”,在,在“實例實例” 下的文本框中輸入下的文本框中輸入“第第1學期學期”, 在在“邏輯邏輯”下的下拉選擇框中選擇下的下拉選擇框中選擇“and”,然后再在,然后再在 字段名下的下拉選擇框中選擇字段名下的下拉選擇框中選擇“student.學號學號”,在,在 “條件條件”下的下拉選擇框中選擇下的下拉選擇框中選擇“in”,在,在“實例實例”下下 的文本框中輸入的文本框中輸入“9904,9804”(請注意中間的請注意中間的“,”是是en 狀態下輸入的狀態下輸入的)。)。 visual foxpro 漳州師范學院計算中心 選擇一個字段選擇一個

50、字段單擊【添加】單擊【添加】 選定的字段列表選定的字段列表 排序決定了輸出結果中記錄或行的先后順序。在排序決定了輸出結果中記錄或行的先后順序。在 “排排 序依據序依據”選項卡中從選項卡中從“選定字段選定字段”框中選定要使用的字框中選定要使用的字 段,并把它們移到段,并把它們移到“排序條件排序條件”框中,然后利用框中,然后利用“排序排序 選項選項”(從中選擇升序或降序)來設置排序條件。本例(從中選擇升序或降序)來設置排序條件。本例 中設置中設置student.學號,升序為排序依據。如果還需要添學號,升序為排序依據。如果還需要添 加用于排序的字段,可以重復以上的操作步驟。加用于排序的字段,可以重復

51、以上的操作步驟。 查詢結果排序查詢結果排序 visual foxpro 漳州師范學院計算中心 所謂分組就是將一組類似的記錄壓縮成一個結果記錄,所謂分組就是將一組類似的記錄壓縮成一個結果記錄, 這樣就可完成基于一組記錄的計算。分組在與某些累計這樣就可完成基于一組記錄的計算。分組在與某些累計 功能聯合使用時效果最好,例如功能聯合使用時效果最好,例如sum(),count(), avg()等。如果不想壓縮結果記錄,則不必設置它。在等。如果不想壓縮結果記錄,則不必設置它。在 此例中不設分組查詢。如果想求各門課程的平均成績,此例中不設分組查詢。如果想求各門課程的平均成績, 可以用可以用“課程名稱課程名稱

52、”進行分類查詢。進行分類查詢。 選擇一個字段選擇一個字段單擊【添加】單擊【添加】 選定的字段列表選定的字段列表 建立分組查詢建立分組查詢 visual foxpro 漳州師范學院計算中心 操作步驟如下:操作步驟如下: (1)在查詢設計器的)在查詢設計器的“字段字段”選項卡中,單擊選項卡中,單擊“函數和表達式函數和表達式” 右邊的按鈕,出現右邊的按鈕,出現“表達式表達式”生成器;生成器; (2)在)在“數學數學”下拉式列表框中雙擊下拉式列表框中雙擊avg(expn),在),在“來源來源 于表于表”下拉框中選擇下拉框中選擇grade表,在表,在“字段字段”列表框中雙擊列表框中雙擊“課程課程 成績成

53、績”,單擊【確定】。即在,單擊【確定】。即在“函數和表達式函數和表達式”框中自動生成框中自動生成 了了“avg(grade.課程成績課程成績)”這個表達式,用以計算這個表達式,用以計算grade表中表中 課程成績的平均值。課程成績的平均值。 (3)單擊)單擊“添加添加”按鈕,該表達式被添加到按鈕,該表達式被添加到“選定字段選定字段”列表列表 框中。將來查詢結果中就會有一列數據求平均值;框中。將來查詢結果中就會有一列數據求平均值; (4)單擊)單擊“分組依據分組依據”選項卡,進入選項卡,進入“分組依據分組依據”窗口,在窗口,在 “可用字段可用字段”中選擇中選擇grade.課程名稱,再單擊【添加】

54、按鈕,課程名稱,再單擊【添加】按鈕, 該字段即成為分組字段。該字段即成為分組字段。 運行查詢后的結果運行查詢后的結果 visual foxpro 漳州師范學院計算中心 雜項的設置雜項的設置 經過以上五個步驟,基本上已生成了一個比較全面的查詢。接經過以上五個步驟,基本上已生成了一個比較全面的查詢。接 下來還可以通過查詢設計器中的下來還可以通過查詢設計器中的“雜項雜項”選項卡做最后處理。選項卡做最后處理。 單擊單擊“雜項雜項”選項卡,可以看到其間包括選項卡,可以看到其間包括“無重復記錄無重復記錄”、 “交叉數據表交叉數據表”、“全部全部”、“百分比百分比”這四個復選框和一個這四個復選框和一個 微調

55、按鈕。微調按鈕。 選中選中“無重復記錄無重復記錄”復選框表示對于查詢結果如果存在重復記錄,復選框表示對于查詢結果如果存在重復記錄, 則只取相同記錄中的一個。選中此項,在查詢生成器的則只取相同記錄中的一個。選中此項,在查詢生成器的sql語句語句 中會自動加上限定詞中會自動加上限定詞distinct,表示去掉重復記錄。,表示去掉重復記錄。 visual foxpro 漳州師范學院計算中心 當輸出的字段只有三項時,當輸出的字段只有三項時,“交叉數據表交叉數據表”復選框為可選狀態,復選框為可選狀態, 否則為不可選狀態。選中否則為不可選狀態。選中“交叉數據表交叉數據表”復選框表示將查詢的復選框表示將查詢

56、的 結果以交叉表的形式傳遞給其它報表或表。三項查詢字段分別結果以交叉表的形式傳遞給其它報表或表。三項查詢字段分別 表示表示x軸、軸、y軸和圖形的單元值。軸和圖形的單元值。 如,在本示例中,將前面已加入到如,在本示例中,將前面已加入到“選定字段選定字段”中的中的student. 學號字段移去,并按學號字段移去,并按student.姓名、姓名、courses.課程名稱和課程名稱和grade. 課程成績的順序調整字段在課程成績的順序調整字段在“選定字段選定字段”列表框中的順序,然列表框中的順序,然 后在后在“雜項雜項”選項卡中選中選項卡中選中“交叉數據表交叉數據表”,同時將,同時將“分組依分組依 據

57、據”中的中的“grade.課程代號課程代號”取消,其它設置不變。取消,其它設置不變。 從圖中可以看到從圖中可以看到“交叉數據表交叉數據表”成為了可選。現選中成為了可選。現選中“交叉數據表交叉數據表”項,項, 如圖:如圖: 設置設置 visual foxpro 漳州師范學院計算中心 定向輸出查詢結果定向輸出查詢結果 查詢檢索的信息,可以輸出到不同的目的地,以用查詢檢索的信息,可以輸出到不同的目的地,以用 作不同的用途。如果沒有選定輸出的目的地,查詢結果作不同的用途。如果沒有選定輸出的目的地,查詢結果 將顯示在瀏覽窗口中。查詢輸出目的可以是瀏覽窗口、將顯示在瀏覽窗口中。查詢輸出目的可以是瀏覽窗口、

58、 臨時表、表、圖形、屏幕、報表、標簽等。臨時表、表、圖形、屏幕、報表、標簽等。 選擇結果的去向方法如下:選擇結果的去向方法如下: 單擊單擊“查詢設計器工具查詢設計器工具”中的【查詢去向】按鈕,或中的【查詢去向】按鈕,或 者從【查詢】菜單中選擇【查詢去向】者從【查詢】菜單中選擇【查詢去向】 visual foxpro 漳州師范學院計算中心 【瀏覽】【瀏覽】:在瀏覽窗口中顯示查詢結果,查詢缺省設置;:在瀏覽窗口中顯示查詢結果,查詢缺省設置; 【臨時表】【臨時表】:將查詢結果存儲在一個臨時只讀表中。多:將查詢結果存儲在一個臨時只讀表中。多 次查詢的結果可放在不同的表內。該表可用于瀏覽數據,次查詢的結

59、果可放在不同的表內。該表可用于瀏覽數據, 制作報表等,直到用戶關閉它們;制作報表等,直到用戶關閉它們; 【表】【表】:將查詢的結果保存在一個命名的表(:將查詢的結果保存在一個命名的表(.dbf ) 中,此時查詢的結果是真正的存放到磁盤上的,多次查中,此時查詢的結果是真正的存放到磁盤上的,多次查 詢的結果可放在不同的表內;詢的結果可放在不同的表內; 【圖形】【圖形】:使查詢結果可用于:使查詢結果可用于microsoft graph(包含在(包含在 vfp6中的一個獨立的應用程序)中制作圖表;中的一個獨立的應用程序)中制作圖表; 對話框中的按鈕含義如下:對話框中的按鈕含義如下: visual fo

60、xpro 漳州師范學院計算中心 【屏幕】【屏幕】:在:在vfp6主窗口或當前活動輸出窗口中顯示主窗口或當前活動輸出窗口中顯示 查詢結果;查詢結果; 【報表】【報表】:將輸出送到一個報表文件(:將輸出送到一個報表文件(.frx)中;)中; 【標簽】【標簽】:將輸出送到一個標簽文件(:將輸出送到一個標簽文件(.lbx)中。)中。 選定一個去向,按一定的步驟設置一些屬性,然后選定一個去向,按一定的步驟設置一些屬性,然后 單擊【確定】按鈕,系統就將按意圖放置查詢結果。單擊【確定】按鈕,系統就將按意圖放置查詢結果。 假設本例將查詢結果保存到臨時表中,取臨時表名假設本例將查詢結果保存到臨時表中,取臨時表名

溫馨提示

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

評論

0/150

提交評論