《VisualFoxPro數(shù)據(jù)庫基礎(chǔ)》第7章:數(shù)據(jù)查詢與視圖設(shè)計(jì)課件_第1頁
《VisualFoxPro數(shù)據(jù)庫基礎(chǔ)》第7章:數(shù)據(jù)查詢與視圖設(shè)計(jì)課件_第2頁
《VisualFoxPro數(shù)據(jù)庫基礎(chǔ)》第7章:數(shù)據(jù)查詢與視圖設(shè)計(jì)課件_第3頁
《VisualFoxPro數(shù)據(jù)庫基礎(chǔ)》第7章:數(shù)據(jù)查詢與視圖設(shè)計(jì)課件_第4頁
《VisualFoxPro數(shù)據(jù)庫基礎(chǔ)》第7章:數(shù)據(jù)查詢與視圖設(shè)計(jì)課件_第5頁
已閱讀5頁,還剩165頁未讀, 繼續(xù)免費(fèi)閱讀

下載本文檔

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

文檔簡介

第7章數(shù)據(jù)查詢與視圖設(shè)計(jì)(時間:4次課,8學(xué)時)第7章數(shù)據(jù)查詢與視圖設(shè)計(jì)(時間:4次課,8學(xué)時)1第7章數(shù)據(jù)查詢與視圖設(shè)計(jì)教學(xué)提示:建立數(shù)據(jù)庫保存數(shù)據(jù)的目的是為了使用數(shù)據(jù)為決策提供依據(jù),而檢索數(shù)據(jù)和更新數(shù)據(jù)是對數(shù)據(jù)最基本也是最常見的操作。本章主要介紹查詢和視圖的設(shè)計(jì)以及結(jié)構(gòu)化查詢命令的使用。本章主要介紹:查詢的創(chuàng)建方法;視圖的創(chuàng)建方法;查詢和視圖的區(qū)別;VisualFoxPro的SQL命令的使用;查詢設(shè)計(jì)器各選項(xiàng)卡的設(shè)置與SQL_Select子句的對應(yīng)關(guān)系。第7章數(shù)據(jù)查詢與視圖設(shè)計(jì)教學(xué)提示:建立數(shù)據(jù)庫保存數(shù)據(jù)的目2第7章數(shù)據(jù)查詢與視圖設(shè)計(jì)7.1查詢7.2視圖7.3SQL命令7.4查詢程序設(shè)計(jì)實(shí)例

7.5上機(jī)指導(dǎo)7.6習(xí)題第7章數(shù)據(jù)查詢與視圖設(shè)計(jì)7.1查詢37.1查詢7.1.1查詢設(shè)計(jì)器簡介7.1.2創(chuàng)建單表查詢7.1.3創(chuàng)建多表查詢7.1.4創(chuàng)建交叉數(shù)據(jù)表7.1.5運(yùn)行查詢7.1查詢7.1.1查詢設(shè)計(jì)器簡介47.1查詢使用查詢設(shè)計(jì)器可以創(chuàng)建查詢,實(shí)現(xiàn)數(shù)據(jù)檢索。VisualFoxPro的查詢設(shè)計(jì)器提供了一種直觀而快速的數(shù)據(jù)檢索途徑,使用查詢設(shè)計(jì)器可以從一個或多個表中檢索滿足條件的記錄,還可以根據(jù)需要對檢索到的記錄進(jìn)行排序和分組,并可根據(jù)檢索結(jié)果創(chuàng)建表、報(bào)表或圖表等以顯示或保存檢索結(jié)果。如果僅從一個表中檢索記錄,就稱為單表查詢,否則,為多表查詢。所創(chuàng)建的查詢可以保存為默認(rèn)擴(kuò)展名為.QPR的查詢文件,以供反復(fù)調(diào)用,執(zhí)行指定的數(shù)據(jù)檢索任務(wù)。7.1查詢使用查詢設(shè)計(jì)器可以創(chuàng)建查詢,實(shí)57.1.1查詢設(shè)計(jì)器簡介

打開查詢設(shè)計(jì)器窗口:單擊系統(tǒng)菜單的【文件】|【新建】,單擊【查詢】單選按鈕,單擊【新建文件】按鈕,在打開的【添加表或視圖】對話框中,依次將查詢數(shù)據(jù)所在的表或視圖添加完畢,單擊【關(guān)閉】按鈕,進(jìn)入查詢設(shè)計(jì)器窗口。查詢設(shè)計(jì)器窗口分為上下2個窗格:上窗格顯示已添加的表或視圖;下窗格顯示6個選項(xiàng)卡,如圖7.1.1所示,供設(shè)計(jì)查詢使用。

圖7.1.1查詢設(shè)計(jì)器選項(xiàng)卡7.1.1查詢設(shè)計(jì)器簡介打開查詢設(shè)計(jì)器67.1.1查詢設(shè)計(jì)器簡介

各選項(xiàng)卡的功能如下:1.【字段】選項(xiàng)卡:【字段】選項(xiàng)卡用于指定出現(xiàn)在查詢結(jié)果中的字段或表達(dá)式??梢酝ㄟ^在【可用字段】列表中,選擇要添加的字段,將其添加到【選定字段】列表中。如果要輸出的是表達(dá)式,則可將表達(dá)式直接輸入到【函數(shù)和表達(dá)式】文本框中,也可以單擊其右側(cè)的按鈕,通過表達(dá)式生成器來生成一個表達(dá)式。字段或表達(dá)式在【選定字段】列表中的順序,就是在查詢結(jié)果中出現(xiàn)的順序,可以通過上下拖動其左側(cè)的按鈕來改變字段的輸出順序。

2.【聯(lián)接】選項(xiàng)卡:【聯(lián)接】選項(xiàng)卡在創(chuàng)建多表查詢時使用,用來指定匹配多個表或視圖中記錄的連接條件表達(dá)式和連接類型,連接類型有如下4種:(1)內(nèi)部連接:相關(guān)聯(lián)的兩個表中,只有滿足連接條件的記錄才出現(xiàn)在查詢結(jié)果中,是默認(rèn)的也是最常用的連接類型。(2)左連接:滿足連接條件的記錄,以及連接條件左側(cè)表中的記錄(即使不滿足連接條件)都出現(xiàn)在查詢結(jié)果中。(3)右連接:滿足連接條件的記錄,以及連接條件右側(cè)表中的記錄(即使不滿足連接條件)都出現(xiàn)在查詢結(jié)果中。(4)完全連接:所有滿足和不滿足連接條件的記錄都出現(xiàn)在查詢結(jié)果中。7.1.1查詢設(shè)計(jì)器簡介各選項(xiàng)卡的功能如下:2.【77.1.1查詢設(shè)計(jì)器簡介

3.【篩選】選項(xiàng)卡:【篩選】選項(xiàng)卡用于設(shè)置在源表中選擇記錄的條件表達(dá)式,該卡含有如下各項(xiàng):字段名:可在下拉列表中選擇用于設(shè)置條件的字段或表達(dá)式。條件:可在下拉列表中選擇一種比較符號,其中除了有前面章節(jié)已介紹過的關(guān)系運(yùn)算符外,還有Like:在實(shí)例文本框中可使用含通配符_(下劃線)和%(百分號)的實(shí)例,表示指定字段與之做相似比較,其中_代表一個任意字符,%代表若干任意字符;IsNull:表示選擇字段值為空(Null)的記錄;Between:與之相配合的是實(shí)例文本框中以西文逗號分隔的2個實(shí)例數(shù)值,用于限定指定字段的數(shù)值范圍;In:與之相配合的是實(shí)例文本框中幾個以西文逗號分隔的實(shí)例數(shù)值,它表示指定字段是否與某個實(shí)例相匹配。實(shí)例:用于輸入具體的條件值。大小寫:在進(jìn)行字符數(shù)據(jù)的比較時,是否區(qū)分大小寫。否:對設(shè)置的條件表達(dá)式進(jìn)行非運(yùn)算。邏輯:若想使當(dāng)前行條件與下行條件構(gòu)成復(fù)合條件,則在下拉列表中選擇相應(yīng)的AND或OR來連接,如果設(shè)置只有一行的簡單條件則使用默認(rèn)的【無】。插入:單擊【插入】按鈕,可以在當(dāng)前條件行之上插入一個空行。移去:選中一個條件行時,單擊【移去】按鈕可以將該條件行刪除。7.1.1查詢設(shè)計(jì)器簡介3.【篩選】選項(xiàng)卡:87.1.1查詢設(shè)計(jì)器簡介

4.【排序依據(jù)】選項(xiàng)卡:【排序依據(jù)】選項(xiàng)卡用來從選定字段中選擇排序依據(jù)項(xiàng),以確定查詢結(jié)果中記錄的排列順序。被添加到【排序條件】列表中的字段順序是排序關(guān)鍵字的順序,可以通過拖動左側(cè)的按鈕來改變其順序,從而形成第一排序關(guān)鍵字、第二排序關(guān)鍵字、…等等。5.【分組依據(jù)】選項(xiàng)卡:【分組依據(jù)】選項(xiàng)卡用于從源表或視圖的全部字段中選擇字段,使查詢結(jié)果的行根據(jù)所選擇的字段進(jìn)行分組,通常與求和、計(jì)數(shù)、求平均值等查詢表達(dá)式配合,實(shí)現(xiàn)分組統(tǒng)計(jì)。6.【雜項(xiàng)】選項(xiàng)卡:【雜項(xiàng)】選項(xiàng)卡用于為查詢結(jié)果指定一些其他的記錄選擇條件,這些條件簡述如下:無重復(fù)記錄:重復(fù)記錄是指每個輸出項(xiàng)的值都匹配的記錄行。若選擇了【無重復(fù)記錄】項(xiàng),則重復(fù)記錄在查詢結(jié)果中只出現(xiàn)一次。交叉數(shù)據(jù)表:當(dāng)【選定字段】恰好為3項(xiàng)時才可以使用本項(xiàng),參見7.1.4節(jié)。列在前面的記錄:默認(rèn)為【全部】,即滿足查詢條件的全部記錄均出現(xiàn)在查詢結(jié)果中;設(shè)置【記錄個數(shù)】和【百分比】,表示滿足查詢條件的前若干條或百分比的記錄出現(xiàn)在查詢結(jié)果中。7.1.1查詢設(shè)計(jì)器簡介4.【排序依據(jù)】選項(xiàng)卡:97.1.1查詢設(shè)計(jì)器簡介

