版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進(jìn)行舉報或認(rèn)領(lǐng)
文檔簡介
1、1第四章第四章查詢和視圖查詢和視圖u查詢的創(chuàng)建和使用查詢的創(chuàng)建和使用u視圖的創(chuàng)建和使用視圖的創(chuàng)建和使用uSELECT-SQL語句語句上一頁下一頁退 出2 26/5/20226/5/2022n查詢:查詢: 從數(shù)據(jù)源(從數(shù)據(jù)源(一張或多張表、視圖一張或多張表、視圖)中檢索或)中檢索或統(tǒng)計出符合條件的記錄數(shù)據(jù)。(統(tǒng)計出符合條件的記錄數(shù)據(jù)。(結(jié)果是只讀的結(jié)果是只讀的)n視圖:視圖: 從數(shù)據(jù)源中(從數(shù)據(jù)源中(一張或多張表、視圖一張或多張表、視圖)提取一組)提取一組符合條件的記錄數(shù)據(jù),并可改變這些記錄的值,符合條件的記錄數(shù)據(jù),并可改變這些記錄的值,還可把更新結(jié)果送回源表中。(還可把更新結(jié)果送回源表中。(結(jié)
2、果可更新、變結(jié)果可更新、變動動)n VFP工具:工具:查詢設(shè)計器、視圖設(shè)計器查詢設(shè)計器、視圖設(shè)計器4.1 查詢和視圖概述上一頁下一頁退 出3 36/5/20226/5/20221、查詢的本質(zhì)、查詢的本質(zhì)n查詢查詢:向數(shù)據(jù)源發(fā)出檢索信息的請求向數(shù)據(jù)源發(fā)出檢索信息的請求,它設(shè)置一些它設(shè)置一些條件條件提提取特定的數(shù)據(jù)取特定的數(shù)據(jù)記錄記錄。其運行結(jié)果是一個基于表和視圖的。其運行結(jié)果是一個基于表和視圖的動態(tài)動態(tài)的數(shù)據(jù)集合。的數(shù)據(jù)集合。n數(shù)據(jù)源數(shù)據(jù)源:是一張或是一張或多張多張相關(guān)相關(guān)表表(自由表或庫表自由表或庫表)或視圖?;蛞晥D。n查詢條件:查詢條件:要那些字段?那些記錄?按什么要求收集?要那些字段?那些
3、記錄?按什么要求收集?n查詢實質(zhì):查詢實質(zhì):執(zhí)行一條執(zhí)行一條SELECT-SQL命令語句命令語句n保存保存: .QPR文件,實質(zhì)上保存的是對應(yīng)的文件,實質(zhì)上保存的是對應(yīng)的 SELECT-SQL語句語句(非查詢結(jié)果非查詢結(jié)果)。n查詢和視圖設(shè)計器在本質(zhì)上都是查詢和視圖設(shè)計器在本質(zhì)上都是SELECT-SQL命令命令的的設(shè)計方法。設(shè)計方法。 4.2 查詢的創(chuàng)建和使用查詢的創(chuàng)建和使用上一頁下一頁退 出4 46/5/20226/5/2022n創(chuàng)建查詢的方法:創(chuàng)建查詢的方法:使用查詢設(shè)計器使用查詢設(shè)計器CREATE QUERYCREATE QUERY 查詢文件名查詢文件名|?“項目管理器項目管理器”數(shù)據(jù)數(shù)
4、據(jù)”查詢查詢”新建新建”“文件文件”新建新建”或或“常用工具欄常用工具欄” “新新建建”編寫編寫SELECT-SQL語句語句(難難)2、使用查詢設(shè)計器建立查詢、使用查詢設(shè)計器建立查詢上一頁下一頁退 出5 56/5/20226/5/2022n建查詢的步驟建查詢的步驟n打開查詢設(shè)計器打開查詢設(shè)計器n添加表或視圖添加表或視圖(即該查詢所涉及的數(shù)據(jù)源)(即該查詢所涉及的數(shù)據(jù)源)n設(shè)置輸出字段(設(shè)置輸出字段(“字段字段”選項卡)選項卡) 選定需要包含到查選定需要包含到查詢結(jié)果中的字段及需計算的表達(dá)式。詢結(jié)果中的字段及需計算的表達(dá)式。n設(shè)置聯(lián)接設(shè)置聯(lián)接(“聯(lián)接聯(lián)接”選項卡)選項卡)確定匹配多表的聯(lián)接表確定
5、匹配多表的聯(lián)接表達(dá)式達(dá)式n設(shè)置篩選條件設(shè)置篩選條件(“篩選篩選”選項卡)選項卡) 確定查詢條件。確定查詢條件。n排序(排序(“排序依據(jù)排序依據(jù)”選項卡)選項卡) 決定查詢輸出結(jié)果時,決定查詢輸出結(jié)果時,記錄或行的順序記錄或行的順序n分組(分組(“分組依據(jù)分組依據(jù)”選項卡)選項卡) 分組的作用可將一組分組的作用可將一組類似的記錄壓縮成一個記錄,主要用于計算。類似的記錄壓縮成一個記錄,主要用于計算。n其他其他(“雜項雜項”選項卡)選項卡) 重復(fù)記錄處理、結(jié)果記錄范重復(fù)記錄處理、結(jié)果記錄范圍等圍等n設(shè)置輸出的方式設(shè)置輸出的方式瀏覽、臨時表、表、圖形、屏幕、報表、標(biāo)簽等瀏覽、臨時表、表、圖形、屏幕、報
6、表、標(biāo)簽等上一頁下一頁退 出6 66/5/20226/5/2022n查詢設(shè)計器舉例查詢設(shè)計器舉例單表查詢單表查詢例例1:查詢成績表中成績在:查詢成績表中成績在80分(含分(含80)以上的課)以上的課程代號、課程名稱、學(xué)生學(xué)號和成績,按課程代號升程代號、課程名稱、學(xué)生學(xué)號和成績,按課程代號升序排序,課程代號相同再按成績降序排序。序排序,課程代號相同再按成績降序排序。1. 打開查詢設(shè)計器打開查詢設(shè)計器(項目管理器項目管理器|CREATE QUERY)添加表或視圖添加表或視圖:添加表添加表CJ: FROM子句子句2. 定義輸出內(nèi)容定義輸出內(nèi)容(“字段字段”選項卡選項卡): SELECT 子句子句n字
7、段字段n表達(dá)式(表達(dá)式(AS 別名)別名)盡量用生成器盡量用生成器(尤其函數(shù)名尤其函數(shù)名)上一頁下一頁退 出7 76/5/20226/5/20223. 設(shè)置篩選條件設(shè)置篩選條件(WHERE子句子句)cj.cj=80條件類型條件類型說明說明=指定字段值等于右邊的實例指定字段值等于右邊的實例 Like指定字段與實例文本相匹配。如,指定字段與實例文本相匹配。如,“Js.gh like A”與來自與來自 A0001和和A0002 等的記錄相匹配等的記錄相匹配 =指定字段與實例文本必須逐字符指定字段與實例文本必須逐字符完全完全匹配匹配 (=)指定字段大于(大于或等于)實例文本的值指定字段大于(大于或等于
8、)實例文本的值 (=)指定字段小于(小于或等于)實例文本的值指定字段小于(小于或等于)實例文本的值 Is Null指定字段包含指定字段包含null 值值 Between指定字段大于等于示例文本中的低值并小于等于示例文本中的高指定字段大于等于示例文本中的低值并小于等于示例文本中的高值。實例文本中的這兩個值用逗號隔開。如值。實例文本中的這兩個值用逗號隔開。如 :“Between( JS.CSRQ,01/01/1950,01/01/1960)”與出生日與出生日期在期在1950年年1月月1日至日至1960年年1月月1日的教師記錄相匹配日的教師記錄相匹配 IN指定字段必須與實例文本中逗號分隔的幾個樣本中
9、的一個相匹配指定字段必須與實例文本中逗號分隔的幾個樣本中的一個相匹配 上一頁下一頁退 出8 86/5/20226/5/20224. 設(shè)置排序依據(jù)設(shè)置排序依據(jù)(ORDER BY 子句)升序升序/降序降序優(yōu)先權(quán)優(yōu)先權(quán)查看SQL5. 設(shè)置分組依據(jù)設(shè)置分組依據(jù)(GROUP BY 子句) 分組分組: 將數(shù)據(jù)源中一組相關(guān)的記錄運算成將數(shù)據(jù)源中一組相關(guān)的記錄運算成一個查詢記錄輸出,這樣就可以在查詢運行一個查詢記錄輸出,這樣就可以在查詢運行中完成基于數(shù)據(jù)源的一組記錄的統(tǒng)計計算中完成基于數(shù)據(jù)源的一組記錄的統(tǒng)計計算上一頁下一頁退 出9 96/5/20226/5/2022按系名分組按系名分組:把所有系名相同的記錄壓
10、縮把所有系名相同的記錄壓縮成一個記錄成一個記錄幾個合計函數(shù)幾個合計函數(shù)計數(shù)計數(shù)COUNT() 求和求和SUM() 合計函數(shù)合計函數(shù)求平均函數(shù)求平均函數(shù)AVG()n 查看查看SQLn 分組結(jié)果的篩選條件分組結(jié)果的篩選條件GROUP BY 子句的同時使用子句的同時使用HAVING上一頁下一頁退 出10106/5/20226/5/20226. 其他設(shè)置其他設(shè)置n是否允許重復(fù)記錄是否允許重復(fù)記錄n結(jié)果的記錄范圍(需排序配合)結(jié)果的記錄范圍(需排序配合)7. 運行查詢運行查詢n“運行運行”按鈕按鈕n“查詢查詢”菜單中的菜單中的“運行查詢運行查詢”nDO 命令(命令(DO xijsgz. qpr)上一頁下
11、一頁退 出11116/5/20226/5/20228. 選擇輸出類型選擇輸出類型(INTO 子句)輸出去向類型輸出去向類型說說 明明瀏覽瀏覽(無無 INTO)在在“瀏覽瀏覽”窗口中顯示查詢結(jié)果窗口中顯示查詢結(jié)果(默認(rèn)默認(rèn))臨時表臨時表(INTO CURSOR)將查詢結(jié)果存貯在一張命名的臨時只讀表將查詢結(jié)果存貯在一張命名的臨時只讀表中,臨時表只存在于內(nèi)存中,當(dāng)臨時表被中,臨時表只存在于內(nèi)存中,當(dāng)臨時表被關(guān)閉時,表將從內(nèi)存中刪除關(guān)閉時,表將從內(nèi)存中刪除表表(INTO TABLE)使查詢結(jié)果保存為一個表文件,表文件將使查詢結(jié)果保存為一個表文件,表文件將永久地保存在磁盤上永久地保存在磁盤上圖形圖形使查
12、詢結(jié)果可用于使查詢結(jié)果可用于 Microsoft Graph應(yīng)用程序應(yīng)用程序屏幕屏幕(TO SCREEN)在在VFP主窗口或當(dāng)前活動輸出窗口中顯示查詢結(jié)果主窗口或當(dāng)前活動輸出窗口中顯示查詢結(jié)果報表報表(REPORT FORM)將輸出送到一個報表文件(將輸出送到一個報表文件(.FRX)標(biāo)簽標(biāo)簽(LABEL FORM)將輸出送到一個標(biāo)簽文件(將輸出送到一個標(biāo)簽文件(.LBX)上一頁下一頁退 出12126/5/20226/5/2022n練習(xí)一:練習(xí)一:查詢成績表查詢成績表cj中各個學(xué)生的課程中各個學(xué)生的課程總分及平均成績,要求查詢輸出學(xué)號總分及平均成績,要求查詢輸出學(xué)號xh、課程代碼課程代碼kcdm
13、、總分及平均成績,查詢、總分及平均成績,查詢結(jié)果按總分由高到底的排列。結(jié)果按總分由高到底的排列。數(shù)據(jù)源:數(shù)據(jù)源:CJ.DBF ; 聯(lián)接:聯(lián)接:選定字段:選定字段:xh,kcdm,sum (CJ.cj), AVE(CJ.cj) 排序依據(jù):排序依據(jù):總分總分分組依據(jù):分組依據(jù):xh上一頁下一頁退 出13136/5/20226/5/20223、創(chuàng)建多表查詢、創(chuàng)建多表查詢n多表查詢與單表查詢的不同:多表查詢與單表查詢的不同:n查詢的數(shù)據(jù)源為查詢的數(shù)據(jù)源為兩個以上兩個以上的表或視圖的表或視圖n多張表之間需要建立多張表之間需要建立聯(lián)接條件聯(lián)接條件1. 1. 聯(lián)接的概念聯(lián)接的概念聯(lián)接和聯(lián)接條件聯(lián)接和聯(lián)接條件
14、聯(lián)接:查詢或視圖的一個數(shù)據(jù)操作,通過公共字段聯(lián)接相關(guān)表或視圖聯(lián)接結(jié)果:形成一個新的單表(只讀、暫時、用以建立查詢只讀、暫時、用以建立查詢) 條件聯(lián)接: 無條件聯(lián)接:多表交叉組合無條件聯(lián)接:多表交叉組合,形成的新紀(jì)錄數(shù)是多張表記錄數(shù)形成的新紀(jì)錄數(shù)是多張表記錄數(shù)的乘積的乘積. 條件聯(lián)接條件聯(lián)接:即按聯(lián)接條件將多表紀(jì)錄生成一個即按聯(lián)接條件將多表紀(jì)錄生成一個新單表新單表紀(jì)錄紀(jì)錄 聯(lián)接條件:在多表聯(lián)接產(chǎn)生新表紀(jì)錄時聯(lián)接條件:在多表聯(lián)接產(chǎn)生新表紀(jì)錄時,必須限定構(gòu)成臨時新必須限定構(gòu)成臨時新表紀(jì)錄的條件表紀(jì)錄的條件,這樣的限定條件便是聯(lián)接條件這樣的限定條件便是聯(lián)接條件.上一頁下一頁退 出14146/5/202
15、26/5/2022聯(lián)接類型聯(lián)接類型內(nèi)聯(lián)接內(nèi)聯(lián)接,左聯(lián)接左聯(lián)接,右聯(lián)接右聯(lián)接,完全聯(lián)接完全聯(lián)接上一頁下一頁退 出15156/5/20226/5/20223、創(chuàng)建多表查詢、創(chuàng)建多表查詢2. 如何創(chuàng)建多表查詢?nèi)绾蝿?chuàng)建多表查詢 n打開查詢設(shè)計器打開查詢設(shè)計器n向查詢中添加多張表向查詢中添加多張表 - “添加表或視圖添加表或視圖”對話框?qū)υ捒颉安樵冊O(shè)計器查詢設(shè)計器”工具欄工具欄添加表添加表查詢菜單查詢菜單添加表添加表快捷菜單快捷菜單添加表添加表n設(shè)置表之間的聯(lián)接條件設(shè)置表之間的聯(lián)接條件 如果新添加的表與已存在的表之間在數(shù)據(jù)庫中已經(jīng)如果新添加的表與已存在的表之間在數(shù)據(jù)庫中已經(jīng)建立建立永久性關(guān)系永久性關(guān)系,
16、則系統(tǒng)將以該永久性關(guān)系作為默認(rèn)的,則系統(tǒng)將以該永久性關(guān)系作為默認(rèn)的聯(lián)接條件聯(lián)接條件上一頁下一頁退 出16166/5/20226/5/2022 如果新添加的表與已存在的表之間在數(shù)據(jù)庫中沒有建如果新添加的表與已存在的表之間在數(shù)據(jù)庫中沒有建立永久性關(guān)系,但兩表有立永久性關(guān)系,但兩表有同名字段同名字段,則系統(tǒng)將以兩表的,則系統(tǒng)將以兩表的同名字段作為默認(rèn)的聯(lián)接條件。同名字段作為默認(rèn)的聯(lián)接條件。即系統(tǒng)會打開即系統(tǒng)會打開“聯(lián)接條件聯(lián)接條件”對話框,并以兩個表的同名對話框,并以兩個表的同名字段作為默認(rèn)的聯(lián)接條件字段作為默認(rèn)的聯(lián)接條件 如果新添加的表與已存在的表之間在數(shù)據(jù)庫中沒有建如果新添加的表與已存在的表之間
17、在數(shù)據(jù)庫中沒有建立永久性關(guān)系,且兩表沒有同名字段,則系統(tǒng)沒有默認(rèn)立永久性關(guān)系,且兩表沒有同名字段,則系統(tǒng)沒有默認(rèn)的聯(lián)接條件。的聯(lián)接條件。即如果所有的表中都沒有同名字段,則即如果所有的表中都沒有同名字段,則“聯(lián)接條件聯(lián)接條件”對對話框中的聯(lián)接條件為空白。此時可以創(chuàng)建其他的聯(lián)接話框中的聯(lián)接條件為空白。此時可以創(chuàng)建其他的聯(lián)接 如果按如果按“取消取消”按鈕,將不建立任何聯(lián)接按鈕,將不建立任何聯(lián)接 自動默認(rèn)聯(lián)接類型為:內(nèi)部連接自動默認(rèn)聯(lián)接類型為:內(nèi)部連接上一頁下一頁退 出17176/5/20226/5/2022n建立聯(lián)接條件的方法建立聯(lián)接條件的方法對于已存在于查詢中的表或視圖,可以拖動一張對于已存在于查
18、詢中的表或視圖,可以拖動一張表表 中的字段到另一張表中的相應(yīng)字段上建立聯(lián)接條件中的字段到另一張表中的相應(yīng)字段上建立聯(lián)接條件“查詢設(shè)計器查詢設(shè)計器”工具欄工具欄/添加聯(lián)接添加聯(lián)接“查詢設(shè)計器查詢設(shè)計器”/“聯(lián)接聯(lián)接”選項卡選項卡/插入插入 對于已存在的聯(lián)接,在查詢設(shè)計器對于已存在的聯(lián)接,在查詢設(shè)計器的表顯示中將看到表之間的的表顯示中將看到表之間的聯(lián)接線聯(lián)接線;在;在“聯(lián)接聯(lián)接”選項卡中將看到選項卡中將看到一行對應(yīng)的條一行對應(yīng)的條件件。上一頁下一頁退 出18186/5/20226/5/2022n編輯聯(lián)接條件的方法編輯聯(lián)接條件的方法雙擊連接線雙擊連接線單擊單擊“聯(lián)接聯(lián)接”選項卡中的條件行前的按鈕選項
19、卡中的條件行前的按鈕“查詢設(shè)計器查詢設(shè)計器”/聯(lián)接選項卡聯(lián)接選項卡n刪除聯(lián)接條件的方法刪除聯(lián)接條件的方法則先單擊連接線,按【則先單擊連接線,按【Del】鍵即可將其刪除】鍵即可將其刪除聯(lián)接選項卡聯(lián)接選項卡/移去移去n聯(lián)接不必基于完全匹配的字段聯(lián)接不必基于完全匹配的字段 (LIKE,=,=480 AND =480 AND 最低分最低分=70=70保存查詢保存查詢xs_cj.qprxs_cj.qpr上一頁下一頁退 出20206/5/20226/5/20223.1 SELECT-SQL語句語句nSQL(Structured Query Language) 結(jié)構(gòu)化查詢語言,關(guān)系數(shù)據(jù)庫語言的標(biāo)準(zhǔn);結(jié)構(gòu)化查
20、詢語言,關(guān)系數(shù)據(jù)庫語言的標(biāo)準(zhǔn); VFP支持支持SQLnVFP的的SQL命令使用命令使用 Rushmore技術(shù)來優(yōu)化性技術(shù)來優(yōu)化性能能,并且一個并且一個SQL命令可代替多個命令可代替多個VFP命令。命令。nVFP支持的支持的SQL命令命令SELECT-SQL DELETE-SQLALTER TABLE-SQL INSERT-SQLCREATE CURSOR-SQL UPDATE-SQLCREATE TABLE-SQL上一頁下一頁退 出21216/5/20226/5/20223.2 SELECT-SQL命令命令nSELECT-SQL命令的語法格式命令的語法格式P121nSELECT-SQL命令舉例
21、命令舉例SELECT Js.ximing , COUNT(Js.gh) , ; SUM(Js.jbgz) , AVG(Js.jbgz); & “字段字段”選項卡選項卡FROM jxgl!js; & 數(shù)據(jù)源數(shù)據(jù)源WHERE js.ximing 外語系外語系; OR js.ximing “中文系中文系”; & “篩選篩選”選項卡選項卡GROUP BY js.ximing; & “分組分組”選項卡選項卡ORDER BY 4 DESC & “排序依據(jù)排序依據(jù)”選項卡選項卡上一頁下一頁退 出22226/5/20226/5/2022n 查看一個查詢的查看一個查詢的SELECT-SQLSELECT-SQL語
22、句語句 1 1)“查詢設(shè)計器查詢設(shè)計器”窗口窗口查看查看SQLSQL(只讀只讀) 2 2)命令窗口)命令窗口 TYPE TYPE命令命令主窗口顯示主窗口顯示 如:如: TYPE TYPE 統(tǒng)計統(tǒng)計.QPR.QPR 3 3)命令窗口)命令窗口 MODIFY COMMAND MODIFY COMMAND 或者或者M(jìn)ODIFY FILE MODIFY FILE 命令命令 編輯窗口顯示(編輯窗口顯示( SQLSQL內(nèi)容可編輯更改)內(nèi)容可編輯更改) 如:如: MODIFY COMMAND 統(tǒng)計統(tǒng)計.QPR如:如: MODIFY FILE 統(tǒng)計統(tǒng)計.QPRn 直接編寫直接編寫SELECT-SQL語句創(chuàng)建查
23、詢語句創(chuàng)建查詢在在命令窗口命令窗口或或程序編輯窗口程序編輯窗口輸入輸入SELECT-SQL語句語句上一頁下一頁退 出23236/5/20226/5/20223.3 SELECT-SQL3.3 SELECT-SQL應(yīng)用舉例應(yīng)用舉例1.1.基于單個表的查詢示例基于單個表的查詢示例 n顯示顯示JSJS表中所有教師的工號和姓名(從一個表中表中所有教師的工號和姓名(從一個表中選取兩個字段)選取兩個字段)SELECT js.gh,js.xm FROM SELECT js.gh,js.xm FROM sjksjk!js!jsn顯示顯示XSXS表中學(xué)號以表中學(xué)號以“99”99”開頭的學(xué)生情況。開頭的學(xué)生情況。
24、 SELECT SELECT * * FROM sjk!xs; FROM sjk!xs; WHERE like(99 WHERE like(99* *,xh),xh)上一頁下一頁退 出24246/5/20226/5/2022n從高到低顯示從高到低顯示CJCJ表中代號為表中代號為“01”01”課程的學(xué)課程的學(xué)生的學(xué)號和成績生的學(xué)號和成績SELECT cj.xh,cj.cj FROM sjk!cj;WHERE cj.kcdh=01;ORDER BY cj.cj DESC2. 2. 基于多個表的查詢示例基于多個表的查詢示例n顯示顯示XSXS和和ZYZY兩個表中三個字段兩個表中三個字段xh,xm, z
25、ydhxh,xm, zydh的內(nèi)容,并根據(jù)的內(nèi)容,并根據(jù)zydhzydh字段聯(lián)接兩個表。其中字段聯(lián)接兩個表。其中用到了兩個表的本地別名。用到了兩個表的本地別名。SELECT xs.xh,xs.xm,zy.zymc; FROM sjk!xs,sjk!zy;WHERE xs.zydh = zy.zydh上一頁下一頁退 出25256/5/20226/5/2022n顯示顯示CJCJ表中有不及格成績的學(xué)生的表中有不及格成績的學(xué)生的xhxh和和xm,xm,多門不及格者顯示一次且。多門不及格者顯示一次且。SELECT DISTINCT cj.xh,xs.xm; FROM sjk!cj,sjk!xs; WHE
26、RE cj.cj60; AND cj.xh = xs.xhn上述查詢僅顯示開始的上述查詢僅顯示開始的6 6條記錄條記錄SELECT DISTINCT Top 6 cj.xh,xs.xm; FROM sjk!cj,sjk!xs; WHERE cj.cj60 AND cj.xh = xs.xh; ORDER BY 1上一頁下一頁退 出26266/5/20226/5/20223. 3. 含有計算字段的查詢含有計算字段的查詢n顯示顯示CJCJ表中的課程代號及最高分表中的課程代號及最高分 SELECT cj.kcdh, MAX(cj.cj) as; 最高分最高分 FROM sjk!cj; GROUP B
27、Y kcdhn查詢每門課程的課程代號和名稱以及最高分,查詢每門課程的課程代號和名稱以及最高分,并把查詢結(jié)果保存到并把查詢結(jié)果保存到kc_maxcj.dbfkc_maxcj.dbf表文件中表文件中SELECT cj.kcdh,kc.kcm,max(cj.cj);as最高分最高分 FROM sjk!cj,sjk!kc; WHERE cj.kcdh=kc.kcdh; GROUP BY cj.kcdh; INTO TABLE kc_maxcj上一頁下一頁退 出27276/5/20226/5/2022select 成績成績.kcdh,kc1.kcm,;max(成績成績.cj) as “最高最高;from
28、 jxgl1!成績成績,jxgl1!kc1;where 成績成績.kcdh=kc1.kcdh;group by 成績成績.kcdh4.4.子查詢示例子查詢示例 顯示顯示JS表中已擔(dān)任課程教師的姓名和系名。表中已擔(dān)任課程教師的姓名和系名。SELECT js.xdh,js.xm; FROM sjk!js; WHERE js.gh in (SELECT rk.gh; FROM sjk!rk)上一頁下一頁退 出28286/5/20226/5/20225.5.組合查詢示例組合查詢示例 n查詢?nèi)熒麊?。要求如果是教師必須注明查詢?nèi)熒麊?。要求如果是教師必須注明“教師教師”,結(jié),結(jié)果中包含四個列:系
29、名、類別、姓名和性別,并按系名排序。果中包含四個列:系名、類別、姓名和性別,并按系名排序。SELECT js.xdh,教師 AS 類別,js.xm,js.xb FROM sjk!js;UNION;SELECT xs.xdh,學(xué)生 AS 類別,xs.xm,xs.xb FROM sjk!xs;ORDER BY 1上一頁下一頁退 出29296/5/20226/5/2022n查詢各系科教師工資總額、各系科每個教師的工資以及全校所有教師工資總查詢各系科教師工資總額、各系科每個教師的工資以及全校所有教師工資總額。要求結(jié)果中包含三個列:系名、姓名和工資,并按系名排序。額。要求結(jié)果中包含三個列:系名、姓名和工
30、資,并按系名排序。SELECT Xim.ximing AS 系名系名, SPACE(8) as 姓名姓名, SUM(Gz.jbgz) as 工資工資 FROM sjk!xim INNER JOIN sjk!js; INNER JOIN sjk!gz ; ON Js.gh = Gz.gh ; ON Xim.xdh = Js.xdh; GROUP BY Xim.ximing;UNION;SELECT Xim.ximing AS 系名系名, Js.xm AS 姓名姓名, Gz.jbgz AS 工資工資; FROM sjk!xim INNER JOIN sjk!js; INNER JOIN sjk!g
31、z ; ON Js.gh = Gz.gh ; ON Xim.xdh = Js.xdh;UNION;SELECT 總額總額+ SPACE(14) as 系名系名, SPACE(8) as 姓名姓名,; SUM(Gz.jbgz) as 工資工資; FROM sjk!xim INNER JOIN sjk!js; INNER JOIN sjk!gz ; ON Js.gh = Gz.gh ; ON Xim.xdh = Js.xdh; ORDER BY 1上一頁下一頁退 出30306/5/20226/5/2022 視圖是從一個或多個數(shù)據(jù)表中導(dǎo)出的視圖是從一個或多個數(shù)據(jù)表中導(dǎo)出的“表表”。它與固。它與固定存
32、放數(shù)據(jù)的庫表不同:視圖中的數(shù)據(jù)是基于源數(shù)據(jù)表的定存放數(shù)據(jù)的庫表不同:視圖中的數(shù)據(jù)是基于源數(shù)據(jù)表的動態(tài)數(shù)據(jù)集合,它可以使數(shù)據(jù)暫時從數(shù)據(jù)源中分離出來,動態(tài)數(shù)據(jù)集合,它可以使數(shù)據(jù)暫時從數(shù)據(jù)源中分離出來,因此可以把它看作是一個因此可以把它看作是一個“虛表虛表”。視圖是不能單獨存在。視圖是不能單獨存在的,它是依賴于某一數(shù)據(jù)庫而存在的。只有打開與視圖相的,它是依賴于某一數(shù)據(jù)庫而存在的。只有打開與視圖相關(guān)的數(shù)據(jù)庫才能創(chuàng)建和使用視圖。關(guān)的數(shù)據(jù)庫才能創(chuàng)建和使用視圖。 4.4 視圖的創(chuàng)建和使用視圖的創(chuàng)建和使用 視圖可以增強數(shù)據(jù)的視圖可以增強數(shù)據(jù)的共享性共享性,保證不同的用戶在使用同一,保證不同的用戶在使用同一個數(shù)
33、據(jù)庫時,選擇各自最需要的數(shù)據(jù)源;視圖可以增強數(shù)據(jù)的個數(shù)據(jù)庫時,選擇各自最需要的數(shù)據(jù)源;視圖可以增強數(shù)據(jù)的安全性,安全性,保證用戶只對與自己相關(guān)的數(shù)據(jù)進(jìn)行操作。由于在保證用戶只對與自己相關(guān)的數(shù)據(jù)進(jìn)行操作。由于在Visual FoxPro Visual FoxPro 系統(tǒng)環(huán)境下,允許使用多個關(guān)聯(lián)的表建立多表系統(tǒng)環(huán)境下,允許使用多個關(guān)聯(lián)的表建立多表視圖,這不僅使多個表間建立了相互聯(lián)系,而且提高了數(shù)據(jù)的視圖,這不僅使多個表間建立了相互聯(lián)系,而且提高了數(shù)據(jù)的利用率利用率,豐富了數(shù)據(jù)的內(nèi)容。雖然視圖是一個,豐富了數(shù)據(jù)的內(nèi)容。雖然視圖是一個“虛表虛表”,但是,但是可以利用視圖可以利用視圖更新源數(shù)據(jù)表更新源數(shù)
34、據(jù)表中的數(shù)據(jù)。中的數(shù)據(jù)。 根據(jù)視圖數(shù)據(jù)的來源不同,視圖可以分為本地視根據(jù)視圖數(shù)據(jù)的來源不同,視圖可以分為本地視圖和遠(yuǎn)程視圖。圖和遠(yuǎn)程視圖。上一頁下一頁退 出31316/5/20226/5/2022n比較比較查詢:查詢:只讀,生成新文件,不是數(shù)據(jù)庫的組成部分,只讀,生成新文件,不是數(shù)據(jù)庫的組成部分,有多種輸出方式,不可以作為新的數(shù)據(jù)源有多種輸出方式,不可以作為新的數(shù)據(jù)源視圖:視圖:讀寫,不生成新文件,是數(shù)據(jù)庫的組成部分,讀寫,不生成新文件,是數(shù)據(jù)庫的組成部分,只有一種輸出方式,只有一種輸出方式,可更新源數(shù)據(jù)表可更新源數(shù)據(jù)表,也可以作為新,也可以作為新的數(shù)據(jù)源的數(shù)據(jù)源n定義定義視圖:數(shù)據(jù)庫的一個組
35、成部分,是基于源數(shù)據(jù)的視圖:數(shù)據(jù)庫的一個組成部分,是基于源數(shù)據(jù)的可更可更新新的動態(tài)數(shù)據(jù)集合,是一個的動態(tài)數(shù)據(jù)集合,是一個虛表虛表(兼有表和查詢的特兼有表和查詢的特點點)基表(基表(base table):視圖中的源數(shù)據(jù)表。:視圖中的源數(shù)據(jù)表。n分類分類本地視圖:使用本地視圖:使用VFPSQL語法從語法從視圖或表視圖或表中選擇信息中選擇信息遠(yuǎn)程視圖:使用遠(yuǎn)程遠(yuǎn)程視圖:使用遠(yuǎn)程SQL語法從語法從遠(yuǎn)程遠(yuǎn)程ODBC數(shù)據(jù)源表數(shù)據(jù)源表(例:(例:ACCESS,EXCEL)中選擇信息中選擇信息 上一頁下一頁退 出32326/5/20226/5/20221 創(chuàng)建本地視圖創(chuàng)建本地視圖n使用視圖設(shè)計器使用視圖設(shè)計
36、器n“項目管理器項目管理器”-選中數(shù)據(jù)庫選中數(shù)據(jù)庫- -選擇選擇“本地視圖本地視圖”-選選“新建新建”n視圖設(shè)計器與查詢設(shè)計器的不同:視圖設(shè)計器與查詢設(shè)計器的不同:增加了一個增加了一個“更新條更新條件件”選項卡選項卡n使用使用CREATE SQL VIEW 命令命令 條件:對應(yīng)數(shù)據(jù)庫打開條件:對應(yīng)數(shù)據(jù)庫打開格式:格式:CREATE SQL VIEW 視圖名;視圖名; AS SELECT-SQL 語句語句例例1:CREATE SQL VIEW js_view AS SELECT * FROM sjk!JS例例2:CSQL=“SELECT * FROM sjk!JS”(字符型變量)(字符型變量)C
37、REATE SQL VIEW JS_VIEW AS &CSQL(宏替換)宏替換)上一頁下一頁退 出33336/5/20226/5/20222 使用視圖更新源表數(shù)據(jù)使用視圖更新源表數(shù)據(jù)n再次與查詢比較:再次與查詢比較:視圖可以更新基表,而查詢不行視圖可以更新基表,而查詢不行1. 使表可更新:使表可更新:“更新條件更新條件”選項卡選項卡n在在“表表”下拉列表框中指定受設(shè)置影響的表下拉列表框中指定受設(shè)置影響的表n在在“字段名字段名”列表中列表中 選定表中的字段,至少應(yīng)選定表中的字段,至少應(yīng)設(shè)置一設(shè)置一個字段作為個字段作為“主關(guān)鍵字主關(guān)鍵字”及及“可更新字段可更新字段”n“發(fā)送發(fā)送SQL更新更新”復(fù)選
38、框中可以設(shè)置是否允許對基表復(fù)選框中可以設(shè)置是否允許對基表的更新,它是更新的主開關(guān)的更新,它是更新的主開關(guān)=DBSETPROP (“視圖視圖名名”,“View”,”SendUpdates”,.T. )2. 設(shè)置關(guān)鍵字段設(shè)置關(guān)鍵字段 VFP用關(guān)鍵字段來唯一標(biāo)識那些已在視圖中修改過用關(guān)鍵字段來唯一標(biāo)識那些已在視圖中修改過的源表的更新記錄。設(shè)置的源表的更新記錄。設(shè)置“關(guān)鍵字段關(guān)鍵字段”,可用來檢驗更可用來檢驗更新沖突新沖突上一頁下一頁退 出34346/5/20226/5/2022(1)指定可更新字段指定可更新字段 如果要設(shè)置給定表中部分或全部字段允許更新,如果要設(shè)置給定表中部分或全部字段允許更新,必須
39、在該表的所有字段中設(shè)置必須在該表的所有字段中設(shè)置一個關(guān)鍵字段一個關(guān)鍵字段n“關(guān)鍵關(guān)鍵”列:鑰匙形,將字段設(shè)置為關(guān)鍵字段列:鑰匙形,將字段設(shè)置為關(guān)鍵字段命令設(shè)置:命令設(shè)置:=DBSETPROP (“視圖名視圖名.字段名字段名”,“Feild”, ;“KeyField” ,.T. )n“更新更新”列:筆形,設(shè)置一個字段為可更新的列:筆形,設(shè)置一個字段為可更新的n“全部更新全部更新”:在一張已有關(guān)鍵字段表中的除該關(guān)鍵:在一張已有關(guān)鍵字段表中的除該關(guān)鍵字段外的所有字段均可設(shè)置為可更新字段外的所有字段均可設(shè)置為可更新命令設(shè)置:命令設(shè)置:=DBSETPROP (“視圖名視圖名.字段名字段名”,“Feild”, ;“Updatename” , “基表基表.字段名字段名” )上一頁下一頁退 出35356/5/20226/5/2022n 指定用指定用Updatable屬性進(jìn)行更新的字段屬性進(jìn)行更新的字段=DBSETPROP (“視圖名視圖名.字段名字段名”,“Feild”, ; “Updatable”,”T”) (2)控制如何檢查更新沖突控制如何檢查更新沖突n 若不同用戶同時更新基表數(shù)據(jù),當(dāng)發(fā)生時如何處理若不同用戶同時更新基表數(shù)據(jù),當(dāng)發(fā)生時如何處理? 使用使用“SQL WHERE”單選按鈕組設(shè)置更新檢查單選按鈕組設(shè)置更新檢查
溫馨提示
- 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
- 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
- 5. 人人文庫網(wǎng)僅提供信息存儲空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負(fù)責(zé)。
- 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 吉林省2024七年級數(shù)學(xué)上冊第1章有理數(shù)1.9有理數(shù)的乘法1.有理數(shù)的乘法法則課件新版華東師大版
- 重癥感染的診斷與治療
- 風(fēng)濕性心臟瓣膜病外科
- 護(hù)理病房交接班制度
- 彩色的花教案反思
- 寒風(fēng)中的人說課稿
- 春季安全教育及文明祭祀
- 日化解決方案
- 加油站計量市場分析報告
- 機械廠消防改造工程協(xié)議
- 2024年安徽交通控股集團(tuán)招聘筆試參考題庫含答案解析
- 軟件安全之惡意代碼機理與防護(hù)-武漢大學(xué)中國大學(xué)mooc課后章節(jié)答案期末考試題庫2023年
- GB/T 37356-2019色漆和清漆涂層目視評定的光照條件和方法
- GB/T 25744-2010鋼件滲碳淬火回火金相檢驗
- 【公開課課件】高考英語讀后續(xù)寫10
- 全國人工智能應(yīng)用技術(shù)技能大賽理論考試題庫大全-下(多選、判斷題匯總)
- 新版(七步法案例)PFMEA
- 疑難病例HELLP綜合征
- Tiptop管理員手冊
- 財務(wù)報告模版(向股東會、董事會)
- 指南與共識胃癌4K腹腔鏡手術(shù)操作標(biāo)準(zhǔn)專家共識(2020版)完整版
評論
0/150
提交評論