




版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進行舉報或認領
文檔簡介
1、1第四章第四章查詢和視圖查詢和視圖u查詢的創(chuàng)建和使用查詢的創(chuàng)建和使用u視圖的創(chuàng)建和使用視圖的創(chuàng)建和使用uSELECT-SQL語句語句上一頁下一頁退 出2 23/16/20223/16/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é)果送回源表中。
2、(結(jié)果可更新、變結(jié)果可更新、變動動)n VFP工具:工具:查詢設計器、視圖設計器查詢設計器、視圖設計器4.1 查詢和視圖概述上一頁下一頁退 出3 33/16/20223/16/20221、查詢的本質(zhì)、查詢的本質(zhì)n查詢查詢:向數(shù)據(jù)源發(fā)出檢索信息的請求向數(shù)據(jù)源發(fā)出檢索信息的請求,它設置一些它設置一些條件條件提提取特定的數(shù)據(jù)取特定的數(shù)據(jù)記錄記錄。其運行結(jié)果是一個基于表和視圖的。其運行結(jié)果是一個基于表和視圖的動態(tài)動態(tài)的數(shù)據(jù)集合。的數(shù)據(jù)集合。n數(shù)據(jù)源數(shù)據(jù)源:是一張或是一張或多張多張相關相關表表(自由表或庫表自由表或庫表)或視圖。或視圖。n查詢條件:查詢條件:要那些字段?那些記錄?按什么要求收集?要那些字
3、段?那些記錄?按什么要求收集?n查詢實質(zhì):查詢實質(zhì):執(zhí)行一條執(zhí)行一條SELECT-SQL命令語句命令語句n保存保存: .QPR文件,實質(zhì)上保存的是對應的文件,實質(zhì)上保存的是對應的 SELECT-SQL語句語句(非查詢結(jié)果非查詢結(jié)果)。n查詢和視圖設計器在本質(zhì)上都是查詢和視圖設計器在本質(zhì)上都是SELECT-SQL命令命令的的設計方法。設計方法。 4.2 查詢的創(chuàng)建和使用查詢的創(chuàng)建和使用上一頁下一頁退 出4 43/16/20223/16/2022n創(chuàng)建查詢的方法:創(chuàng)建查詢的方法:使用查詢設計器使用查詢設計器CREATE QUERYCREATE QUERY 查詢文件名查詢文件名|?“項目管理器項目管
4、理器”數(shù)據(jù)數(shù)據(jù)”查詢查詢”新建新建”“文件文件”新建新建”或或“常用工具欄常用工具欄” “新新建建”編寫編寫SELECT-SQL語句語句(難難)2、使用查詢設計器建立查詢、使用查詢設計器建立查詢上一頁下一頁退 出5 53/16/20223/16/2022n建查詢的步驟建查詢的步驟n打開查詢設計器打開查詢設計器n添加表或視圖添加表或視圖(即該查詢所涉及的數(shù)據(jù)源)(即該查詢所涉及的數(shù)據(jù)源)n設置輸出字段(設置輸出字段(“字段字段”選項卡)選項卡) 選定需要包含到查選定需要包含到查詢結(jié)果中的字段及需計算的表達式。詢結(jié)果中的字段及需計算的表達式。n設置聯(lián)接設置聯(lián)接(“聯(lián)接聯(lián)接”選項卡)選項卡)確定匹配
5、多表的聯(lián)接表確定匹配多表的聯(lián)接表達式達式n設置篩選條件設置篩選條件(“篩選篩選”選項卡)選項卡) 確定查詢條件。確定查詢條件。n排序(排序(“排序依據(jù)排序依據(jù)”選項卡)選項卡) 決定查詢輸出結(jié)果時,決定查詢輸出結(jié)果時,記錄或行的順序記錄或行的順序n分組(分組(“分組依據(jù)分組依據(jù)”選項卡)選項卡) 分組的作用可將一組分組的作用可將一組類似的記錄壓縮成一個記錄,主要用于計算。類似的記錄壓縮成一個記錄,主要用于計算。n其他其他(“雜項雜項”選項卡)選項卡) 重復記錄處理、結(jié)果記錄范重復記錄處理、結(jié)果記錄范圍等圍等n設置輸出的方式設置輸出的方式瀏覽、臨時表、表、圖形、屏幕、報表、標簽等瀏覽、臨時表、表
6、、圖形、屏幕、報表、標簽等上一頁下一頁退 出6 63/16/20223/16/2022n查詢設計器舉例查詢設計器舉例單表查詢單表查詢例例1:查詢成績表中成績在:查詢成績表中成績在80分(含分(含80)以上的課)以上的課程代號、課程名稱、學生學號和成績,按課程代號升程代號、課程名稱、學生學號和成績,按課程代號升序排序,課程代號相同再按成績降序排序。序排序,課程代號相同再按成績降序排序。1. 打開查詢設計器打開查詢設計器(項目管理器項目管理器|CREATE QUERY)添加表或視圖添加表或視圖:添加表添加表CJ: FROM子句子句2. 定義輸出內(nèi)容定義輸出內(nèi)容(“字段字段”選項卡選項卡): SEL
7、ECT 子句子句n字段字段n表達式(表達式(AS 別名)別名)盡量用生成器盡量用生成器(尤其函數(shù)名尤其函數(shù)名)上一頁下一頁退 出7 73/16/20223/16/20223. 設置篩選條件設置篩選條件(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 83/16/20223/16/20224. 設置排序依據(jù)設置排序依據(jù)(ORDER BY 子句)升序升序/降序降序優(yōu)先權(quán)優(yōu)先權(quán)查看SQL5. 設置分組依據(jù)設置分組依據(jù)(GROUP BY 子句) 分組分組: 將數(shù)據(jù)源中一組相關的記錄運算成將數(shù)據(jù)源中一組相關的記錄運算成一個查詢記錄輸出,這樣就可以在查詢運行一個查詢記錄輸出,這樣就可以在查詢運行中完成基于數(shù)據(jù)源的一組記錄的統(tǒng)計計算中完成基于數(shù)據(jù)源的一組記錄的統(tǒng)計計算上一頁下一頁退 出9 93/16/20223/16/2022按系名分組按
10、系名分組:把所有系名相同的記錄壓縮把所有系名相同的記錄壓縮成一個記錄成一個記錄幾個合計函數(shù)幾個合計函數(shù)計數(shù)計數(shù)COUNT() 求和求和SUM() 合計函數(shù)合計函數(shù)求平均函數(shù)求平均函數(shù)AVG()n 查看查看SQLn 分組結(jié)果的篩選條件分組結(jié)果的篩選條件GROUP BY 子句的同時使用子句的同時使用HAVING上一頁下一頁退 出10103/16/20223/16/20226. 其他設置其他設置n是否允許重復記錄是否允許重復記錄n結(jié)果的記錄范圍(需排序配合)結(jié)果的記錄范圍(需排序配合)7. 運行查詢運行查詢n“運行運行”按鈕按鈕n“查詢查詢”菜單中的菜單中的“運行查詢運行查詢”nDO 命令(命令(D
11、O xijsgz. qpr)上一頁下一頁退 出11113/16/20223/16/20228. 選擇輸出類型選擇輸出類型(INTO 子句)輸出去向類型輸出去向類型說說 明明瀏覽瀏覽(無無 INTO)在在“瀏覽瀏覽”窗口中顯示查詢結(jié)果窗口中顯示查詢結(jié)果(默認默認)臨時表臨時表(INTO CURSOR)將查詢結(jié)果存貯在一張命名的臨時只讀表將查詢結(jié)果存貯在一張命名的臨時只讀表中,臨時表只存在于內(nèi)存中,當臨時表被中,臨時表只存在于內(nèi)存中,當臨時表被關閉時,表將從內(nèi)存中刪除關閉時,表將從內(nèi)存中刪除表表(INTO TABLE)使查詢結(jié)果保存為一個表文件,表文件將使查詢結(jié)果保存為一個表文件,表文件將永久地保
12、存在磁盤上永久地保存在磁盤上圖形圖形使查詢結(jié)果可用于使查詢結(jié)果可用于 Microsoft Graph應用程序應用程序屏幕屏幕(TO SCREEN)在在VFP主窗口或當前活動輸出窗口中顯示查詢結(jié)果主窗口或當前活動輸出窗口中顯示查詢結(jié)果報表報表(REPORT FORM)將輸出送到一個報表文件(將輸出送到一個報表文件(.FRX)標簽標簽(LABEL FORM)將輸出送到一個標簽文件(將輸出送到一個標簽文件(.LBX)上一頁下一頁退 出12123/16/20223/16/2022n練習一:練習一:查詢成績表查詢成績表cj中各個學生的課程中各個學生的課程總分及平均成績,要求查詢輸出學號總分及平均成績,要
13、求查詢輸出學號xh、課程代碼課程代碼kcdm、總分及平均成績,查詢、總分及平均成績,查詢結(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上一頁下一頁退 出13133/16/20223/16/20223、創(chuàng)建多表查詢、創(chuàng)建多表查詢n多表查詢與單表查詢的不同:多表查詢與單表查詢的不同:n查詢的數(shù)據(jù)源為查詢的數(shù)據(jù)源為兩個以上兩個以上的表或視圖的表或視圖n多張表之間需要建立多張表之間需要建立聯(lián)接條件聯(lián)接條件1. 1.
14、聯(lián)接的概念聯(lián)接的概念聯(lián)接和聯(lián)接條件聯(lián)接和聯(lián)接條件聯(lián)接:查詢或視圖的一個數(shù)據(jù)操作,通過公共字段聯(lián)接相關表或視圖聯(lián)接結(jié)果:形成一個新的單表(只讀、暫時、用以建立查詢只讀、暫時、用以建立查詢) 條件聯(lián)接: 無條件聯(lián)接:多表交叉組合無條件聯(lián)接:多表交叉組合,形成的新紀錄數(shù)是多張表記錄數(shù)形成的新紀錄數(shù)是多張表記錄數(shù)的乘積的乘積. 條件聯(lián)接條件聯(lián)接:即按聯(lián)接條件將多表紀錄生成一個即按聯(lián)接條件將多表紀錄生成一個新單表新單表紀錄紀錄 聯(lián)接條件:在多表聯(lián)接產(chǎn)生新表紀錄時聯(lián)接條件:在多表聯(lián)接產(chǎn)生新表紀錄時,必須限定構(gòu)成臨時新必須限定構(gòu)成臨時新表紀錄的條件表紀錄的條件,這樣的限定條件便是聯(lián)接條件這樣的限定條件便是聯(lián)
15、接條件.上一頁下一頁退 出14143/16/20223/16/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)接上一頁下一頁退 出15153/16/20223/16/20223、創(chuàng)建多表查詢、創(chuàng)建多表查詢2. 如何創(chuàng)建多表查詢?nèi)绾蝿?chuàng)建多表查詢 n打開查詢設計器打開查詢設計器n向查詢中添加多張表向查詢中添加多張表 - “添加表或視圖添加表或視圖”對話框?qū)υ捒颉安樵冊O計器查詢設計器”工具欄工具欄添加表添加表查詢菜單查詢菜單添加表添加表快捷菜單快捷菜單添加表添加表n設置表之間的聯(lián)接條件設置表之間的聯(lián)接條件 如果新添加的表與已存在的表之間在數(shù)據(jù)庫中已經(jīng)如果新添加的表與已
16、存在的表之間在數(shù)據(jù)庫中已經(jīng)建立建立永久性關系永久性關系,則系統(tǒng)將以該永久性關系作為默認的,則系統(tǒng)將以該永久性關系作為默認的聯(lián)接條件聯(lián)接條件上一頁下一頁退 出16163/16/20223/16/2022 如果新添加的表與已存在的表之間在數(shù)據(jù)庫中沒有建如果新添加的表與已存在的表之間在數(shù)據(jù)庫中沒有建立永久性關系,但兩表有立永久性關系,但兩表有同名字段同名字段,則系統(tǒng)將以兩表的,則系統(tǒng)將以兩表的同名字段作為默認的聯(lián)接條件。同名字段作為默認的聯(lián)接條件。即系統(tǒng)會打開即系統(tǒng)會打開“聯(lián)接條件聯(lián)接條件”對話框,并以兩個表的同名對話框,并以兩個表的同名字段作為默認的聯(lián)接條件字段作為默認的聯(lián)接條件 如果新添加的表與
17、已存在的表之間在數(shù)據(jù)庫中沒有建如果新添加的表與已存在的表之間在數(shù)據(jù)庫中沒有建立永久性關系,且兩表沒有同名字段,則系統(tǒng)沒有默認立永久性關系,且兩表沒有同名字段,則系統(tǒng)沒有默認的聯(lián)接條件。的聯(lián)接條件。即如果所有的表中都沒有同名字段,則即如果所有的表中都沒有同名字段,則“聯(lián)接條件聯(lián)接條件”對對話框中的聯(lián)接條件為空白。此時可以創(chuàng)建其他的聯(lián)接話框中的聯(lián)接條件為空白。此時可以創(chuàng)建其他的聯(lián)接 如果按如果按“取消取消”按鈕,將不建立任何聯(lián)接按鈕,將不建立任何聯(lián)接 自動默認聯(lián)接類型為:內(nèi)部連接自動默認聯(lián)接類型為:內(nèi)部連接上一頁下一頁退 出17173/16/20223/16/2022n建立聯(lián)接條件的方法建立聯(lián)接條
18、件的方法對于已存在于查詢中的表或視圖,可以拖動一張對于已存在于查詢中的表或視圖,可以拖動一張表表 中的字段到另一張表中的相應字段上建立聯(lián)接條件中的字段到另一張表中的相應字段上建立聯(lián)接條件“查詢設計器查詢設計器”工具欄工具欄/添加聯(lián)接添加聯(lián)接“查詢設計器查詢設計器”/“聯(lián)接聯(lián)接”選項卡選項卡/插入插入 對于已存在的聯(lián)接,在查詢設計器對于已存在的聯(lián)接,在查詢設計器的表顯示中將看到表之間的的表顯示中將看到表之間的聯(lián)接線聯(lián)接線;在;在“聯(lián)接聯(lián)接”選項卡中將看到選項卡中將看到一行對應的條一行對應的條件件。上一頁下一頁退 出18183/16/20223/16/2022n編輯聯(lián)接條件的方法編輯聯(lián)接條件的方法
19、雙擊連接線雙擊連接線單擊單擊“聯(lián)接聯(lián)接”選項卡中的條件行前的按鈕選項卡中的條件行前的按鈕“查詢設計器查詢設計器”/聯(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上一頁下一頁退 出20203/16/20223/16/20223.1 SELECT-SQL語句語句nSQL(Structured Que
20、ry Language) 結(jié)構(gòu)化查詢語言,關系數(shù)據(jù)庫語言的標準;結(jié)構(gòu)化查詢語言,關系數(shù)據(jù)庫語言的標準; VFP支持支持SQLnVFP的的SQL命令使用命令使用 Rushmore技術來優(yōu)化性技術來優(yōu)化性能能,并且一個并且一個SQL命令可代替多個命令可代替多個VFP命令。命令。nVFP支持的支持的SQL命令命令SELECT-SQL DELETE-SQLALTER TABLE-SQL INSERT-SQLCREATE CURSOR-SQL UPDATE-SQLCREATE TABLE-SQL上一頁下一頁退 出21213/16/20223/16/20223.2 SELECT-SQL命令命令nSELEC
21、T-SQL命令的語法格式命令的語法格式P121nSELECT-SQL命令舉例命令舉例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ù)”選項卡選項卡上一頁下一頁退
22、出22223/16/20223/16/2022n 查看一個查詢的查看一個查詢的SELECT-SQLSELECT-SQL語句語句 1 1)“查詢設計器查詢設計器”窗口窗口查看查看SQLSQL(只讀只讀) 2 2)命令窗口)命令窗口 TYPE TYPE命令命令主窗口顯示主窗口顯示 如:如: TYPE TYPE 統(tǒng)計統(tǒng)計.QPR.QPR 3 3)命令窗口)命令窗口 MODIFY COMMAND MODIFY COMMAND 或者或者MODIFY FILE MODIFY FILE 命令命令 編輯窗口顯示(編輯窗口顯示( SQLSQL內(nèi)容可編輯更改)內(nèi)容可編輯更改) 如:如: MODIFY COMMAN
23、D 統(tǒng)計統(tǒng)計.QPR如:如: MODIFY FILE 統(tǒng)計統(tǒng)計.QPRn 直接編寫直接編寫SELECT-SQL語句創(chuàng)建查詢語句創(chuàng)建查詢在在命令窗口命令窗口或或程序編輯窗口程序編輯窗口輸入輸入SELECT-SQL語句語句上一頁下一頁退 出23233/16/20223/16/20223.3 SELECT-SQL3.3 SELECT-SQL應用舉例應用舉例1.1.基于單個表的查詢示例基于單個表的查詢示例 n顯示顯示JSJS表中所有教師的工號和姓名(從一個表中表中所有教師的工號和姓名(從一個表中選取兩個字段)選取兩個字段)SELECT js.gh,js.xm FROM SELECT js.gh,js.
24、xm FROM sjksjk!js!jsn顯示顯示XSXS表中學號以表中學號以“99”99”開頭的學生情況。開頭的學生情況。 SELECT SELECT * * FROM sjk!xs; FROM sjk!xs; WHERE like(99 WHERE like(99* *,xh),xh)上一頁下一頁退 出24243/16/20223/16/2022n從高到低顯示從高到低顯示CJCJ表中代號為表中代號為“01”01”課程的學課程的學生的學號和成績生的學號和成績SELECT cj.xh,cj.cj FROM sjk!cj;WHERE cj.kcdh=01;ORDER BY cj.cj DESC2
25、. 2. 基于多個表的查詢示例基于多個表的查詢示例n顯示顯示XSXS和和ZYZY兩個表中三個字段兩個表中三個字段xh,xm, zydhxh,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上一頁下一頁退 出25253/16/20223/16/2022n顯示顯示CJCJ表中有不及格成績的學生的表中有不及格成績的學生的xhxh和和xm,xm,多門不及格者顯示一次
26、且。多門不及格者顯示一次且。SELECT DISTINCT cj.xh,xs.xm; FROM sjk!cj,sjk!xs; WHERE 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上一頁下一頁退 出26263/16/20223/16/20223. 3. 含有計算字段的查詢含有計算字段的查詢n顯示顯示CJCJ表中的課程代號及最高分表中
27、的課程代號及最高分 SELECT cj.kcdh, MAX(cj.cj) as; 最高分最高分 FROM sjk!cj; GROUP BY 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上一頁下一頁退 出2727
28、3/16/20223/16/2022select 成績成績.kcdh,kc1.kcm,;max(成績成績.cj) as “最高最高;from jxgl1!成績成績,jxgl1!kc1;where 成績成績.kcdh=kc1.kcdh;group by 成績成績.kcdh4.4.子查詢示例子查詢示例 顯示顯示JS表中已擔任課程教師的姓名和系名。表中已擔任課程教師的姓名和系名。SELECT js.xdh,js.xm; FROM sjk!js; WHERE js.gh in (SELECT rk.gh; FROM sjk!rk)上一頁下一頁退 出28283/16/20223/16/20225.5.組
29、合查詢示例組合查詢示例 n查詢?nèi)熒麊巍R笕绻墙處煴仨氉⒚鞑樵內(nèi)熒麊巍R笕绻墙處煴仨氉⒚鳌敖處熃處煛保Y(jié),結(jié)果中包含四個列:系名、類別、姓名和性別,并按系名排序。果中包含四個列:系名、類別、姓名和性別,并按系名排序。SELECT js.xdh,教師 AS 類別,js.xm,js.xb FROM sjk!js;UNION;SELECT xs.xdh,學生 AS 類別,xs.xm,xs.xb FROM sjk!xs;ORDER BY 1上一頁下一頁退 出29293/16/20223/16/2022n查詢各系科教師工資總額、各系科每個教師的工資以及全校所有教師工資總查詢各系科教師工
30、資總額、各系科每個教師的工資以及全校所有教師工資總額。要求結(jié)果中包含三個列:系名、姓名和工資,并按系名排序。額。要求結(jié)果中包含三個列:系名、姓名和工資,并按系名排序。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
31、AS 姓名姓名, Gz.jbgz AS 工資工資; FROM sjk!xim INNER JOIN sjk!js; INNER JOIN sjk!gz ; 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上一
32、頁下一頁退 出30303/16/20223/16/2022 視圖是從一個或多個數(shù)據(jù)表中導出的視圖是從一個或多個數(shù)據(jù)表中導出的“表表”。它與固。它與固定存放數(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ù)庫而存在的。只有打開與視圖相關的數(shù)據(jù)庫才能創(chuàng)建和使用視圖。關的數(shù)據(jù)庫才能創(chuàng)建和使用視
33、圖。 4.4 視圖的創(chuàng)建和使用視圖的創(chuàng)建和使用 視圖可以增強數(shù)據(jù)的視圖可以增強數(shù)據(jù)的共享性共享性,保證不同的用戶在使用同一,保證不同的用戶在使用同一個數(shù)據(jù)庫時,選擇各自最需要的數(shù)據(jù)源;視圖可以增強數(shù)據(jù)的個數(shù)據(jù)庫時,選擇各自最需要的數(shù)據(jù)源;視圖可以增強數(shù)據(jù)的安全性,安全性,保證用戶只對與自己相關的數(shù)據(jù)進行操作。由于在保證用戶只對與自己相關的數(shù)據(jù)進行操作。由于在Visual FoxPro Visual FoxPro 系統(tǒng)環(huán)境下,允許使用多個關聯(lián)的表建立多表系統(tǒng)環(huán)境下,允許使用多個關聯(lián)的表建立多表視圖,這不僅使多個表間建立了相互聯(lián)系,而且提高了數(shù)據(jù)的視圖,這不僅使多個表間建立了相互聯(lián)系,而且提高了數(shù)
34、據(jù)的利用率利用率,豐富了數(shù)據(jù)的內(nèi)容。雖然視圖是一個,豐富了數(shù)據(jù)的內(nèi)容。雖然視圖是一個“虛表虛表”,但是,但是可以利用視圖可以利用視圖更新源數(shù)據(jù)表更新源數(shù)據(jù)表中的數(shù)據(jù)。中的數(shù)據(jù)。 根據(jù)視圖數(shù)據(jù)的來源不同,視圖可以分為本地視根據(jù)視圖數(shù)據(jù)的來源不同,視圖可以分為本地視圖和遠程視圖。圖和遠程視圖。上一頁下一頁退 出31313/16/20223/16/2022n比較比較查詢:查詢:只讀,生成新文件,不是數(shù)據(jù)庫的組成部分,只讀,生成新文件,不是數(shù)據(jù)庫的組成部分,有多種輸出方式,不可以作為新的數(shù)據(jù)源有多種輸出方式,不可以作為新的數(shù)據(jù)源視圖:視圖:讀寫,不生成新文件,是數(shù)據(jù)庫的組成部分,讀寫,不生成新文件,是
35、數(shù)據(jù)庫的組成部分,只有一種輸出方式,只有一種輸出方式,可更新源數(shù)據(jù)表可更新源數(shù)據(jù)表,也可以作為新,也可以作為新的數(shù)據(jù)源的數(shù)據(jù)源n定義定義視圖:數(shù)據(jù)庫的一個組成部分,是基于源數(shù)據(jù)的視圖:數(shù)據(jù)庫的一個組成部分,是基于源數(shù)據(jù)的可更可更新新的動態(tài)數(shù)據(jù)集合,是一個的動態(tài)數(shù)據(jù)集合,是一個虛表虛表(兼有表和查詢的特兼有表和查詢的特點點)基表(基表(base table):視圖中的源數(shù)據(jù)表。:視圖中的源數(shù)據(jù)表。n分類分類本地視圖:使用本地視圖:使用VFPSQL語法從語法從視圖或表視圖或表中選擇信息中選擇信息遠程視圖:使用遠程遠程視圖:使用遠程SQL語法從語法從遠程遠程ODBC數(shù)據(jù)源表數(shù)據(jù)源表(例:(例:ACC
36、ESS,EXCEL)中選擇信息中選擇信息 上一頁下一頁退 出32323/16/20223/16/20221 創(chuàng)建本地視圖創(chuàng)建本地視圖n使用視圖設計器使用視圖設計器n“項目管理器項目管理器”-選中數(shù)據(jù)庫選中數(shù)據(jù)庫- -選擇選擇“本地視圖本地視圖”-選選“新建新建”n視圖設計器與查詢設計器的不同:視圖設計器與查詢設計器的不同:增加了一個增加了一個“更新條更新條件件”選項卡選項卡n使用使用CREATE SQL VIEW 命令命令 條件:對應數(shù)據(jù)庫打開條件:對應數(shù)據(jù)庫打開格式:格式:CREATE SQL VIEW 視圖名;視圖名; AS SELECT-SQL 語句語句例例1:CREATE SQL VI
37、EW js_view AS SELECT * FROM sjk!JS例例2:CSQL=“SELECT * FROM sjk!JS”(字符型變量)(字符型變量)CREATE SQL VIEW JS_VIEW AS &CSQL(宏替換)宏替換)上一頁下一頁退 出33333/16/20223/16/20222 使用視圖更新源表數(shù)據(jù)使用視圖更新源表數(shù)據(jù)n再次與查詢比較:再次與查詢比較:視圖可以更新基表,而查詢不行視圖可以更新基表,而查詢不行1. 使表可更新:使表可更新:“更新條件更新條件”選項卡選項卡n在在“表表”下拉列表框中指定受設置影響的表下拉列表框中指定受設置影響的表n在在“字段名字段名
38、”列表中列表中 選定表中的字段,至少應選定表中的字段,至少應設置一設置一個字段作為個字段作為“主關鍵字主關鍵字”及及“可更新字段可更新字段”n“發(fā)送發(fā)送SQL更新更新”復選框中可以設置是否允許對基表復選框中可以設置是否允許對基表的更新,它是更新的主開關的更新,它是更新的主開關=DBSETPROP (“視圖視圖名名”,“View”,”SendUpdates”,.T. )2. 設置關鍵字段設置關鍵字段 VFP用關鍵字段來唯一標識那些已在視圖中修改過用關鍵字段來唯一標識那些已在視圖中修改過的源表的更新記錄。設置的源表的更新記錄。設置“關鍵字段關鍵字段”,可用來檢驗更可用來檢驗更新沖突新沖突上一頁下一
39、頁退 出34343/16/20223/16/2022(1)指定可更新字段指定可更新字段 如果要設置給定表中部分或全部字段允許更新,如果要設置給定表中部分或全部字段允許更新,必須在該表的所有字段中設置必須在該表的所有字段中設置一個關鍵字段一個關鍵字段n“關鍵關鍵”列:鑰匙形,將字段設置為關鍵字段列:鑰匙形,將字段設置為關鍵字段命令設置:命令設置:=DBSETPROP (“視圖名視圖名.字段名字段名”,“Feild”, ;“KeyField” ,.T. )n“更新更新”列:筆形,設置一個字段為可更新的列:筆形,設置一個字段為可更新的n“全部更新全部更新”:在一張已有關鍵字段表中的除該關鍵:在一張已
40、有關鍵字段表中的除該關鍵字段外的所有字段均可設置為可更新字段外的所有字段均可設置為可更新命令設置:命令設置:=DBSETPROP (“視圖名視圖名.字段名字段名”,“Feild”, ;“Updatename” , “基表基表.字段名字段名” )上一頁下一頁退 出35353/16/20223/16/2022n 指定用指定用Updatable屬性進行更新的字段屬性進行更新的字段=DBSETPROP (“視圖名視圖名.字段名字段名”,“Feild”, ; “Updatable”,”T”) (2)控制如何檢查更新沖突控制如何檢查更新沖突n 若不同用戶同時更新基表數(shù)據(jù),當發(fā)生時如何處理若不同用戶同時更新基表數(shù)據(jù),當發(fā)生時如何處理? 使用使用“SQL WHERE”單選按鈕組設置更新檢查單選按鈕組設置更
溫馨提示
- 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. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 西安外國語大學《景觀設計基礎》2023-2024學年第一學期期末試卷
- 江蘇省南京玄武區(qū)2025屆初三3月聯(lián)合檢測試題(生物試題理)試題含解析
- 山西省晉中學市榆社縣2024-2025學年初三下學期期初自測化學試題含解析
- 重慶航天職業(yè)技術學院《能源動力測試技術》2023-2024學年第二學期期末試卷
- 江蘇省鹽城市東臺市2025年學生學業(yè)調(diào)研抽測試卷(第二次)化學試題含解析
- 吉林省梅河口五中2025年高中畢業(yè)班質(zhì)量檢查(II)生物試題含解析
- 山西醫(yī)科大學《通風與空調(diào)工程課程設計》2023-2024學年第二學期期末試卷
- 西安美術學院《基礎藥理學》2023-2024學年第二學期期末試卷
- 江西工程學院《機械與電氣安全》2023-2024學年第二學期期末試卷
- 云南省楚雄北浦中學2025屆初三大練習(一)數(shù)學試題含解析
- (高清版)JTG 5142-2019 公路瀝青路面養(yǎng)護技術規(guī)范
- 2024年4月自考00995商法(二)試題
- 沉管管節(jié)雙駁船騎吊沉放施工工法
- 醫(yī)務科工作制度及流程(全套)
- 2023-2024學年三年級下學期綜合實踐活動水果拼盤教案
- DBJ∕T15-232-2021 混凝土氯離子控制標準
- 2024年安全員C3證考試題庫附答案
- 村級財務審計工作輔導材料課件
- (新版)退役軍人事務員資格培訓考試題庫(單選題)
- 恩縣洼滯洪區(qū)建設工程環(huán)評
- 公車拍賣質(zhì)量保證措施
評論
0/150
提交評論