當(dāng)查詢設(shè)計(jì)器打開后,通常會同時顯示查詢設(shè)計(jì)器工具欄,如圖7.1.2所示,各工具按鈕功能如下:添加表:打開添加表或視圖對話框,向當(dāng)前查詢中添加需要的表或視圖。移去表:選定了表或視圖后此按鈕才可用,功能為從當(dāng)前查詢中移去選定的表或視圖。添加連接:當(dāng)查詢中有2個或以上表時此按鈕才可用,用來為表之間添加連接條件。顯示/隱藏SQL窗口:是一個開關(guān)按鈕,用來打開或關(guān)閉當(dāng)前查詢所對應(yīng)的SQL命令的顯示窗口。用戶在查詢設(shè)計(jì)器中所做的所有設(shè)置最終都對應(yīng)為一條SQL命令,該命令由系統(tǒng)自動生成,運(yùn)行查詢就是執(zhí)行該SQL命令。用戶可隨時通過此按鈕,打開SQL命令顯示窗口,查看系統(tǒng)為當(dāng)前查詢生成的相應(yīng)的標(biāo)準(zhǔn)的SQL命令。這一點(diǎn)對SQL命令的掌握是十分有幫助的,SQL命令將在7.3節(jié)介紹。最大化/最小化上部窗格:用來使查詢設(shè)計(jì)器的上部窗格最大化或最小化。查詢?nèi)ハ颍捍蜷_查詢?nèi)ハ驅(qū)υ捒颍付ú樵兘Y(jié)果的輸出形式,它們是“瀏覽”、“臨時表”、“表”、“圖形”、“屏幕”、“報(bào)表”和“標(biāo)簽”,共7種輸出形式,默認(rèn)形式為“瀏覽”。

圖7.1.2查詢設(shè)計(jì)器工具欄7.1.1查詢設(shè)計(jì)器簡介當(dāng)查詢設(shè)計(jì)器打107.1.2創(chuàng)建單表查詢

單表查詢就是要查找的數(shù)據(jù)僅僅出自于一個表文件,因此,在使用查詢設(shè)計(jì)器時,無須做任何聯(lián)接設(shè)置,例如,從學(xué)生表中查詢男生的學(xué)號、姓名、年齡和性別,并按年齡降序排列記錄;再例如,根據(jù)學(xué)生表按性別查詢平均入學(xué)分?jǐn)?shù),等等。例7.1根據(jù)學(xué)生數(shù)據(jù)表建立查詢文件NSNL.QPR,查詢男生的學(xué)號、姓名、年齡和性別,并按年齡降序排列記錄。操作步驟簡述如下:(1)打開查詢設(shè)計(jì)器并添加表。選擇【文件】|【新建】|【查詢】命令,單擊【新建文件】按鈕,選擇數(shù)據(jù)表:“學(xué)生”,單擊【添加】按鈕,單擊【關(guān)閉】按鈕。(2)選擇字段。單擊字段選項(xiàng)卡,在【可用字段】列表中,依次雙擊“學(xué)生.學(xué)號”、“學(xué)生.姓名”、“學(xué)生.性別”,將3個字段添加到【選定字段】列表中。在【函數(shù)和表達(dá)式】文本框中輸入YEAR(DATE())-YEAR(學(xué)生.出生日期)AS年齡,單擊【添加】按鈕,把該表達(dá)式添加到【選定字段】列表中。7.1.2創(chuàng)建單表查詢單表查詢就是要查117.1.2創(chuàng)建單表查詢

(3)篩選記錄。單擊【篩選】選項(xiàng)卡標(biāo)簽,在【字段名】下拉列表中選擇:學(xué)生.性別,條件符號使用等號=,在【實(shí)例】文本框中輸入“男”。(4)排序記錄。單擊【排序依據(jù)】選項(xiàng)卡標(biāo)簽,雙擊【選定字段】列表中用于計(jì)算年齡的表達(dá)式,把它添加到【排序條件】列表中,在【排序選項(xiàng)】中單擊【降序】。(5)運(yùn)行查詢。單擊系統(tǒng)菜單的【查詢】|【運(yùn)行查詢】,查詢結(jié)果如圖7.1.3所示。(6)保存查詢。關(guān)閉查詢設(shè)計(jì)器窗口,在【保存】對話框中輸入文件名“NSNL”,單擊【確定】按鈕。

圖7.1.3例7.1查詢結(jié)果7.1.2創(chuàng)建單表查詢(3)篩選記錄。圖7.1.3127.1.3創(chuàng)建多表查詢

多表查詢就是要查找的數(shù)據(jù)來自于不止一個的、相關(guān)的表文件。例如,查詢學(xué)生的學(xué)號、姓名、性別、專業(yè)、計(jì)算機(jī)、英語、高等數(shù)學(xué)成績和總分,查詢數(shù)據(jù)需按學(xué)號相同的關(guān)聯(lián)方式從學(xué)生表和成績表兩表中取得。由此可見,使用查詢設(shè)計(jì)器創(chuàng)建多表查詢,通常需要使用【連接】選項(xiàng)卡設(shè)置表之間的連接關(guān)系。具體創(chuàng)建過程可參考7.5.2節(jié)。7.1.3創(chuàng)建多表查詢多表查詢就是要查找137.1.4創(chuàng)建交叉數(shù)據(jù)表

在查詢設(shè)計(jì)過程中,當(dāng)【選定字段】剛好為3項(xiàng)時,在【雜項(xiàng)】選項(xiàng)卡中的【交叉數(shù)據(jù)表】選項(xiàng)才可用。它使查詢結(jié)果以交叉表格形式傳送給表、報(bào)表或圖形,3個選定字段應(yīng)代表交叉表格的X軸、Y軸和單元值。選擇【交叉數(shù)據(jù)表】選項(xiàng)后,系統(tǒng)自動為查詢選擇分組和排序依據(jù)字段,查詢不可修改。例7.2根據(jù)學(xué)生表創(chuàng)建交叉數(shù)據(jù)表,查詢各專業(yè)男、女生的平均入學(xué)成績。操作步驟簡述如下:(1)打開查詢設(shè)計(jì)器并添加表。選擇【文件】|【新建】|【查詢】命令,單擊【新建文件】按鈕,選擇數(shù)據(jù)表“學(xué)生”,單擊【添加】按鈕,單擊【關(guān)閉】按鈕。(2)選擇字段。單擊【字段】選項(xiàng)卡標(biāo)簽,將【可用字段】列表中的“學(xué)生.性別”、“學(xué)生.專業(yè)”,添加到【選定字段】列表中。單擊【函數(shù)和表達(dá)式】文本框右側(cè)的按鈕,打開【表達(dá)式生成器】,在【數(shù)學(xué)】函數(shù)下拉列表中單擊求平均值的函數(shù)AVG,在【字段】列表中雙擊“入學(xué)成績”,這時,【表達(dá)式】文本框中顯示“AVG(學(xué)生.入學(xué)成績)”,單擊【確定】按鈕,該表達(dá)式出現(xiàn)在【函數(shù)和表達(dá)式】文本框中,單擊【添加】按鈕,把該表達(dá)式添加到【選定字段】列表中。7.1.4創(chuàng)建交叉數(shù)據(jù)表在查詢設(shè)計(jì)過程147.1.4創(chuàng)建交叉數(shù)據(jù)表

(3)設(shè)置交叉數(shù)據(jù)表。單擊【雜項(xiàng)】選項(xiàng)卡標(biāo)簽,選擇【交叉數(shù)據(jù)表】。(4)運(yùn)行查詢。單擊系統(tǒng)菜單的【查詢】|【運(yùn)行查詢】,在瀏覽窗口中顯示的查詢結(jié)果如圖7.1.4所示。圖7.1.4例7.2查詢結(jié)果7.1.4創(chuàng)建交叉數(shù)據(jù)表(3)設(shè)置交叉數(shù)據(jù)表。圖7.1157.1.5運(yùn)行查詢

運(yùn)行查詢有以下兩種方法:(1)在查詢設(shè)計(jì)器中選擇運(yùn)行查詢:【查詢】|【運(yùn)行查詢】。(2)使用DO命令運(yùn)行查詢,命令格式為:DO<查詢文件全名>。例如,運(yùn)行例7.1建立的查詢,使用命令:DOnsnl.qpr。7.1.5運(yùn)行查詢運(yùn)行查詢有以下兩種方法:167.2視圖7.2.1創(chuàng)建視圖7.2.2修改視圖7.2.3刪除視圖7.2.4打開/關(guān)閉視圖7.2視圖7.2.1創(chuàng)建視圖177.2視圖如果既要檢索數(shù)據(jù)還要更新數(shù)據(jù),就可以使用視圖。視圖兼有表和查詢的特點(diǎn)。與查詢相類似的是,可以用來從一個或多個相關(guān)聯(lián)的表中提取所需數(shù)據(jù);與表相類似的是,可以更新其中的數(shù)據(jù),并將更新結(jié)果永久保存在磁盤中。視圖是屬于數(shù)據(jù)庫的,VisualFoxPro在數(shù)據(jù)庫中僅保存對每個視圖的定義。該定義包括視圖中要引用數(shù)據(jù)所在表的表名、字段名及其屬性設(shè)置等。當(dāng)使用視圖時,VisualFoxPro根據(jù)視圖定義臨時獲取數(shù)據(jù)。因此,視圖被稱為虛表或邏輯表。僅引用一個數(shù)據(jù)表中的數(shù)據(jù)所建立的視圖稱為單表視圖;通過引用多個數(shù)據(jù)表中的數(shù)據(jù)而建立的視圖稱為多表視圖。使用當(dāng)前數(shù)據(jù)庫表中數(shù)據(jù)建立的視圖稱為本地視圖;使用遠(yuǎn)程服務(wù)器上數(shù)據(jù)建立的視圖稱為遠(yuǎn)程視圖。

