版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進行舉報或認(rèn)領(lǐng)
文檔簡介
第四章
查詢和視圖查詢的創(chuàng)建和使用視圖的創(chuàng)建和使用SELECT-SQL語句1查詢:從數(shù)據(jù)源(一張或多張表、視圖)中檢索或統(tǒng)計出符合條件的記錄數(shù)據(jù)。(結(jié)果是只讀的)視圖:從數(shù)據(jù)源中(一張或多張表、視圖)提取一組符合條件的記錄數(shù)據(jù),并可改變這些記錄的值,還可把更新結(jié)果送回源表中。(結(jié)果可更新、變動)VFP工具:查詢設(shè)計器、視圖設(shè)計器4.1查詢和視圖概述9/11/202321、查詢的本質(zhì)查詢:向數(shù)據(jù)源發(fā)出檢索信息的請求,它設(shè)置一些條件提取特定的數(shù)據(jù)記錄。其運行結(jié)果是一個基于表和視圖的動態(tài)的數(shù)據(jù)集合。數(shù)據(jù)源:是一張或多張相關(guān)表(自由表或庫表)或視圖。查詢條件:要那些字段?那些記錄?按什么要求收集?查詢實質(zhì):執(zhí)行一條SELECT-SQL命令語句保存:
.QPR文件,實質(zhì)上保存的是對應(yīng)的
SELECT-SQL語句(非查詢結(jié)果)。查詢和視圖設(shè)計器在本質(zhì)上都是SELECT-SQL命令的可視化(界面)設(shè)計方法。
4.2查詢的創(chuàng)建和使用9/11/20233創(chuàng)建查詢的方法:使用查詢設(shè)計器CREATEQUERY
[查詢文件名|?]“項目管理器”—”數(shù)據(jù)”—”查詢”—”新建”“文件”—”新建”或“常用工具欄”—“新建”編寫SELECT-SQL語句(難)2、使用查詢設(shè)計器建立查詢9/11/20234建查詢的步驟打開查詢設(shè)計器添加表或視圖(即該查詢所涉及的數(shù)據(jù)源)設(shè)置輸出字段(“字段”選項卡)—選定需要包含到查詢結(jié)果中的字段及需計算的表達式。設(shè)置聯(lián)接(“聯(lián)接”選項卡)—確定匹配多表的聯(lián)接表達式設(shè)置篩選條件(“篩選”選項卡)——確定查詢條件。排序(“排序依據(jù)”選項卡)——決定查詢輸出結(jié)果時,記錄或行的順序分組(“分組依據(jù)”選項卡)——分組的作用可將一組類似的記錄壓縮成一個記錄,主要用于計算。其他(“雜項”選項卡)—重復(fù)記錄處理、結(jié)果記錄范圍等設(shè)置輸出的方式瀏覽、臨時表、表、圖形、屏幕、報表、標(biāo)簽等9/11/20235查詢設(shè)計器舉例單表查詢例1:查詢成績表中成績在80分(含80)以上的課程代號、課程名稱、學(xué)生學(xué)號和成績,按課程代號升序排序,課程代號相同再按成績降序排序。1.打開查詢設(shè)計器(項目管理器|CREATEQUERY)添加表或視圖:添加表CJ:FROM子句2.定義輸出內(nèi)容(“字段”選項卡):SELECT子句字段表達式(AS別名)盡量用生成器(尤其函數(shù)名)9/11/202363.設(shè)置篩選條件(WHERE子句)cj.cj>=80條件類型說明=指定字段值等于右邊的實例Like指定字段與實例文本相匹配。如,“Js.ghlikeA”與來自A0001和A0002……等的記錄相匹配==指定字段與實例文本必須逐字符完全匹配>(>=)指定字段大于(大于或等于)實例文本的值<(<=)指定字段小于(小于或等于)實例文本的值IsNull指定字段包含null值Between指定字段大于等于示例文本中的低值并小于等于示例文本中的高值。實例文本中的這兩個值用逗號隔開。如:“Between(JS.CSRQ,{01/01/1950},{01/01/1960})”與出生日期在1950年1月1日至1960年1月1日的教師記錄相匹配IN指定字段必須與實例文本中逗號分隔的幾個樣本中的一個相匹配9/11/202374.設(shè)置排序依據(jù)(ORDERBY子句)升序/降序優(yōu)先權(quán)查看SQL5.設(shè)置分組依據(jù)(GROUP
BY
子句)
分組:將數(shù)據(jù)源中一組相關(guān)的記錄運算成一個查詢記錄輸出,這樣就可以在查詢運行中完成基于數(shù)據(jù)源的一組記錄的統(tǒng)計計算單表查詢9/11/20238按系名分組:把所有系名相同的記錄壓縮成一個記錄幾個合計函數(shù)計數(shù)COUNT()求和SUM()合計函數(shù)求平均函數(shù)AVG()查看SQL
分組結(jié)果的篩選條件GROUPBY子句的同時使用HAVING9/11/202396.其他設(shè)置是否允許重復(fù)記錄結(jié)果的記錄范圍(需排序配合)7.運行查詢“運行”按鈕“查詢”菜單中的“運行查詢”DO命令(DOxijsgz.qpr)9/11/2023108.選擇輸出類型(INTO
子句)輸出去向類型說明瀏覽(無INTO)在“瀏覽”窗口中顯示查詢結(jié)果(默認(rèn))臨時表(INTOCURSOR)將查詢結(jié)果存貯在一張命名的臨時只讀表中,臨時表只存在于內(nèi)存中,當(dāng)臨時表被關(guān)閉時,表將從內(nèi)存中刪除表(INTOTABLE)使查詢結(jié)果保存為一個表文件,表文件將永久地保存在磁盤上圖形使查詢結(jié)果可用于MicrosoftGraph應(yīng)用程序屏幕(TOSCREEN)在VFP主窗口或當(dāng)前活動輸出窗口中顯示查詢結(jié)果報表(REPORTFORM)將輸出送到一個報表文件(.FRX)標(biāo)簽(LABELFORM)將輸出送到一個標(biāo)簽文件(.LBX)9/11/202311練習(xí)一:查詢成績表cj中各個學(xué)生的課程總分及平均成績,要求查詢輸出學(xué)號xh、課程代碼kcdm、總分及平均成績,查詢結(jié)果按總分由高到底的排列。數(shù)據(jù)源:CJ.DBF;聯(lián)接:<無>選定字段:xh,kcdm,sum(CJ.cj),AVE(CJ.cj)排序依據(jù):總分分組依據(jù):xh9/11/2023123、創(chuàng)建多表查詢多表查詢與單表查詢的不同:查詢的數(shù)據(jù)源為兩個以上的表或視圖多張表之間需要建立聯(lián)接條件1.聯(lián)接的概念聯(lián)接和聯(lián)接條件聯(lián)接:查詢或視圖的一個數(shù)據(jù)操作,通過公共字段聯(lián)接相關(guān)表或視圖聯(lián)接結(jié)果:形成一個新的單表(只讀、暫時、用以建立查詢)條件聯(lián)接:
◎無條件聯(lián)接:多表交叉組合,形成的新紀(jì)錄數(shù)是多張表記錄數(shù)的乘積.
◎條件聯(lián)接:即按聯(lián)接條件將多表紀(jì)錄生成一個新單表紀(jì)錄
◎聯(lián)接條件:在多表聯(lián)接產(chǎn)生新表紀(jì)錄時,必須限定構(gòu)成臨時新表紀(jì)錄的條件,這樣的限定條件便是聯(lián)接條件.9/11/202313聯(lián)接類型內(nèi)聯(lián)接,左聯(lián)接,右聯(lián)接,完全聯(lián)接9/11/2023143、創(chuàng)建多表查詢2.如何創(chuàng)建多表查詢打開查詢設(shè)計器向查詢中添加多張表
-----“添加表或視圖”對話框“查詢設(shè)計器”工具欄——添加表查詢菜單——添加表快捷菜單——添加表設(shè)置表之間的聯(lián)接條件
如果新添加的表與已存在的表之間在數(shù)據(jù)庫中已經(jīng)建立永久性關(guān)系,則系統(tǒng)將以該永久性關(guān)系作為默認(rèn)的聯(lián)接條件9/11/202315
如果新添加的表與已存在的表之間在數(shù)據(jù)庫中沒有建立永久性關(guān)系,但兩表有同名字段,則系統(tǒng)將以兩表的同名字段作為默認(rèn)的聯(lián)接條件。即系統(tǒng)會打開“聯(lián)接條件”對話框,并以兩個表的同名字段作為默認(rèn)的聯(lián)接條件
如果新添加的表與已存在的表之間在數(shù)據(jù)庫中沒有建立永久性關(guān)系,且兩表沒有同名字段,則系統(tǒng)沒有默認(rèn)的聯(lián)接條件。即如果所有的表中都沒有同名字段,則“聯(lián)接條件”對話框中的聯(lián)接條件為空白。此時可以創(chuàng)建其他的聯(lián)接
如果按“取消”按鈕,將不建立任何聯(lián)接
自動默認(rèn)聯(lián)接類型為:內(nèi)部連接9/11/202316建立聯(lián)接條件的方法對于已存在于查詢中的表或視圖,可以拖動一張表中的字段到另一張表中的相應(yīng)字段上建立聯(lián)接條件“查詢設(shè)計器”工具欄/添加聯(lián)接“查詢設(shè)計器”/“聯(lián)接”選項卡/插入
對于已存在的聯(lián)接,在查詢設(shè)計器的表顯示中將看到表之間的聯(lián)接線;在“聯(lián)接”選項卡中將看到一行對應(yīng)的條件。9/11/202317編輯聯(lián)接條件的方法雙擊連接線單擊“聯(lián)接”選項卡中的條件行前的按鈕“查詢設(shè)計器”/聯(lián)接選項卡刪除聯(lián)接條件的方法則先單擊連接線,按【Del】鍵即可將其刪除聯(lián)接選項卡/移去聯(lián)接不必基于完全匹配的字段
(LIKE,==,>,<)聯(lián)接與篩選的聯(lián)系與區(qū)別9/11/2023183.多表查詢舉例例:查詢所有成績總分在480分以上,并且各門課程的成績不得低于70分的學(xué)生。要求在查詢結(jié)果中包含學(xué)生的學(xué)號、姓名、總分、平均分和最低分,并按照總分從高到低排列。選取表(XS,CJ)設(shè)置聯(lián)接(XS.xh=CJ.xh內(nèi)部聯(lián)接)選擇字段(XS.xh,XS.xm,SUM(CJ.cj),AVG(CJ.cj),MIN(cj.cj))排序依據(jù):SUM(CJ.cj),降序分組依據(jù):XS.xh;滿足條件:總分>=480AND最低分>=70保存查詢xs_cj.qpr9/11/2023193.1SELECT-SQL語句SQL(StructuredQueryLanguage)——結(jié)構(gòu)化查詢語言,關(guān)系數(shù)據(jù)庫語言的標(biāo)準(zhǔn);
VFP支持SQLVFP的SQL命令使用Rushmore技術(shù)來優(yōu)化性能,并且一個SQL命令可代替多個VFP命令。VFP支持的SQL命令SELECT-SQLDELETE-SQLALTERTABLE-SQLINSERT-SQLCREATECURSOR-SQLUPDATE-SQLCREATETABLE-SQL9/11/2023203.2SELECT-SQL命令SELECT-SQL命令的語法格式P121SELECT-SQL命令舉例SELECTJs.ximing,COUNT(Js.gh),;SUM(Js.jbgz),AVG(Js.jbgz);&&“字段”選項卡FROMjxgl!js;&&數(shù)據(jù)源WHEREjs.ximing<>"外語系";ORjs.ximing<>“中文系”;&&“篩選”選項卡GROUPBYjs.ximing;&&“分組”選項卡ORDERBY4DESC&&“排序依據(jù)”選項卡ALL/Distinct——指定查詢結(jié)果中有無重復(fù)的行TOPn[Percent]——限定查詢結(jié)果顯示的記錄數(shù)INTO及TO子句——指定在何處輸出查詢結(jié)果(瀏覽窗口、臨時表、數(shù)據(jù)表、屏幕、打印機等)9/11/202321查看一個查詢的SELECT-SQL語句
1)“查詢設(shè)計器”窗口—查看SQL(只讀)2)命令窗口—TYPE命令—主窗口顯示如:TYPE統(tǒng)計.QPR3)命令窗口—MODIFYCOMMAND或者MODIFYFILE命令——編輯窗口顯示(SQL內(nèi)容可編輯更改)
如:MODIFYCOMMAND統(tǒng)計.QPR如:MODIFYFILE統(tǒng)計.QPR直接編寫SELECT-SQL語句創(chuàng)建查詢在命令窗口或程序編輯窗口輸入SELECT-SQL語句9/11/2023223.3SELECT-SQL應(yīng)用舉例1.基于單個表的查詢示例
顯示JS表中所有教師的工號和姓名(從一個表中選取兩個字段)
SELECTjs.gh,js.xmFROMsjk!js顯示XS表中學(xué)號以“99”開頭的學(xué)生情況。SELECT*FROMsjk!xs;WHERElike("99*",xh)9/11/202323從高到低顯示CJ表中代號為“01”課程的學(xué)生的學(xué)號和成績
SELECTcj.xh,cj.cjFROMsjk!cj; WHEREcj.kcdh="01"; ORDERBYcj.cjDESC2.基于多個表的查詢示例顯示XS和ZY兩個表中三個字段xh,xm,zydh的內(nèi)容,并根據(jù)zydh字段聯(lián)接兩個表。其中用到了兩個表的本地別名。
SELECTxs.xh,xs.xm,zy.zymc;FROMsjk!xs,sjk!zy; WHERExs.zydh=zy.zydh9/11/202324顯示CJ表中有不及格成績的學(xué)生的xh和xm,多門不及格者顯示一次且。
SELECTDISTINCTcj.xh,xs.xm;FROMsjk!cj,sjk!xs;WHEREcj.cj<60;ANDcj.xh=xs.xh上述查詢僅顯示開始的6條記錄SELECTDISTINCTTop6cj.xh,xs.xm;FROMsjk!cj,sjk!xs;WHEREcj.cj<60ANDcj.xh=xs.xh;ORDERBY19/11/2023253.含有計算字段的查詢顯示CJ表中的課程代號及最高分
SELECTcj.kcdh,MAX(cj.cj)as;"最高分"FROMsjk!cj;GROUPBYkcdh查詢每門課程的課程代號和名稱以及最高分,并把查詢結(jié)果保存到kc_maxcj.dbf表文件中SELECTcj.kcdh,kc.kcm,max(cj.cj);as"最高分"FROMsjk!cj,sjk!kc;WHEREcj.kcdh=kc.kcdh;GROUPBYcj.kcdh;INTOTABLEkc_maxcj9/11/202326select成績.kcdh,kc1.kcm,;max(成績.cj)as“最高";fromjxgl1!成績,jxgl1!kc1;where成績.kcdh=kc1.kcdh;groupby成績.kcdh4.子查詢示例顯示JS表中已擔(dān)任課程教師的姓名和系名。
SELECTjs.xdh,js.xm;FROMsjk!js;WHEREjs.ghin(SELECTrk.gh;FROMsjk!rk)9/11/2023275.組合查詢示例
查詢?nèi)熒麊?。要求如果是教師必須注明“教師”,結(jié)果中包含四個列:系名、類別、姓名和性別,并按系名排序。SELECTjs.xdh,"教師"AS類別,js.xm,js.xbFROMsjk!js;UNION;SELECTxs.xdh,"學(xué)生"AS類別,xs.xm,xs.xbFROMsjk!xs;ORDERBY19/11/202328查詢各系科教師工資總額、各系科每個教師的工資以及全校所有教師工資總額。要求結(jié)果中包含三個列:系名、姓名和工資,并按系名排序。SELECTXim.ximingAS系名,SPACE(8)as姓名,SUM(Gz.jbgz)as工資FROMsjk!ximINNERJOINsjk!js;INNERJOINsjk!gz;ONJs.gh=Gz.gh;ONXim.xdh=Js.xdh;GROUPBYXim.ximing;UNION;SELECTXim.ximingAS系名,Js.xmAS姓名,Gz.jbgzAS工資;FROMsjk!ximINNERJOINsjk!js;INNERJOINsjk!gz;ONJs.gh=Gz.gh;ONXim.xdh=Js.xdh;UNION;SELECT"總額"+SPACE(14)as系名,SPACE(8)as姓名,;SUM(Gz.jbgz)as工資;FROMsjk!ximINNERJOINsjk!js;INNERJOINsjk!gz;ONJs.gh=Gz.gh;ONXim.xdh=Js.xdh;ORDERBY19/11/202329
視圖是從一個或多個數(shù)據(jù)表中導(dǎo)出的“表”。它與固定存放數(shù)據(jù)的庫表不同:視圖中的數(shù)據(jù)是基于源數(shù)據(jù)表的動態(tài)數(shù)據(jù)集合,它可以使數(shù)據(jù)暫時從數(shù)據(jù)源中分離出來,因此可以把它看作是一個“虛表”。視圖是不能單獨存在的,它是依賴于某一數(shù)據(jù)庫而存在的。只有打開與視圖相關(guān)的數(shù)據(jù)庫才能創(chuàng)建和使用視圖。
4.4視圖的創(chuàng)建和使用
視圖可以增強數(shù)據(jù)的共享性,保證不同的用戶在使用同一個數(shù)據(jù)庫時,選擇各自最需要的數(shù)據(jù)源;視圖可以增強數(shù)據(jù)的安全性,保證用戶只對與自己相關(guān)的數(shù)據(jù)進行操作。由于在VisualFoxPro系統(tǒng)環(huán)境下,允許使用多個關(guān)聯(lián)的表建立多表視圖,這不僅使多個表間建立了相互聯(lián)系,而且提高了數(shù)據(jù)的利用率,豐富了數(shù)據(jù)的內(nèi)容。雖然視圖是一個“虛表”,但是可以利用視圖更新源數(shù)據(jù)表中的數(shù)據(jù)。
根據(jù)視圖數(shù)據(jù)的來源不同,視圖可以分為本地視圖和遠程視圖。9/11/202330比較查詢:只讀,生成新文件,不是數(shù)據(jù)庫的組成部分,有多種輸出方式,不可以作為新的數(shù)據(jù)源視圖:讀寫,不生成新文件,是數(shù)據(jù)庫的組成部分,只有一種輸出方式,可更新源數(shù)據(jù)表,也可以作為新的數(shù)據(jù)源定義視圖:數(shù)據(jù)庫的一個組成部分,是基于源數(shù)據(jù)的可更新的動態(tài)數(shù)據(jù)集合,是一個虛表(兼有表和查詢的特點)基表(basetable):視圖中的源數(shù)據(jù)表。分類本地視圖:使用VFPSQL語法從視圖或表中選擇信息遠程視圖:使用遠程SQL語法從遠程ODBC數(shù)據(jù)源表(例:ACCESS,EXCEL)中選擇信息9/11/2023311創(chuàng)建本地視圖使用視圖設(shè)計器“項目管理器”-選中數(shù)據(jù)庫--選擇“本地視圖”-選“新建”視圖設(shè)計器與查詢設(shè)計器的不同:增加了一個“更新條件”選項卡使用CREATESQLVIEW命令
條件:對應(yīng)數(shù)據(jù)庫打開格式:CREATESQLVIEW視圖名;
ASSELECT-SQL語句例1:CREATESQLVIEW
js_view
ASSELECT*FROMsjk!JS例2:CSQL=“SELECT*FROMsjk!JS”(字符型變量)CREATESQLVIEWJS_VIEWAS&CSQL(宏替換)9/11/2023322使用視圖更新源表數(shù)據(jù)再次與查詢比較:視圖可以更新基表,而查詢不行1.使表可更新:“更新條件”選項卡在“表”下拉列表框中指定受設(shè)置影響的表在“字段名”列表中選定表中的字段,至少應(yīng)設(shè)置一個字段作為“主關(guān)鍵字”及“可更新字段”“發(fā)送SQL更新”復(fù)選框中可以設(shè)置是否允許對基表的更新,它是更新的主開關(guān)=DBSETPROP(“視圖名”,“View”,”SendUpdates”,.T.)2.設(shè)置關(guān)鍵字段
VFP用關(guān)鍵字段來唯一標(biāo)識那些已在視圖中修改過的源表的更新記錄。設(shè)置“關(guān)鍵字段”,可用來檢驗更新沖突9/11/202333(1)指定可更新字段
如果要設(shè)置給定表中部分或全部字段允許更新,必須在該表的所有字段中設(shè)置一個關(guān)鍵字段“關(guān)鍵”列:鑰匙形,將字段設(shè)置為關(guān)鍵字段命令設(shè)置:=DBSETPROP(“視圖名.字段名”,“Feild”,;“KeyField”,.T.)“更新”列:筆形,設(shè)置一個字段為可更新的“全部更新”:在一張已有關(guān)鍵字段表中的除該關(guān)鍵字段外的所有字段均可設(shè)置為可更新命令設(shè)置:=DBSETPROP(“視圖名.字段名”,“Feild”,;“Updatename”,“基表.字段名”)9/11/202334指定用Updatable屬性進行更新的字段=DBSETPROP(“視圖名.字段名”,“Feild”,;
溫馨提示
- 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)方式做保護處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負(fù)責(zé)。
- 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 2024暑假企業(yè)市場推廣活動臨時促銷員合作協(xié)議3篇
- 2024新版餐飲服務(wù)人員勞動協(xié)議樣本版
- 2024擠塑板材料采購合同
- 2024校園垃圾處理與物業(yè)管理服務(wù)合同
- 2024打灰工程勞務(wù)分包協(xié)議范本一
- 2024年電力物資采購供應(yīng)合同
- 2024年項目管理咨詢服務(wù)合同
- 2024年食堂承包及食品安全管理服務(wù)協(xié)議3篇
- 2024年酒店業(yè)標(biāo)準(zhǔn)采購合同模板版B版
- O2O業(yè)務(wù)合作框架合同版B版
- 智能安防監(jiān)控系統(tǒng)設(shè)計與實施計劃書
- 2024年南京市第一醫(yī)院高層次衛(wèi)技人才招聘筆試歷年參考題庫頻考點附帶答案
- 2024北京海淀五年級(上)期末英語(教師版)
- 2024年-2025年全民“科學(xué)素養(yǎng)提升行動”競賽考試題庫(含各題型)
- (高清版)DZT 0073-2016 電阻率剖面法技術(shù)規(guī)程
- 2025年蛇年春聯(lián)帶橫批-蛇年對聯(lián)大全新春對聯(lián)集錦
- 小學(xué)六年級數(shù)學(xué)計算題100道(含答案)
- 熱電偶、熱電阻產(chǎn)品選型樣本
- 鉆孔壓水試驗計算EXCEL表格
- 磁鐵表磁計算器
- 調(diào)研報告600221(海南航空)申銀萬國中山西路
評論
0/150
提交評論