7.2視圖如果既要檢索數(shù)據(jù)還要更新數(shù)據(jù),187.2.1創(chuàng)建視圖

創(chuàng)建視圖的過程與創(chuàng)建查詢的過程十分相似,但用來創(chuàng)建查詢的數(shù)據(jù)源既可以是數(shù)據(jù)庫表又可以是自由表,而視圖所引用的表必須是數(shù)據(jù)庫表。因此,創(chuàng)建視圖之前,必須首先打開數(shù)據(jù)庫,然后再打開視圖設(shè)計(jì)器,方式如下:方式一:(1)使用命令打開數(shù)據(jù)庫。在命令窗口鍵入:OPENDATABASE<數(shù)據(jù)庫文件名>。(2)打開視圖設(shè)計(jì)器。選擇【文件】|【新建】|【視圖】命令,單擊【新建文件】按鈕,選定所需的數(shù)據(jù)表,單擊【添加】按鈕,單擊【關(guān)閉】按鈕進(jìn)入視圖設(shè)計(jì)器窗口。方式二:(1)使用菜單打開數(shù)據(jù)庫。選擇【文件】|【打開】命令,選擇所需數(shù)據(jù)庫,進(jìn)入數(shù)據(jù)庫設(shè)計(jì)器窗口。(2)打開視圖設(shè)計(jì)器。選擇【數(shù)據(jù)庫】|【新建本地視圖】|【新建視圖】命令,選擇所需的數(shù)據(jù)表,單擊【添加】按鈕,單擊【關(guān)閉】按鈕進(jìn)入視圖設(shè)計(jì)器窗口。觀察視圖設(shè)計(jì)器窗口可以發(fā)現(xiàn),視圖設(shè)計(jì)器僅僅比查詢設(shè)計(jì)器窗口多了一個【更新條件】選項(xiàng)卡標(biāo)簽,其余選項(xiàng)卡標(biāo)簽相同,而視圖設(shè)計(jì)器工具欄比查詢設(shè)計(jì)器工具欄少了一個【查詢?nèi)ハ颉堪粹o,

其余按鈕相同。

7.2.1創(chuàng)建視圖創(chuàng)建視圖的過程與創(chuàng)建197.2.1創(chuàng)建視圖

1.單表視圖例7.3根據(jù)學(xué)生數(shù)據(jù)表建立視圖“平均入學(xué)成績”,含有每個專業(yè)學(xué)生平均入學(xué)分?jǐn)?shù),記錄按平均分降序排列。操作步驟簡述如下:(1)打開數(shù)據(jù)庫。用菜單方式或命令方式打開學(xué)生管理數(shù)據(jù)庫。(2)打開視圖設(shè)計(jì)器。添加學(xué)生表。(3)選擇字段。單擊字段選項(xiàng)卡,雙擊【可用字段】列表中的“學(xué)生.專業(yè)”,將其添加到【選定字段】列表中,單擊【函數(shù)和表達(dá)式】文本框右側(cè)按鈕,打開表達(dá)式生成器,在【數(shù)學(xué)】函數(shù)下拉列表中單擊AVG函數(shù),在【字段】列表中雙擊“入學(xué)成績”,在【表達(dá)式】文本框中的表達(dá)式行尾輸入“AS平均入學(xué)成績”,單擊【確定】按鈕,單擊【添加】按鈕,把表達(dá)式“AVG(學(xué)生.入學(xué)成績)AS平均入學(xué)成績”,添加到【選定字段】列表。

7.2.1創(chuàng)建視圖1.單表視圖207.2.1創(chuàng)建視圖

(4)選擇排序字段。雙擊【選定字段】中計(jì)算平均入學(xué)成績的表達(dá)式,將其添加到【排序條件】列表中,選中【排序選項(xiàng)】中的【降序】。(5)選擇分組字段。單擊【分組依據(jù)】選項(xiàng)卡,雙擊【可用字段】列表中的“學(xué)生.專業(yè)”,將其添加到【分組字段】列表中。圖7.2.1例7.3視圖瀏覽(6)查看視圖。單擊系統(tǒng)菜單的【查詢】|【運(yùn)行查詢】,顯示結(jié)果如圖7.2.1所示。(7)保存視圖。關(guān)閉視圖窗口,在【保存】對話框中輸入視圖名“平均入學(xué)成績”,單擊【確定】按鈕。打開數(shù)據(jù)庫設(shè)計(jì)器窗口查看學(xué)生管理數(shù)據(jù)庫,可以看到剛剛建立的視圖。7.2.1創(chuàng)建視圖(4)選擇排序字段。圖7.2.1217.2.1創(chuàng)建視圖

2.多表視圖例7.4根據(jù)學(xué)生表和成績表建立視圖“高等數(shù)學(xué)成績”,含有計(jì)算機(jī)專業(yè)學(xué)生的學(xué)號、姓名、專業(yè)和高等數(shù)學(xué)成績,記錄按學(xué)號升序排列。操作步驟簡述如下:(1)打開數(shù)據(jù)庫。用菜單方式或命令方式打開學(xué)生管理數(shù)據(jù)庫。(2)打開視圖設(shè)計(jì)器。添加學(xué)生表和成績表。(3)設(shè)置連接表達(dá)式。單擊【連接】選項(xiàng)卡標(biāo)簽,設(shè)置連接條件為:學(xué)生.學(xué)號=成績.學(xué)號,連接類型為內(nèi)部連接。(4)選擇字段。單擊【字段】選項(xiàng)卡標(biāo)簽,依次雙擊【可選字段】列表中的“學(xué)生.學(xué)號”、“學(xué)生.姓名”、“學(xué)生.專業(yè)”、“成績.高等數(shù)學(xué)”,將5個字段添加到【選定字段】列表中。

7.2.1創(chuàng)建視圖2.多表視圖227.2.1創(chuàng)建視圖

(5)設(shè)置篩選條件。單擊【篩選】選項(xiàng)卡標(biāo)簽,設(shè)置篩選條件為:學(xué)生.專業(yè)='計(jì)算機(jī)'。(6)設(shè)置排序依據(jù)。單擊【排序依據(jù)】選項(xiàng)卡標(biāo)簽,雙擊【選定字段】列表中的“學(xué)生.學(xué)號”,把該字段添加到【排序條件】列表中,在【排序選項(xiàng)】中選擇【升序】。圖7.2.2例7.4視圖瀏覽(7)查看視圖。選擇【查詢】|【運(yùn)行查詢】命令,顯示結(jié)果如圖7.2.2所示。(8)保存視圖。關(guān)閉視圖窗口,在【保存】對話框中輸入視圖名“高等數(shù)學(xué)成績”,單擊【確定】按鈕。7.2.1創(chuàng)建視圖(5)設(shè)置篩選條件。圖7.2.2237.2.1創(chuàng)建視圖

3.參數(shù)視圖在前面例題所建立的視圖中,對記錄進(jìn)行篩選的篩選實(shí)例都是在設(shè)計(jì)階段就確定了的,視圖中的記錄是相對固定的。如上例,篩選條件為:學(xué)生.專業(yè)='計(jì)算機(jī)',篩選實(shí)例“計(jì)算機(jī)”在設(shè)計(jì)階段即已確定。如果希望在每次使用視圖時臨時指定記錄的篩選實(shí)例,例如,打開視圖時提示輸入具體專業(yè)名稱以篩選指定專業(yè)的記錄,則可以采用參數(shù)視圖,如下例。例7.5根據(jù)學(xué)生表建立視圖“專業(yè)學(xué)生”,給出用戶指定專業(yè)的學(xué)生信息。操作步驟簡述如下:(1)打開數(shù)據(jù)庫。用菜單方式或命令方式打開學(xué)生管理數(shù)據(jù)庫。(2)打開視圖設(shè)計(jì)器。添加學(xué)生表。(3)選擇字段。單擊【字段】選項(xiàng)卡標(biāo)簽,單擊【全部添加】按鈕選擇全部字段為選定字段。(4)設(shè)置篩選條件。單擊【篩選】選項(xiàng)卡標(biāo)簽,設(shè)置篩選條件為:學(xué)生.專業(yè)=?專業(yè)。7.2.1創(chuàng)建視圖3.參數(shù)視圖247.2.1創(chuàng)建視圖

(5)輸入?yún)?shù)名。選擇【查詢】|【視圖參數(shù)】命令,在視圖參數(shù)對話框的參數(shù)名文本框中輸入“專業(yè)”,選擇【類型】為【字符型】,單擊【確定】按鈕。(6)查看視圖。選擇【查詢】|【運(yùn)行查詢】命令,在打開的【視圖參數(shù)】對話框中輸入“管理”,如圖7.2.3所示,單擊【確定】按鈕,顯示結(jié)果如圖7.2.4所示。(7)保存視圖。關(guān)閉視圖窗口,在【保存】對話框中輸入視圖名“專業(yè)學(xué)生”,單擊【確定】按鈕。

圖7.2.4例7.5視圖瀏覽圖7.2.3視圖參數(shù)對話框7.2.1創(chuàng)建視圖(5)輸入?yún)?shù)名。圖7.2.4例257.2.1創(chuàng)建視圖

4.可更新數(shù)據(jù)視圖使用視圖,可以從表中提取一組記錄,改變這些記錄的值,并把更新結(jié)果送回到源表中,視圖的這一功能是通過對視圖設(shè)計(jì)器的【更新條件】選項(xiàng)卡進(jìn)行相應(yīng)設(shè)置來實(shí)現(xiàn)的。如圖7.2.5所示,更新條件選項(xiàng)卡的各項(xiàng)功能如下:(1)【表】下拉列表:指定視圖使用的、可以更新數(shù)據(jù)的表。(2)【字段名】列表:顯示視圖的選定字段,這些字段又可分為如下3類:圖7.2.5更新條件選項(xiàng)卡關(guān)鍵字段:在鑰匙符號列有標(biāo)記的是關(guān)鍵字段,關(guān)鍵字段用來使視圖中的修改與源表中的原始記錄相匹配。系統(tǒng)自動將表的主關(guān)鍵字標(biāo)記為關(guān)鍵字段,用戶可以根據(jù)需要另選其他字段作為關(guān)鍵字段,方法是點(diǎn)擊該字段的鑰匙列按鈕使標(biāo)記出現(xiàn)??筛伦侄危涸诠P型符號列有標(biāo)記的是可更新字段。普通字段:在鑰匙和筆型符號列均無標(biāo)記的字段。

7.2.1創(chuàng)建視圖4.可更新數(shù)據(jù)視圖圖7.2.5267.2.1創(chuàng)建視圖

(3)【重置關(guān)鍵字】按鈕:重新將表的主關(guān)鍵字標(biāo)記為關(guān)鍵字段。(4)【全部更新】按鈕:把除關(guān)鍵字段以外的所有字段標(biāo)記為可更新字段。(5)【發(fā)送SQL更新】復(fù)選框:是否把對視圖記錄的修改傳送給源表。(6)【SQLWHERE子句包括】單選項(xiàng):在遠(yuǎn)程視圖進(jìn)行更新源表操作時,用于檢測服務(wù)器上的更新沖突,4個選項(xiàng)如下:【關(guān)鍵字段】:當(dāng)源表中的關(guān)鍵字段被改變時,更新失敗?!娟P(guān)鍵字和可更新字段】:當(dāng)遠(yuǎn)程表中的可更新字段被改變時,更新失敗?!娟P(guān)鍵字和已修改字段】:當(dāng)在本地修改的任一字段在源表中已被改變時,更新失敗?!娟P(guān)鍵字和時間戳】:當(dāng)遠(yuǎn)程表記錄的時間戳首次檢索以后又被修改過,更新失敗。(7)【使用更新】單選項(xiàng):用于指定字段在服務(wù)器上的如下2種更新方式:SQLDELETE然后INSERT:刪除源表記錄,再創(chuàng)建一個新的在視圖中被修改的記錄。SQLUPDATE:用視圖字段的變化來修改源表的相應(yīng)字段。7.2.1創(chuàng)建視圖(3)【重置關(guān)鍵字】按鈕:重新將表的277.2.1創(chuàng)建視圖

例7.6根據(jù)學(xué)生表建立視圖“更改專業(yè)”,包含所有學(xué)生的學(xué)號、姓名、性別和專業(yè)字段,使專業(yè)字段可更新。操作步驟簡述如下:(1)打開學(xué)生管理數(shù)據(jù)庫。(2)打開視圖設(shè)計(jì)器,添加學(xué)生表,在【字段】選項(xiàng)卡中選定所需的4個字段。(3)單擊【更新條件】選項(xiàng)卡標(biāo)簽,如圖7.2.5所示,指定關(guān)鍵字段和可更新字段,選中【發(fā)送SQL更新】。(4)關(guān)閉視圖設(shè)計(jì)器窗口,保存視圖為“更改專業(yè)”。(5)在數(shù)據(jù)庫設(shè)計(jì)器窗口,雙擊視圖“更改專業(yè)”,在打開的瀏覽窗口,將學(xué)生“章碩”的專業(yè)字段值由“管理”改為“計(jì)算機(jī)”,關(guān)閉該視圖瀏覽窗口,雙擊學(xué)生數(shù)據(jù)表,觀察到“章碩”的所學(xué)專業(yè)已改為“計(jì)算機(jī)”。

7.2.1創(chuàng)建視圖例7.6根據(jù)學(xué)生表建立視圖“更改287.2.2修改視圖

修改視圖仍在視圖設(shè)計(jì)器中進(jìn)行,為修改視圖而打開視圖設(shè)計(jì)器的方式有如下2種:(1)菜單方式。選擇【文件】|【打開】命令,選擇要修改的視圖所屬的數(shù)據(jù)庫,進(jìn)入數(shù)據(jù)庫設(shè)計(jì)器窗口,選中要修改的視圖,右擊打開快捷菜單或單擊系統(tǒng)菜單的【數(shù)據(jù)庫】|【修改】,進(jìn)入視圖設(shè)計(jì)器窗口。(2)命令方式。順序執(zhí)行命令:OPENDATABASE<數(shù)據(jù)庫>和MODIFYVIEW<視圖名>,進(jìn)入視圖設(shè)計(jì)器窗口。7.2.2修改視圖修改視圖仍在視圖設(shè)計(jì)297.2.3刪除視圖

刪除視圖有菜單方式和命令方式2種。(1)菜單方式。選擇【文件】|【打開】命令,選擇要刪除的視圖所屬的數(shù)據(jù)庫,進(jìn)入數(shù)據(jù)庫設(shè)計(jì)器窗口,選中要刪除的視圖,右擊選擇【刪除】或者單擊系統(tǒng)菜單的【數(shù)據(jù)庫】|【移去】,刪除選定視圖。(2)命令方式。順序執(zhí)行命令:OPENDATABASE<數(shù)據(jù)庫>和DELETEVIEW<視圖名>,刪除指定視圖。7.2.3刪除視圖刪除視圖有菜單方式和307.2.4打開/關(guān)閉視圖

要打開視圖,首先要打開其所屬數(shù)據(jù)庫,之后的打開和關(guān)閉操作與數(shù)據(jù)庫表是一樣的。1.打開視圖(1)菜單方式:在數(shù)據(jù)庫設(shè)計(jì)器中,雙擊要打開的視圖。(2)命令方式:順序執(zhí)行命令:OPENDATABASE<數(shù)據(jù)庫>和USE<視圖名>[IN<工作區(qū)>],打開指定視圖。2.關(guān)閉視圖使用命令:USE[IN<工作區(qū)>],關(guān)閉在指定工作區(qū)中打開的視圖。7.2.4打開/關(guān)閉視圖要打開視圖,首317.3SQL命令7.3.1VisualFoxPro的SQL查詢命令

7.3.2VisualFoxPro的SQL定義命令7.3.3VisualFoxPro的SQL操縱命令7.3SQL命令7.3.1VisualFoxPr327.3SQL命令

結(jié)構(gòu)化查詢語言SQL(StructuredQueryLanguage)是一種通用的、功能強(qiáng)大的關(guān)系數(shù)據(jù)庫標(biāo)準(zhǔn)語言,國際標(biāo)準(zhǔn)化組織已將其確定為關(guān)系數(shù)據(jù)庫語言的國際標(biāo)準(zhǔn),被絕大多數(shù)商品化的關(guān)系數(shù)據(jù)庫系統(tǒng)所采用,它簡潔易學(xué)、使用方便靈活、功能豐富。前面已經(jīng)提到過,在使用設(shè)計(jì)器設(shè)計(jì)查詢和視圖時,可隨時查看所對應(yīng)的SQL命令,可見VisualFoxPro也支持SQL命令。VisualFoxPro的SQL命令可實(shí)現(xiàn)數(shù)據(jù)定義、操縱和查詢功能。7.3SQL命令結(jié)構(gòu)化查詢語言SQL(337.3.1VisualFoxPro的SQL查詢命令

SQL_SELECT命令是VisualFoxPro的SQL查詢命令,該命令的查詢功能十分豐富,使用方便靈活,可實(shí)現(xiàn)單表查詢和相關(guān)多表查詢,并可嵌套使用。

1.SQL_SELECT命令簡單地講,SQL_SELECT命令實(shí)現(xiàn)的是從指定表,按指定方式查找指定數(shù)據(jù)并送到指定地點(diǎn)的操作。該命令的可選項(xiàng)較多,這里僅介紹其一般格式。命令格式:SELECT[ALL|DISTINCT][TOP<N型表達(dá)式>[PERCENT]][<別名1>.]<輸出列表達(dá)式1>[AS<列名1>][,[<別名2>.]<輸出列表達(dá)式2>[AS<列名2>]...]FROM[<數(shù)據(jù)庫名>!]<表名1>[[INNER|LEFT|RIGHT|FULL]JOIN[<數(shù)據(jù)庫名2>!]<表名2>[ON<連接條件>…]][[INTO<查詢?nèi)ハ?gt;]|[TOFILE<文本文件名>[ADDITIVE]|TOPRINTER[PROMPT]|TOSCREEN]][WHERE<條件>][GROUPBY<分組列名1>[,<分組列名2>...][HAVING<篩選條件>]][ORDERBY<排序列名1>[ASC|DESC][,<排序列名2>[ASC|DESC]...]7.3.1VisualFoxPro的SQL查詢命令347.3.1VisualFoxPro的SQL查詢命令

對應(yīng)查詢設(shè)計(jì)器的各個選項(xiàng)卡,不難理解上述命令當(dāng)中各個子句的含義。[<別名1>.]<輸出列表達(dá)式1>[AS<列名1>][,[<別名2>.]<輸出列表達(dá)式2>[AS<列名2>]...]對應(yīng)于【字段】選項(xiàng)卡中的選定字段列表。它們既可以是字段名,也可以為表達(dá)式,還可以只用一個*,表示輸出表的全部字段,配合SELECT通常被稱為SELECT子句,是命令中不可缺少的部分;[<數(shù)據(jù)庫名>!]<表名表>給出輸出列表達(dá)式中所涉及字段的所屬表,即數(shù)據(jù)來源。配合FROM通常被稱為FROM子句,也是命令中不可缺少的部分。[INNER|LEFT|RIGHT|FULL]JOIN…ON<連接條件>選項(xiàng)用于設(shè)置多表查詢的連接條件,與【連接】選項(xiàng)卡中的設(shè)置相對應(yīng),INNER|LEFT|RIGHT|FULL分別表示內(nèi)部連接、左連接、右連接和完全連接,省略時默認(rèn)為內(nèi)部連接。WHERE<條件>子句用于設(shè)置對查詢結(jié)果記錄的篩選條件,與【篩選】選項(xiàng)卡中的設(shè)置相對應(yīng)。GROUPBY<分組列名1>[,<分組列名2>...]子句用于設(shè)置分組依據(jù),與【分組依據(jù)】選項(xiàng)卡中的設(shè)置相對應(yīng)。HAVING<篩選條件>選項(xiàng)用于對分組記錄進(jìn)行篩選,只有滿足篩選條件的分組記錄才可能被輸出,HAVING子句要與GROUPBY子句配合使用。7.3.1VisualFoxPro的SQL查詢命令357.3.1VisualFoxPro的SQL查詢命令

ORDERBY<排序列名1>[ASC|DESC][,<排序列名2>[ASC|DESC]...子句用于表示查詢結(jié)果記錄的排列方式,與【排序依據(jù)】選項(xiàng)卡中的設(shè)置相對應(yīng)。若排序依據(jù)列為表達(dá)式,則通常使用該列在輸出列中的序號表示。ASC/DESC分別表示升序和降序,省略時,默認(rèn)為升序。[ALL|DISTINCT]和[TOP<N型表達(dá)式>[PERCENT]]選項(xiàng)分別與【雜項(xiàng)】選項(xiàng)卡中的“無重復(fù)記錄”和“列在前面的記錄”設(shè)置相對應(yīng),ALL表示輸出滿足條件的全部記錄,是選項(xiàng)省略時的默認(rèn)值;DISTINCT表示重復(fù)的記錄只輸出一次,即查詢結(jié)果當(dāng)中無重復(fù)記錄;TOP子句表示輸出查詢結(jié)果的前N條(無PERCENT時)或前N%條(有PERCENT時),TOP子句必須配合ORDERBY子句使用,當(dāng)排序依據(jù)字段有重復(fù)值時,輸出的記錄可能多于TOP的設(shè)置值。[INTO<查詢?nèi)ハ?gt;]|[TOFILE<文本文件名>[ADDITIVE]|TOPRINTER[PROMPT]|TOSCREEN]子句用于指定查詢結(jié)果的去向。INTO子句的<查詢?nèi)ハ?gt;可以是:ARRAY<數(shù)組名>、CURSOR<臨時表名>、DBF<數(shù)據(jù)表名>或TABLE<自由表名>;TOFILE子句指定將查詢結(jié)果送指定的文本文件,使用ADDITIVE表示將查詢結(jié)果追加到指定的文本文件中,否則,覆蓋文本文件內(nèi)容;TOPRINTER[PROMPT]子句表示將查詢結(jié)果送打印機(jī)輸出,使用PROMPT表示打印之前彈出打印設(shè)置對話框,供用戶進(jìn)行打印設(shè)置;TOSCREEN子句表示在VisualFoxPro主窗口或用戶自定義的當(dāng)前窗口中顯示查詢結(jié)果。當(dāng)INTO或TO子句省略時,查詢結(jié)果顯示在瀏覽窗口中。7.3.1VisualFoxPro的SQL查詢命令367.3.1VisualFoxPro的SQL查詢命令

由上述說明可知,SQL_SELECT命令的最簡單形式是:SELECT<列名表>FROM<表名>,它表示在瀏覽窗口中顯示指定表的指定列。另外,在SELECT子句中還可以使用以下函數(shù)實(shí)現(xiàn)統(tǒng)計(jì)查詢:AVG(<N型字段名表達(dá)式>):計(jì)算表達(dá)式的平均值。COUNT(<字段名>/*):統(tǒng)計(jì)指定字段的值的個數(shù)/輸出記錄數(shù)。MAX(<字段名表達(dá)式>):求表達(dá)式的最大值。MIN(<字段名表達(dá)式>):求表達(dá)式的最小值。SUM(<N型字段名表達(dá)式>):計(jì)算表達(dá)式的和。使用上列函數(shù)時,若配合GROUPBY子句可以實(shí)現(xiàn)分組統(tǒng)計(jì)。7.3.1VisualFoxPro的SQL查詢命令377.3.1VisualFoxPro的SQL查詢命令

2.SQL_SELECT命令使用示例(1)單表查詢單表查詢就是從一個表中查找所需數(shù)據(jù),因此,在SQL_SELECT命令中不會出現(xiàn)JOIN_ON等用于設(shè)置表間連接條件的子句。例7.7查詢學(xué)生的學(xué)號和姓名。SELECT學(xué)生.學(xué)號,學(xué)生.姓名FROM學(xué)生命令執(zhí)行結(jié)果如圖7.3.1所示。圖7.3.1例7.7命令執(zhí)行結(jié)果7.3.1VisualFoxPro的SQL查詢命令2387.3.1VisualFoxPro的SQL查詢命令

例7.8查詢招生專業(yè)。SELECTDISTINCT學(xué)生.專業(yè)FROM學(xué)生命令執(zhí)行結(jié)果如圖7.3.2所示。例7.9查詢英語專業(yè)的學(xué)生信息。SELECT*FROM學(xué)生WHERE學(xué)生.專業(yè)="英語"命令執(zhí)行結(jié)果如圖7.3.3所示。圖7.3.2例7.8命令執(zhí)行結(jié)果圖7.3.3例7.9命令執(zhí)行結(jié)果7.3.1VisualFoxPro的SQL查詢命令例397.3.1VisualFoxPro的SQL查詢命令

例7.10查詢所有王姓學(xué)生的信息。SELECT*FROM學(xué)生WHERE學(xué)生.姓名LIKE"王%"命令執(zhí)行結(jié)果如圖7.3.4所示。

例7.11查詢管理專業(yè)學(xué)生的入學(xué)成績,并按入學(xué)成績降序排列記錄。SELECT學(xué)生.學(xué)號,學(xué)生.姓名,學(xué)生.專業(yè),學(xué)生.入學(xué)成績;FROM學(xué)生;WHERE學(xué)生.專業(yè)="管理";ORDERBY學(xué)生.入學(xué)成績DESC命令執(zhí)行結(jié)果如圖7.3.5所示。圖7.3.4例7.10命令執(zhí)行結(jié)果圖7.3.5例7.11命令執(zhí)行結(jié)果7.3.1VisualFoxPro的SQL查詢命令例407.3.1VisualFoxPro的SQL查詢命令

例7.12查詢學(xué)生平均入學(xué)成績。SELECTAVG(學(xué)生.入學(xué)成績)AS平均入學(xué)成績FROM學(xué)生命令執(zhí)行結(jié)果如圖7.3.6所示。

例7.13查詢各專業(yè)學(xué)生平均入學(xué)成績。SELECT學(xué)生.專業(yè),AVG(學(xué)生.入學(xué)成績)AS平均入學(xué)成績;FROM學(xué)生;GROUPBY學(xué)生.專業(yè)命令執(zhí)行結(jié)果如圖7.3.7所示。例7.14查詢學(xué)生人數(shù)。SELECTCOUNT(*)AS學(xué)生人數(shù)FROM學(xué)生命令執(zhí)行結(jié)果如圖7.3.8所示。

圖7.3.6例7.12命令執(zhí)行結(jié)果圖7.3.7例7.13命令執(zhí)行結(jié)果圖7.3.8例7.14命令執(zhí)行結(jié)果7.3.1VisualFoxPro的SQL查詢命令例417.3.1VisualFoxPro的SQL查詢命令

例7.15查詢各專業(yè)女學(xué)生人數(shù),結(jié)果按人數(shù)升序排列。SELECT學(xué)生.專業(yè),COUNT(*)AS女生人數(shù);FROM學(xué)生;WHERE學(xué)生.性別="女";GROUPBY學(xué)生.專業(yè);ORDERBY2命令執(zhí)行結(jié)果如圖7.3.9所示。

例7.16查詢專業(yè)數(shù)量。SELECTCOUNT(DISTINCT學(xué)生.專業(yè))AS專業(yè)數(shù)FROM學(xué)生命令執(zhí)行結(jié)果如圖7.3.10所示。在本例中,如果把命令中的DISTINCT去掉,執(zhí)行結(jié)果顯示的專業(yè)數(shù)為12,所統(tǒng)計(jì)的是專業(yè)字段值(非NULL)的個數(shù),而不是專業(yè)的種類數(shù)。因此,需要對專業(yè)字段使用關(guān)鍵字DISTINCT把重復(fù)值去掉,從而實(shí)現(xiàn)本例要求。

圖7.3.9例7.15命令執(zhí)行結(jié)果圖7.3.10例7.16命令執(zhí)行結(jié)果7.3.1VisualFoxPro的SQL查詢命令例427.3.1VisualFoxPro的SQL查詢命令

例7.17查詢最高和最低入學(xué)成績。SELECTMAX(學(xué)生.入學(xué)成績)AS最高入學(xué)成績,;MIN(學(xué)生.入學(xué)成績)AS最低入學(xué)成績;FROM學(xué)生命令執(zhí)行結(jié)果如圖7.3.11所示。例7.18從成績表中查詢總分的最高分。SELECTMAX(成績.計(jì)算機(jī)+成績.英語+成績.高等數(shù)學(xué))AS最高總分;FROM成績命令執(zhí)行結(jié)果如圖7.3.12所示。圖7.3.11例7.17命令執(zhí)行結(jié)果圖7.3.12例7.18命令執(zhí)行結(jié)果7.3.1VisualFoxPro的SQL查詢命令例437.3.1VisualFoxPro的SQL查詢命令

(2)多表查詢多表查詢是指從一個以上的相關(guān)表中查找所需數(shù)據(jù),因此,表與表之間連接條件的設(shè)置通常是必不可少的。連接條件既可以通過JOIN_ON子句來設(shè)置,還可以通過WHERE子句來設(shè)置,只是WHERE子句無法指定連接類型。例7.19從學(xué)生表和成績表中,查詢學(xué)生的學(xué)號、姓名、性別、專業(yè)、計(jì)算機(jī)、英語、高等數(shù)學(xué)成績和總分,查詢結(jié)果首先按專業(yè)升序排列記錄,專業(yè)相同時按總分降序排列記錄。此例要求與例7.3完全相同,對應(yīng)的SQL_SELECT命令如下:SELECT學(xué)生.學(xué)號,學(xué)生.姓名,學(xué)生.性別,學(xué)生.專業(yè),;成績.計(jì)算機(jī),成績.英語,成績.高等數(shù)學(xué),;成績.計(jì)算機(jī)+成績.英語+成績.高等數(shù)學(xué)AS總分;FROM學(xué)生INNERJOIN成績;ON學(xué)生.學(xué)號=成績.學(xué)號;ORDERBY學(xué)生.專業(yè),8DESC7.3.1VisualFoxPro的SQL查詢命令(447.3.1VisualFoxPro的SQL查詢命令

若用WHERE子句描述學(xué)生表和成績表之間的連接關(guān)系,同樣可以實(shí)現(xiàn)本例要求,命令如下:SELECT學(xué)生.學(xué)號,學(xué)生.姓名,學(xué)生.性別,學(xué)生.專業(yè),;成績.計(jì)算機(jī),成績.英語,成績.高等數(shù)學(xué),;成績.計(jì)算機(jī)+成績.英語+成績.高等數(shù)學(xué)AS總分;FROM學(xué)生,成績;WHERE學(xué)生.學(xué)號=成績.學(xué)號;ORDERBY學(xué)生.專業(yè),8DESC若命令中引用的字段名在FROM子句所列出的所有表中是唯一的,則該字段名的前綴可以省略,否則,需使用所在表的別名做前綴以表明該字段屬于哪個表,如上列命令可簡化如下:SELECT學(xué)生.學(xué)號,學(xué)生.姓名,性別,專業(yè),計(jì)算機(jī),英語,高等數(shù)學(xué),;計(jì)算機(jī)+英語+高等數(shù)學(xué)AS總分;FROM學(xué)生,成績;WHERE學(xué)生.學(xué)號=成績.學(xué)號;ORDERBY專業(yè),8DESC命令執(zhí)行結(jié)果如圖7.3.13所示。7.3.1VisualFoxPro的SQL查詢命令457.3.1VisualFoxPro的SQL查詢命令

圖7.3.13例7.19命令執(zhí)行結(jié)果7.3.1VisualFoxPro的SQL查詢命令圖467.3.1VisualFoxPro的SQL查詢命令

例7.20查詢計(jì)算機(jī)專業(yè)學(xué)生的成績。SELECT成績.*;FROM成績,學(xué)生;WHERE成績.學(xué)號=學(xué)生.學(xué)號AND學(xué)生.專業(yè)='計(jì)算機(jī)'命令執(zhí)行結(jié)果如圖7.3.14所示。

圖7.3.14例7.20命令執(zhí)行結(jié)果7.3.1VisualFoxPro的SQL查詢命令例477.3.1VisualFoxPro的SQL查詢命令

(3) 嵌套查詢所謂嵌套查詢是指,在一個SQL_SELECT命令的WHERE子句中含有另一個SQL_SELECT命令,這個命令通常被稱為子查詢。子查詢的結(jié)果通常用來表示條件值。嵌套查詢的WHERE條件通常有如下幾種形式:<字段名><比較運(yùn)算符>ALL(<子查詢>):篩選指定字段與全部子查詢結(jié)果都滿足條件的記錄。<字段名><比較運(yùn)算符>ANY/SOME(<子查詢>):篩選指定字段至少與一個子查詢結(jié)果滿足比較條件的記錄。<字段名>IN(<子查詢>):篩選指定字段值在子查詢結(jié)果中的記錄。

EXIST(<子查詢>):只要子查詢結(jié)果非空篩選條件就為真值。其中,比較運(yùn)算符為:>、>=、<、<=、=和<>(!=,#)。

注意:HAVING子句的篩選條件不能使用子查詢。7.3.1VisualFoxPro的SQL查詢命令487.3.1VisualFoxPro的SQL查詢命令

例7.21查詢?nèi)雽W(xué)成績最高的學(xué)生信息。SELECT*FROM學(xué)生;WHERE學(xué)生.入學(xué)成績>=ALL(SELECT學(xué)生.入學(xué)成績FROM學(xué)生)命令執(zhí)行結(jié)果如圖7.3.15所示。圖7.3.15例7.21命令執(zhí)行結(jié)果7.3.1VisualFoxPro的SQL查詢命令例497.3.1VisualFoxPro的SQL查詢命令

例7.22查詢計(jì)算機(jī)專業(yè)有選修課程的學(xué)生信息,并以查詢結(jié)果生成表文件“CC.DBF”。SELECT學(xué)生.*;FROM學(xué)生;WHERE學(xué)生.學(xué)號IN(SELECT選課.學(xué)號FROM選課);AND學(xué)生.專業(yè)='計(jì)算機(jī)';INTOTABLECCBROWSE命令執(zhí)行結(jié)果如圖7.3.16所示。圖7.3.16例7.22命令執(zhí)行結(jié)果7.3.1VisualFoxPro的SQL查詢命令例507.3.2VisualFoxPro的SQL定義命令

VisualFoxPro的SQL定義命令用于定義表結(jié)構(gòu)、定義視圖、修改表結(jié)構(gòu)以及刪除表或視圖。定義表結(jié)構(gòu)簡單命令格式:CREATETABLE<表名>[FREE](<字段名1><數(shù)據(jù)類型>[(<字段寬度>[,<小數(shù)位數(shù)>])][,<字段名2><數(shù)據(jù)類型>[(<字段寬度>[,<小數(shù)位數(shù)>])]……])命令功能:建立一個含有指定字段的空表。7.3.2VisualFoxPro的SQL定義命令517.3.2VisualFoxPro的SQL定義命令

說明:(1)若使用FREE子句,或當(dāng)前沒有打開的數(shù)據(jù)庫,則所建立的表為自由表;否則,所建立的表成為當(dāng)前數(shù)據(jù)庫中的數(shù)據(jù)表。(2)表示<數(shù)據(jù)類型>的符號見表7.3.1。只有字符型、數(shù)值型、浮點(diǎn)型和雙精度型需要指定字段寬度或小數(shù)位數(shù),其他數(shù)據(jù)類型的字段寬度省略,由系統(tǒng)自動給定。符號表示類型符號表示類型C字符型B雙精度型D日期型Y貨幣型T時間型L邏輯型N數(shù)值型M備注型F浮點(diǎn)型G通用型I整型表7.3.1各種數(shù)據(jù)類型的表示符號7.3.2VisualFoxPro的SQL定義命令說527.3.2VisualFoxPro的SQL定義命令

例7.23在學(xué)生管理數(shù)據(jù)庫中建立學(xué)生檔案表,結(jié)構(gòu)與學(xué)生表相同。使用命令:OPENDATABASE學(xué)生管理CREATETABLE學(xué)生檔案(學(xué)號C(7),班級編號C(2),姓名C(8),性別C(2),;出生日期D,黨團(tuán)員L,專業(yè)C(8),入學(xué)成績N(8,0),;e_mailC(15),簡歷M)執(zhí)行上述命令,在學(xué)生管理數(shù)據(jù)庫中,創(chuàng)建了一個名為“學(xué)生檔案”的空表。

7.3.2VisualFoxPro的SQL定義命令例537.3.2VisualFoxPro的SQL定義命令

修改表結(jié)構(gòu)簡單命令格式1:ALTERTABLE<表名>ADD<新字段名><字段類型>[(<字段寬度>[,<小數(shù)位數(shù)>])]命令功能:為指定表增加一個新的字段。簡單命令格式2:ALTERTABLE<表名>ALTER<字段名><字段類型>[(<字段寬度>[,<小數(shù)位數(shù)>])]命令功能:對指定表修改指定字段的數(shù)據(jù)類型、字段寬度或小數(shù)位數(shù)。簡單命令格式3:ALTERTABLE<表名>DROP<字段名>命令功能:從指定表中刪除指定字段。7.3.2VisualFoxPro的SQL定義命令修547.3.2VisualFoxPro的SQL定義命令

例7.24為學(xué)生檔案表增加一個通用型字段用以存放學(xué)生照片。執(zhí)行命令:ALTERTABLE學(xué)生檔案ADD照片G例7.25把學(xué)生檔案表的入學(xué)成績字段的數(shù)據(jù)類型改為整型。執(zhí)行命令:ALTERTABLE學(xué)生檔案ALTER入學(xué)成績I例7.26刪除學(xué)生檔案表的照片字段。執(zhí)行命令:ALTERTABLE學(xué)生檔案DROP照片7.3.2VisualFoxPro的SQL定義命令例557.3.2VisualFoxPro的SQL定義命令

定義視圖簡單命令格式:CREATESQLVIEW<視圖名>AS<SQL_SELECT命令>命令功能:由SQL_SELECT的描述生成指定的視圖定義。例7.27由學(xué)生檔案表生成視圖“英語專業(yè)學(xué)生”,該視圖含有英語專業(yè)的學(xué)生信息。執(zhí)行命令:CREATESQLVIEW英語專業(yè)學(xué)生ASSELECT*FROM學(xué)生檔案;WHERE專業(yè)='英語'7.3.2VisualFoxPro的SQL定義命令定567.3.2VisualFoxPro的SQL定義命令

4.刪除表和視圖命令格式1:DROPTABLE<表名>命令功能:刪除指定表。例7.28刪除學(xué)生檔案表。執(zhí)行命令:DROPTABLE學(xué)生檔案命令格式2:DROPVIEW<視圖名>命令功能:刪除指定視圖。例7.29刪除英語專業(yè)學(xué)生視圖。執(zhí)行命令:DROPVIEW英語專業(yè)學(xué)生提示:學(xué)生檔案表被英語專業(yè)學(xué)生視圖引用,當(dāng)該表被刪除后,引用該表的視圖雖在,但該視圖已無法使用。7.3.2VisualFoxPro的SQL定義命令4577.3.3VisualFoxPro的SQL操縱命令

VisualFoxPro的SQL數(shù)據(jù)操縱命令用于對表中的記錄進(jìn)行更新,包括插入記錄、刪除記錄和修改記錄。插入記錄命令格式:INSERTINTO<表名>[(<字段名1>[,<字段名2>,...])]

VALUES(<表達(dá)式1>[,<表達(dá)式2>,...])命令功能:向指定表追加一條具有給定字段值的記錄。

7.3.3VisualFoxPro的SQL操縱命令587.3.3VisualFoxPro的SQL操縱命令

例7.30向?qū)W生表追加一條新記錄:2004120,02,李檸,女,12/25/85,F(xiàn),英語,608。執(zhí)行命令:INSERTINTO學(xué)生;(學(xué)號,班級編號,姓名,性別,出生日期,黨團(tuán)員,專業(yè),入學(xué)成績);VALUES;('2004120','02','李檸','女',{^1985-12-25},.F.,'英語',608)說明:命令執(zhí)行后,記錄指針指向追加的新記錄。若被追加記錄的表尚未打開,命令執(zhí)行時系統(tǒng)自動選擇一個新的工作區(qū)把表打開追加記錄,但當(dāng)前工作區(qū)不變化;若被追加記錄的表已經(jīng)打開,但不在當(dāng)前工作區(qū),命令執(zhí)行后,當(dāng)前工作區(qū)不變化。若省略字段名列表,則表示字段值的各表達(dá)式的排列順序要與字段在表結(jié)構(gòu)中的定義順序一致。7.3.3VisualFoxPro的SQL操縱命令例597.3.3VisualFoxPro的SQL操縱命令

修改記錄命令格式:UPDATE<表名>SET<字段名1>=<表達(dá)式1>[,<字段名2>=<表達(dá)式2>……][WHERE<條件>]命令功能:對指定表中滿足條件的記錄,用指定表達(dá)式的值修改相應(yīng)字段值。說明:省略WHERE<條件>時,表示對表中所有記錄執(zhí)行指定的修改操作。例7.31修改學(xué)生表中李檸的記錄,將“黨團(tuán)員”改為“真值”,“專業(yè)”改為“管理”。執(zhí)行命令:UPDATE學(xué)生SET黨團(tuán)員=.T.,專業(yè)='管理';WHERE學(xué)號='2004120'7.3.3VisualFoxPro的SQL操縱命令修607.3.3VisualFoxPro的SQL操縱命令

刪除記錄命令格式:DELETEFROM<表名>[WHERE<條件>]命令功能:在指定表中,為滿足條件的記錄加刪除標(biāo)記。說明:省略WHERE<條件>時,表示為表中所有記錄加刪除標(biāo)記。例7.32將學(xué)生表中,學(xué)生李檸的記錄刪除。執(zhí)行命令:DELETEFROM學(xué)生WHERE學(xué)號='2004120'SELECT學(xué)生PACK7.3.3VisualFoxPro的SQL操縱命令刪617.3.3VisualFoxPro的SQL操縱命令

上例中,無論學(xué)生表是否處于打開狀態(tài),均可執(zhí)行DELETEFROM命令。該命令執(zhí)行后,學(xué)生表一定處于打開狀態(tài),但未必在當(dāng)前工作區(qū)。而該刪除命令僅僅為要刪除的記錄添加刪除標(biāo)記。如果要物理刪除該記錄,就要先使學(xué)生表所在工作區(qū)為當(dāng)前工作區(qū),然后執(zhí)行PACK命令,使學(xué)生李檸的記錄被真正刪除。例7.33邏輯刪除學(xué)生表的所有記錄,再去掉所有刪除標(biāo)記。執(zhí)行命令:DELETEFROM學(xué)生SELECT學(xué)生BROWSERECALLALLBROWSE7.3.3VisualFoxPro的SQL操縱命令627.4查詢程序設(shè)計(jì)實(shí)例7.4查詢程序設(shè)計(jì)實(shí)例637.4查詢程序設(shè)計(jì)實(shí)例例7.34根據(jù)學(xué)生表設(shè)計(jì)如圖7.4.1所示的查詢表單,具有按學(xué)號和專業(yè)查詢學(xué)生檔案的功能,文件名為“學(xué)生檔案查詢.SCX”。圖7.4.1例7.34表單設(shè)計(jì)界面7.4查詢程序設(shè)計(jì)實(shí)例例7.34根據(jù)學(xué)生表設(shè)計(jì)如圖7647.4查詢程序設(shè)計(jì)實(shí)例查詢按鈕的Click事件代碼如下:iffile("temp.dbf")useintempdeletefiletemp.dbfendififthisform.OptiongroupQuery.value=1ifnotempty(alltrim(thisform.Txt學(xué)號.value))select*from學(xué)生where;學(xué)生.學(xué)號=alltrim(thisform.Txt學(xué)號.value)intodbftempselecttempbrowsetitle"查詢結(jié)果"elsemessagebox("請輸入學(xué)號!",0+64+0,"查詢提示")endifelseifnotempty(thisform.Combo專業(yè).value)select*from學(xué)生where學(xué)生.專業(yè)=thisform.Combo專業(yè).value;orderby學(xué)生.班級編號intodbftempselecttempbrowsetitle"查詢結(jié)果"elsemessagebox("請指定專業(yè)!",0+64+0,"查詢提示")endifendif7.4查詢程序設(shè)計(jì)實(shí)例查詢按鈕的Click事件代碼如下:657.4查詢程序設(shè)計(jì)實(shí)例保存表單。關(guān)閉表單設(shè)計(jì)器窗口,在【另存為】對話框中選擇保存位置,輸入表單文件名“學(xué)生檔案查詢”,單擊【保存】按鈕。運(yùn)行表單。在命令窗口鍵入如下命令:DOFORM學(xué)生檔案查詢運(yùn)行結(jié)果參見圖7.4.2。圖7.4.2例7.34表單運(yùn)行結(jié)果參考7.4查詢程序設(shè)計(jì)實(shí)例保存表單。關(guān)閉表單設(shè)計(jì)器窗口,在【667.5上機(jī)指導(dǎo)7.5.1創(chuàng)建單表查詢

7.5.2創(chuàng)建多表查詢

7.5.3在表單中顯示視圖及更新數(shù)據(jù)

7.5上機(jī)指導(dǎo)7.5.1創(chuàng)建單表查詢677.5.1創(chuàng)建單表查詢例7.35根據(jù)學(xué)生數(shù)據(jù)表建立查詢文件RXJF.QPR,按性別查詢平均入學(xué)分?jǐn)?shù)。操作步驟簡述如下:(1)打開查詢設(shè)計(jì)器并添加表。選擇【文件】|【新建】|【查詢】命令,單擊【新建文件】按鈕,選擇數(shù)據(jù)表“學(xué)生”,單擊【添加】按鈕,單擊【關(guān)閉】按鈕。(2)選擇字段。單擊【字段】選項(xiàng)卡標(biāo)簽,在【可用字段】列表中,雙擊“學(xué)生.性別”,將該字段添加到【選定字段】列表中。單擊【函數(shù)和表達(dá)式】文本框右側(cè)的按鈕,打開表達(dá)式生成器,在【數(shù)學(xué)】函數(shù)下拉列表中單擊求平均值的函數(shù)AVG,在【字段】列表中雙擊“入學(xué)成績”,這時,【表達(dá)式】文本框中顯示:AVG(學(xué)生.入學(xué)成績),在其后輸入:AS平均入學(xué)成績,使表達(dá)式文本框中顯示:AVG(學(xué)生.入學(xué)成績)AS平均入學(xué)成績,單擊【確定】按鈕,該表達(dá)式出現(xiàn)在【函數(shù)和表達(dá)式】文本框中,單擊【添加】按鈕,把該表達(dá)式添加到【選定字段】列表中。

7.5.1創(chuàng)建單表查詢例7.35根據(jù)學(xué)生數(shù)據(jù)表建立查687.5.1創(chuàng)建單表查詢(3)分組記錄。單擊【分組依據(jù)】選項(xiàng)卡標(biāo)簽,在【可用字段】列表中,選中“學(xué)生.性別”,單擊【添加】按鈕,把該字段添加到【分組字段】列表中。(4)運(yùn)行查詢。選擇【查詢】|【運(yùn)行查詢】命令,在瀏覽窗口中顯示的查詢結(jié)果如圖7.5.1所示。(5)保存查詢。關(guān)閉查詢設(shè)計(jì)器窗口,在【保存】對話框中輸入文件名“RXJF”,單擊【確定】按鈕。

圖7.5.1例7.35查詢結(jié)果7.5.1創(chuàng)建單表查詢(3)分組記錄。圖7.5.1例697.5.2創(chuàng)建多表查詢例7.36根據(jù)學(xué)生表和成績表建立查詢文件ZCJ.QPR,查詢學(xué)生的學(xué)號、姓名、性別、專業(yè)、計(jì)算機(jī)、英語、高等數(shù)學(xué)成績和總分,查詢結(jié)果首先按專業(yè)升序排列記錄,專業(yè)相同時按總分降序排列記錄。操作步驟簡述如下:(1)打開查詢設(shè)計(jì)器并添加表。選擇【文件】|【新建】|【查詢】命令,單擊【新建文件】按鈕,選擇數(shù)據(jù)表“學(xué)生”,單擊【添加】按鈕,選擇數(shù)據(jù)表“成績”,單擊【添加】按鈕。(2)建立表間連接。接上步,在打開的連接條件對話框中,系統(tǒng)給出默認(rèn)連接條件為:學(xué)生.學(xué)號=成績.學(xué)號,連接類型為內(nèi)部連接,恰好滿足本例設(shè)計(jì)要求,單擊【確定】按鈕,單擊【關(guān)閉】按鈕。(3)選擇字段。單擊【字段】選項(xiàng)卡標(biāo)簽,在【可用字段】列表中,依次雙擊“學(xué)生.學(xué)號”、“學(xué)生.姓名”、“學(xué)生.性別”、“學(xué)生.專業(yè)”、“成績.計(jì)算機(jī)”、“成績.英語”、“成績.高等數(shù)學(xué)”,將所需字段添加到【選定字段】列表中。單擊【函數(shù)和表達(dá)式】文本框右側(cè)的按鈕,打開【表達(dá)式生成器】,從【來源于表】下拉列表中選擇“成績”,在【字段】列表中,依次雙擊“計(jì)算機(jī)”、“英語”、“高等數(shù)學(xué)”,在表達(dá)式文本框的這3個字段之間鍵入加號,在行尾輸入:AS總分,形成表達(dá)式:成績.計(jì)算機(jī)+成績.英語+成績.高等數(shù)學(xué)AS總分,單擊【確定】按鈕,單擊【添加】按鈕,把該表達(dá)式添加到【選定字段】列表中。7.5.2創(chuàng)建多表查詢例7.36根據(jù)學(xué)生表和成績表建707.5.2創(chuàng)建多表查詢(4)排序記錄。單擊【排序依據(jù)】選項(xiàng)卡,在【選定字段】列表中,首先雙擊“學(xué)生.專業(yè)”,在【排序選項(xiàng)】中單擊【升序】,然后雙擊用于計(jì)算總分的表達(dá)式,在【排序選項(xiàng)】中單擊【降序】。(5)運(yùn)行查詢。選擇【查詢】|【運(yùn)行查詢】命令,查詢結(jié)果如圖7.5.2所示。(6)保存查詢。關(guān)閉查詢設(shè)計(jì)器窗口,在【保存】對話框中輸入文件名ZCJ,單擊【確定】按鈕。

圖7.5.2例7.36查詢結(jié)果7.5.2創(chuàng)建多表查詢(4)排序記錄。圖7.5.2例717.5.3在表單中顯示視圖及更新數(shù)據(jù)

例7.37為例7.6創(chuàng)建的視圖“更改專業(yè)”。建立數(shù)據(jù)編輯表單,僅允許修改專業(yè)字段,并可隨時瀏覽源表的相應(yīng)變化,表單文件名為“更改專業(yè).SCX”。操作過程簡述如下:(1)創(chuàng)建表單。為簡化表單設(shè)計(jì)過程,采用向?qū)Х绞絼?chuàng)建表單,過程如下:選擇【文件】|【新建】|【表單】|【向?qū)А棵?,單擊【表單向?qū)А?,單擊【確定】按鈕。在向?qū)Р襟E1中,選擇學(xué)生數(shù)據(jù)庫中的更改專業(yè)視圖的全部字段為選定字段。在向?qū)Р襟E2中,選擇浮雕樣式和文本按鈕。在向?qū)Р襟E4中,輸入表單標(biāo)題“使用視圖更改專業(yè)”;選擇【保存表單并用表單設(shè)計(jì)器修改表單】,單擊【完成】按鈕,輸入表單文件名“更改專業(yè)”。單擊【保存】按鈕。7.5.3在表單中顯示視圖及更新數(shù)據(jù)例7.37為例727.5.3在表單中顯示視圖及更新數(shù)據(jù)

(2)修改表單。如圖7.5.3所示,在已打開的表單設(shè)計(jì)器中修改所創(chuàng)建的表單。圖7.5.3例7.37表單7.5.3在表單中顯示視圖及更新數(shù)據(jù)(2)修改表單。圖737.5.3在表單中顯示視圖及更新數(shù)據(jù)

修改表單Form1的如下屬性:Height:240MaxButton:.F.Width:400修改標(biāo)簽控件Label1的如下屬性:Top:8Left:59(可使用系統(tǒng)菜單的【格式】|【對齊】|【水平居中】自動設(shè)置)分別修改形狀控件Shape1、Shape2、Shape3和Shape4的如下屬性:Left:25(可用水平居中自動設(shè)置)Width:350Top:42、43、162和163為表示字段標(biāo)題的標(biāo)簽控件設(shè)置相關(guān)屬性。為與字段對應(yīng)的文本框控件設(shè)置相關(guān)屬性。7.5.3在表單中顯示視圖及更新數(shù)據(jù)修改表單Form1747.5.3在表單中顯示視圖及更新數(shù)據(jù)

修改容器控件ButtonSet1的如下屬性:Height:48Left:25Top:176Width:350修改命令按鈕組中各命令按鈕控件的相關(guān)屬性。修改命令按鈕控件cmdPrint的Caption屬性為:瀏覽源表。為cmdPrint的Click事件添加如下代碼:SELECT學(xué)生BROWSENOMODIFY

7.5.3在表單中顯示視圖及更新數(shù)據(jù)修改容器控件But757.5.3在表單中顯示視圖及更新數(shù)據(jù)

(3)保存表單。關(guān)閉表單設(shè)計(jì)器窗口,保存對表單的修改。(4)運(yùn)行表單。在命令窗口鍵入如下命令:DOFORM更改專業(yè)在表單中,用定位按鈕或查詢按鈕,定位到要修改專業(yè)的記錄。單擊【編輯】按鈕進(jìn)入記錄編輯狀態(tài),修改當(dāng)前記錄的專業(yè)字段值,單擊【保存】按鈕。單擊【瀏覽源表】按鈕,在瀏覽窗口中可以看到源表相應(yīng)記錄的專業(yè)字段值被修改。最后單擊ESC鍵關(guān)閉瀏覽窗口。7.5.3在表單中顯示視圖及更新數(shù)據(jù)(3)保存表單。767.6習(xí)題

7.6習(xí)題

777.6習(xí)題1.填空題(1)查詢文件的默認(rèn)擴(kuò)展名為

。(2)若有查詢文件:MyQuery.QPR,執(zhí)行該查詢的命令為

。(3)查詢設(shè)計(jì)器的【連接】選項(xiàng)卡在創(chuàng)建

查詢時使用,默認(rèn)的連接類型為

。(4)與查詢設(shè)計(jì)器【篩選】選項(xiàng)卡設(shè)置相對應(yīng)的SQL_SELECT子句是

子句。(5)與查詢設(shè)計(jì)器【排序依據(jù)】選項(xiàng)卡設(shè)置相對應(yīng)的SQL_SELECT子句是

子句。(6)在查詢設(shè)計(jì)器的“分組依據(jù)”選項(xiàng)卡中,“滿足條件…”所對應(yīng)的SQL_SELECT命令子句是

子句。(7)在查詢設(shè)計(jì)器的【雜項(xiàng)】選項(xiàng)卡中,選中“無重復(fù)記錄”所對應(yīng)的SQL_SELECT命令的關(guān)鍵字是

。(8)在SQL_SELECT命令中,將查詢結(jié)果輸出到表文件中,應(yīng)該使用

子句。7.6習(xí)題1.填空題787.6習(xí)題1.填空題(9)在學(xué)生表中查詢非黨團(tuán)員學(xué)生信息,請寫出相應(yīng)的SQL_SELECT命令:

。(10)在學(xué)生表和成績表中查詢01班學(xué)生的學(xué)號、姓名、班級編號和英語成績,請寫出相應(yīng)的SQL_SELECT命令:

(11)在學(xué)生表中查詢各專業(yè)的學(xué)生入學(xué)最高分,平均分和人數(shù),請寫出對應(yīng)的SQL_SELECT命令:

。(12)在學(xué)生表中查詢英語和管理專業(yè)學(xué)生的學(xué)號、姓名和性別,按專業(yè)排序,請寫出對應(yīng)的SQL_SELECT命令:

。(13)使用SQL命令創(chuàng)建表“登記表”,含有:姓名、性別、出生日期、身高、簡歷和照片字段,對應(yīng)的命令為:

。(14)為(13)題創(chuàng)建的登記表添加一個聯(lián)系電話字段,對應(yīng)的SQL命令為:

。(15)將(13)題創(chuàng)建的登記表的身高字段刪除,對應(yīng)的SQL命令為:

。7.6習(xí)題1.填空題797.6習(xí)題1.填空題(16)向(13)題所創(chuàng)建的登記表中添加一條記錄:章曉明,男,1980年5月31日出生,對應(yīng)的SQL命令為:

。(17)在(16)題的結(jié)果上,向登記表中寫入章曉明的聯(lián)系電話:01012345678,對應(yīng)的SQL命令為:UPDATE登記表SET

WHERE

。(18)使用SQL命令創(chuàng)建視圖:計(jì)算機(jī)學(xué)生選課,其中含有計(jì)算機(jī)專業(yè)學(xué)生的學(xué)號、姓名、專業(yè)和課程名,請對如下命令填空:

CREATESQL

ASSELECT學(xué)號,姓名,專業(yè),

FROM學(xué)生,

WHERE

。(19)刪除(13)題所創(chuàng)建的表,對應(yīng)的SQL命令為:DROP

登記表。(20)刪除(16)題所創(chuàng)建的視圖,對應(yīng)的SQL命令為:DROP

計(jì)算機(jī)學(xué)生選課。7.6習(xí)題1.填空題807.6習(xí)題2.選擇題(1)通過選擇相應(yīng)菜單打開一個在當(dāng)前目錄下已經(jīng)存在的查詢文件MyQuery.QPR后,系統(tǒng)在命令窗口自動生成的命令是()。AOPENQUERYMyQuery.QPR BMODIFYQUERYMyQuery.QPRCDOQUERYMyQuery.QPR DCREATEQUERYMyQuery.QPR(2)在VisualFoxPro中,關(guān)于視圖的正確敘述是()。A視圖與數(shù)據(jù)庫表相同,用來存儲數(shù)據(jù)B視圖不能同數(shù)據(jù)庫表建立連接C在視圖上不能進(jìn)行更新操作D視圖是從一個或多個數(shù)據(jù)庫表導(dǎo)出的虛擬表(3)下面有關(guān)視圖的描述正確的是()。A可以使用MODIFYSTRUCTURE命令修改視圖的結(jié)構(gòu)B視圖不能刪除,否則影響源表C視圖是由表復(fù)制產(chǎn)生的D使用SQL_SELECT命令對視圖進(jìn)行查詢時,

必須事先打開該視圖所在的數(shù)據(jù)庫7.6習(xí)題2.選擇題817.6習(xí)題2.選擇題(4)視圖設(shè)計(jì)器中含有的、而查詢設(shè)計(jì)器中沒有的選項(xiàng)卡是()。A篩選 B排序依據(jù) C分組依據(jù) D更新條件(5)在SQL語句中,與表達(dá)式"入學(xué)成績BETWEEN590AND610"功能相同的表達(dá)式是()。A入學(xué)成績>=590AND入學(xué)成績<=610B入學(xué)成績>590AND入學(xué)成績<610C入學(xué)成績<=590AND入學(xué)成績>610D入學(xué)成績>=590OR入學(xué)成績<=610(

溫馨提示

  • 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)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。

評論

0/150

提交評論