VF查詢(xún)與視圖設(shè)計(jì)精講_第1頁(yè)
VF查詢(xún)與視圖設(shè)計(jì)精講_第2頁(yè)
VF查詢(xún)與視圖設(shè)計(jì)精講_第3頁(yè)
VF查詢(xún)與視圖設(shè)計(jì)精講_第4頁(yè)
VF查詢(xún)與視圖設(shè)計(jì)精講_第5頁(yè)
已閱讀5頁(yè),還剩60頁(yè)未讀, 繼續(xù)免費(fèi)閱讀

下載本文檔

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

文檔簡(jiǎn)介

1、 數(shù)據(jù)查詢(xún)是數(shù)據(jù)處理中最常用的操作之一,查詢(xún)可以從一個(gè)或多個(gè)表中提取所需要的數(shù)據(jù),可以通過(guò)設(shè)計(jì)相應(yīng)的查詢(xún)或視圖來(lái)實(shí)現(xiàn),是快速方便地從數(shù)據(jù)庫(kù)中提取數(shù)據(jù)的一種方法。 查詢(xún)實(shí)際上是指擴(kuò)展名為.QPR的查詢(xún)文件,其主體是SQL SELECT語(yǔ)句,視圖則兼有表和查詢(xún)的特點(diǎn),是在數(shù)據(jù)庫(kù)表的基礎(chǔ)上建立的一個(gè)虛擬表,視圖不能獨(dú)立存在而是被保存在數(shù)據(jù)庫(kù)中。查詢(xún)和視圖的設(shè)計(jì)可以用相應(yīng)的設(shè)計(jì)器來(lái)實(shí)現(xiàn),也可以使用SQL語(yǔ)言實(shí)現(xiàn)。 6 61 1 查詢(xún)?cè)O(shè)計(jì)查詢(xún)?cè)O(shè)計(jì) 查詢(xún)可以實(shí)現(xiàn)對(duì)數(shù)據(jù)庫(kù)中數(shù)據(jù)的瀏覽、篩選、排序、檢索、統(tǒng)計(jì)及加工等操作;利用查詢(xún)可以為其他數(shù)據(jù)庫(kù)提供新的數(shù)據(jù)表,可以從單個(gè)表中提取有用的數(shù)據(jù),也可以從多個(gè)表中提

2、取綜合信息。 然后按需要定向輸出查詢(xún)的結(jié)果,查詢(xún)結(jié)果輸出類(lèi)型有:瀏覽器、表、臨時(shí)表、報(bào)表、標(biāo)簽、屏幕等。查詢(xún)是以擴(kuò)展名為QPR的文本文件保存在磁盤(pán)上,它的主體是SQL SELECT語(yǔ)句以及與定向輸出有關(guān)的語(yǔ)句。 6 61 11 1 查詢(xún)?cè)O(shè)計(jì)器查詢(xún)?cè)O(shè)計(jì)器 1 1啟動(dòng)查詢(xún)?cè)O(shè)計(jì)器啟動(dòng)查詢(xún)?cè)O(shè)計(jì)器 打開(kāi)查詢(xún)?cè)O(shè)計(jì)器 ,常用的有菜單操作和命令操作。 方法一:CREATE QUERY 方法二:選擇“文件”“ 新建”選項(xiàng),或單擊“常用”工具欄上的“新建”按鈕,打開(kāi)“新建”對(duì)話(huà)框,然后選擇“查詢(xún)” 。 方法三:在項(xiàng)目管理器中的“數(shù)據(jù)”選項(xiàng)卡下選擇“查詢(xún)”,然后單擊“新建”命令按鈕。 打開(kāi)如圖6-1“ 添加表或視圖

3、”對(duì)話(huà)框,選擇用于建立查詢(xún)的表或視圖。選中所需要的表或視圖,單擊“添加”按鈕將表或視圖添加到查詢(xún)?cè)O(shè)計(jì)器中。當(dāng)選擇完表或視圖后,單擊“關(guān)閉”按鈕進(jìn)入查詢(xún)?cè)O(shè)計(jì)器界面 如圖6-2。 圖6-1 為查詢(xún)添加表或視圖 添加“學(xué)生”、“選課成績(jī)”、“課程”三個(gè)表 圖6-2 查詢(xún)?cè)O(shè)計(jì)器窗口 查詢(xún)基于多個(gè)表時(shí),表之間必須有聯(lián)系。查詢(xún)?cè)O(shè)計(jì)器自動(dòng)根據(jù)聯(lián)系提取聯(lián)接條件,否則還會(huì)打開(kāi)一個(gè)指定聯(lián)接條件的對(duì)話(huà)框,由用戶(hù)來(lái)確定聯(lián)接條件,如圖6-3所示的聯(lián)接條件對(duì)話(huà)框。 圖6-3 聯(lián)接條件對(duì)話(huà)框 2 2查詢(xún)?cè)O(shè)計(jì)器的選項(xiàng)卡查詢(xún)?cè)O(shè)計(jì)器的選項(xiàng)卡 查詢(xún)?cè)O(shè)計(jì)器界面有6個(gè)選項(xiàng)卡,其功能和SQL SELECT語(yǔ)句的各個(gè)短語(yǔ)是相對(duì)應(yīng)的。前面已

4、經(jīng)選擇了設(shè)計(jì)查詢(xún)的表或視圖,對(duì)應(yīng)于FROM短語(yǔ)。 字段:在該選項(xiàng)卡中設(shè)置查詢(xún)結(jié)果中要包含的字段,對(duì)應(yīng)于SELECT短語(yǔ)中的輸出字段,在“可用字段”列表框中選中要顯示的字段,添加到“選定字段”列表框中;如果要輸出全部字段,單擊“全部添加”按鈕;在“函數(shù)和表達(dá)式”編輯框中可以輸入、編輯或由“表達(dá)式生成器”生成一個(gè)計(jì)算表達(dá)式,由此生成一個(gè)計(jì)算字段。 聯(lián)接:該選項(xiàng)卡對(duì)應(yīng)于JOIN ON短語(yǔ),用于編輯聯(lián)接條件,從多個(gè)表中查詢(xún)字段信息。 篩選:該選項(xiàng)卡對(duì)應(yīng)于WHERE短語(yǔ),用于指定查詢(xún)條件。 排序依據(jù):該選項(xiàng)卡對(duì)應(yīng)于ORDER BY短語(yǔ),用于指定排序的字段(將需要排序的字段添加到排序條件框中)和排序方式(

5、升序或降序)。 分組依據(jù):該選項(xiàng)卡對(duì)應(yīng)于GROUP BY短語(yǔ)和HAVING短語(yǔ),用于設(shè)置分組條件。將需要分組的字段添加到分組字段框中,如需要設(shè)置HAVING分組條件,單擊“滿(mǎn)足條件”按鈕,打開(kāi)“滿(mǎn)足條件”窗口,設(shè)置分組條件。 雜項(xiàng):在該選項(xiàng)卡中可以指定是否需要顯示重復(fù)記錄(對(duì)應(yīng)于DISTINCE)以及是否顯示全部記錄或只顯示前面有多少個(gè)記錄(對(duì)應(yīng)于TOP短語(yǔ))等。 6 61 12 2 建立查詢(xún)建立查詢(xún) 例6-1: 在學(xué)生、選課成績(jī)和課程三個(gè)表中設(shè)計(jì)查詢(xún),要求:只查詢(xún)出學(xué)生所修課程號(hào)是以“G” 開(kāi)頭的課程,并以課程號(hào)分組,統(tǒng)計(jì)出各組的期末分的平均值,并且只顯示期末分=80的記錄,按課程名稱(chēng)的降序

6、排列,最后輸出學(xué)號(hào)、姓名、課程號(hào)、課程名稱(chēng)等字段和期末平均分計(jì)算字段。 1啟動(dòng)查詢(xún)?cè)O(shè)計(jì)器,將學(xué)生、選課成績(jī)和課程3個(gè)表添加到查詢(xún)?cè)O(shè)計(jì)器中,并建立這3個(gè)表的聯(lián)接,打開(kāi)如圖6-2建立查詢(xún)的設(shè)計(jì)器窗口。 2 2選取查詢(xún)所要顯示的字段選取查詢(xún)所要顯示的字段 在“字段”選項(xiàng)卡中選擇“學(xué)號(hào)”、“姓名”、“課程號(hào)”和“課程名稱(chēng)”字段;要顯示各組課程的期末分平均值,這是一個(gè)計(jì)算字段,則在“函數(shù)和表達(dá)式”框中輸入計(jì)算表達(dá)式或打開(kāi)“表達(dá)式生成器”對(duì)話(huà)框,如圖6-4所示,在該對(duì)話(huà)框中編輯計(jì)算表達(dá)式“AVG(選課成績(jī).期末分) AS 期末平均分”,其功能是求出各組課程的期末平均分,并以“期末平均分”為字段名輸出。添加

7、選定字段和計(jì)算字段如圖6-5所示。 創(chuàng)建計(jì)算字段“期末平均分” 圖6-4 表達(dá)式生成器 添加字段以及計(jì)算字段 圖6-5 選定的字段及計(jì)算字段 單擊“查詢(xún)?cè)O(shè)計(jì)器”工具欄上的“SQL” 按鈕,可以顯示和該操作相對(duì)應(yīng)的SQL命令: SELECT 學(xué)生.學(xué)號(hào), 學(xué)生.姓名, 課程.課程號(hào), 課程.課程名稱(chēng), AVG(選課成績(jī).期末分) AS 期末平均分 3 3設(shè)置篩選條件設(shè)置篩選條件 選中“篩選”選項(xiàng)卡,篩選出所有的課程中以“G” 開(kāi)頭的課程,如圖6-6所示。 圖6-6 設(shè)置篩選條件 SQL SELECT語(yǔ)句中相當(dāng)于: WHERE 課程.課程號(hào) LIKE “ G%” 4 4設(shè)置排序查詢(xún)?cè)O(shè)置排序查詢(xún) 選

8、中“排序依據(jù)”選項(xiàng)卡,將“課程名稱(chēng)”字段添加到“排序條件”列表框中,并選擇單選按鈕“降序”,按“課程名稱(chēng)”的降序排序。 圖6-7 設(shè)置排序依據(jù) 在SQL SELECT語(yǔ)句中相當(dāng)于: ORDER BY 課程.課程名稱(chēng) DESC 5 5設(shè)置分組依據(jù)設(shè)置分組依據(jù) 在設(shè)置“篩選”條件基礎(chǔ)上篩選出所有以“G” 開(kāi)頭課程號(hào)后,再以“課程號(hào)”進(jìn)行分組,分組的目的是統(tǒng)計(jì)各組期末平均分。將“課程號(hào)”添加到“分組字段”列表框中,以“課程號(hào)”分組。同時(shí)要對(duì)期末平均分再作一個(gè)篩選,既篩選出某組的期末平均分大于等于80的課程信息,因此單擊“滿(mǎn)足條件” 按鈕,打開(kāi)“滿(mǎn)足條件”窗口,在該窗口中設(shè)置篩選條件。如圖6-8 ,圖

9、6-9 。 圖6-8 設(shè)置分組依據(jù) 圖6-9 設(shè)置分組后的篩選條件 圖6-10 沒(méi)有設(shè)置篩選條件的顯示結(jié)果 圖6-11 設(shè)置篩選條件的顯示結(jié)果 SQL SELECT語(yǔ)句中相當(dāng)于: GROUP BY 選課成績(jī).課程號(hào) HAVING AVG(選課成績(jī).期末分)=80 6設(shè)置雜項(xiàng) 在上述設(shè)置的基礎(chǔ)上,如只想顯示查詢(xún)結(jié)果的前兩條記錄,則在“雜項(xiàng)”選項(xiàng)卡中取消“全部”復(fù)選項(xiàng)前的“”,并在“記錄個(gè)數(shù)”數(shù)據(jù)顯示框中輸入“2” ,如圖6-12所示。運(yùn)行后顯示結(jié)果如圖6-13所示。 圖6-12 設(shè)置顯示記錄的個(gè)數(shù) 圖6-13 設(shè)置雜項(xiàng)后運(yùn)行結(jié)果 單擊“SQL” 按鈕,則顯示出相應(yīng)的SQL SELECT查詢(xún)代碼:

10、 SELECT TOP 2 學(xué)生.學(xué)號(hào), 學(xué)生.姓名, 課程.課程號(hào), 課程.課程名稱(chēng),AVG(選課成績(jī).期末分) AS 期末平均分; FROM 學(xué)生 INNER JOIN 選課成績(jī); INNER JOIN 課程 ; ON 選課成績(jī).課程號(hào) = 課程.課程號(hào) ; ON 學(xué)生.學(xué)號(hào) = 選課成績(jī).學(xué)號(hào); WHERE 課程.課程號(hào) LIKE G%; GROUP BY 選課成績(jī).課程號(hào); HAVING AVG(選課成績(jī).期末分) = 80; ORDER BY 課程.課程名稱(chēng) DESC 6 61 13 3 查詢(xún)文件的操作查詢(xún)文件的操作 使用查詢(xún)?cè)O(shè)計(jì)器設(shè)計(jì)查詢(xún)時(shí),可以邊設(shè)計(jì)、邊運(yùn)行,邊查看運(yùn)行結(jié)果,再修

11、改、再運(yùn)行,直至達(dá)到滿(mǎn)意的效果。 1 1運(yùn)行查詢(xún)文件運(yùn)行查詢(xún)文件 在查詢(xún)?cè)O(shè)計(jì)器中運(yùn)行 當(dāng)查詢(xún)?cè)O(shè)計(jì)器窗口處于打開(kāi)或選中狀態(tài)下,系統(tǒng)菜單上增加了一個(gè)“查詢(xún)”菜單,選擇“查詢(xún)”菜單中的“運(yùn)行查詢(xún)”選項(xiàng),或單擊常用工具欄上的“運(yùn)行”按鈕,顯示查詢(xún)結(jié)果。 利用菜單選項(xiàng)運(yùn)行 當(dāng)在查詢(xún)?cè)O(shè)計(jì)器中保存查詢(xún)文件后,或保存查詢(xún)文件后關(guān)閉查詢(xún)?cè)O(shè)計(jì)器,單擊“程序”菜單中的“運(yùn)行” 命令,打開(kāi)“運(yùn)行”對(duì)話(huà)框,選中要運(yùn)行的查詢(xún)文件,單擊“運(yùn)行”按鈕,可顯示查詢(xún)結(jié)果。 利用命令方式運(yùn)行 在命令窗口中輸入運(yùn)行查詢(xún)文件的命令, 其格式為:DO 注意:查詢(xún)文件名不能省略擴(kuò)展名.QPR。 2 2修改查詢(xún)文件修改查詢(xún)文件 當(dāng)查詢(xún)?cè)O(shè)計(jì)完

12、后,在任何時(shí)候都可以使用查詢(xún)?cè)O(shè)計(jì)器來(lái)修改已建立的查詢(xún)文件。打開(kāi)查詢(xún)?cè)O(shè)計(jì)器方法有: 選擇“文件”“ 打開(kāi)” 選項(xiàng),在“打開(kāi)”對(duì)話(huà)框中指定文件類(lèi)型為“查詢(xún)”,選擇要打開(kāi)的查詢(xún)文件,單擊“確定”按鈕。 打開(kāi)查詢(xún)?cè)O(shè)計(jì)器 在命令窗口中輸入打開(kāi)查詢(xún)?cè)O(shè)計(jì)器命令, 命令格式為: MODIFY QUERY 舉例來(lái)對(duì)例61建立的查詢(xún)文件進(jìn)行修改,修改為:使其統(tǒng)計(jì)的是所有課程號(hào)的第1個(gè)字符不是“G” 的各組課程的平均分,按各組平均分的降序排列,并顯示查詢(xún)的所有記錄。 設(shè)置“篩選”查詢(xún)條件:如圖6-14所示。 圖6-14 修改篩選條件的設(shè)置 修改排序順序 將以“課程名稱(chēng)”為排序依據(jù)的字段移到右邊的“選定字段”列表框內(nèi)

13、,再將“AVG(選課成績(jī)期末分)”這個(gè)計(jì)算字段添加到“排序條件”列表框內(nèi),表明是按期末分平均值的降序排列。如圖6-15所示。 圖6-15 修改排序依據(jù)的設(shè)置 修改雜項(xiàng)選項(xiàng)卡 單擊“雜項(xiàng)”選項(xiàng)卡,單擊“全部”復(fù)選框,顯示滿(mǎn)足條件的所有記錄。如圖6-16所示。 圖6-16 顯示滿(mǎn)足條件的所有記錄 3 3定向輸出查詢(xún)結(jié)果定向輸出查詢(xún)結(jié)果 在查詢(xún)?cè)O(shè)計(jì)器中可以根據(jù)需要為查詢(xún)輸出確定查詢(xún)?nèi)ハ?。如果不選擇查詢(xún)結(jié)果的去向,系統(tǒng)默認(rèn)將查詢(xún)結(jié)果顯示在“瀏覽”窗口中;如果要將查詢(xún)結(jié)果指定某個(gè)地點(diǎn),可以選擇輸出目的地。選擇“查詢(xún)”菜單下的“查詢(xún)?nèi)ハ颉保蛟凇安樵?xún)?cè)O(shè)計(jì)器”工具欄中單擊“查詢(xún)?nèi)ハ颉卑粹o,則將打開(kāi)一個(gè)“查詢(xún)

14、去向”對(duì)話(huà)框,如圖6-18所示。 圖6-18 查詢(xún)?nèi)ハ驅(qū)υ?huà)框 查詢(xún)?nèi)ハ虻木唧w含義如下: 瀏覽:在瀏覽(BROWSE)窗口中顯示查詢(xún)結(jié)果,此選項(xiàng)為默認(rèn)方式。 臨時(shí)表:將查詢(xún)結(jié)果保存到一個(gè)臨時(shí)的只讀表中。 表:將查詢(xún)結(jié)果保存到一個(gè)指定的表(.DBF)中。 圖形:將查詢(xún)結(jié)果輸出到圖形文件(Microsoft Graph)中,Graph是包含在Visual FoxPro中的一個(gè)獨(dú)立的應(yīng)用程序。 屏幕:將查詢(xún)結(jié)果輸出到Visual FoxPro主窗口或當(dāng)前活動(dòng)窗口中。 報(bào)表:將查詢(xún)結(jié)果輸出到一個(gè)報(bào)表文件(.FRX)中。 標(biāo)簽:將查詢(xún)結(jié)果輸出到一個(gè)標(biāo)簽文件(.LBX)中。 6 61 14 4 查詢(xún)?cè)O(shè)計(jì)器的

15、局限性查詢(xún)?cè)O(shè)計(jì)器的局限性 如果用戶(hù)對(duì)SQL SELECT語(yǔ)句非常熟悉和了解,是可以直接用各種文本編輯器來(lái)編寫(xiě)SQL SELECT語(yǔ)句建立查詢(xún),只是將文件的擴(kuò)展名保存為.QPR即可。而使用查詢(xún)?cè)O(shè)計(jì)器相對(duì)來(lái)說(shuō)比較容易一些。但必須注意的是,查詢(xún)?cè)O(shè)計(jì)器只能建立一些比較有規(guī)則的查詢(xún),對(duì)于復(fù)雜的查詢(xún)它是無(wú)能為力的。比如建立一個(gè)內(nèi)外層相互關(guān)聯(lián)的子查詢(xún)。 查詢(xún)出選修了“G0002” 課的學(xué)生,這些學(xué)生的期末成績(jī)比選修了“G0006” 課的最高期末成績(jī)還要高的學(xué)生的學(xué)號(hào)和期末成績(jī)。SQL SELECT語(yǔ)句如下: SELECT 學(xué)號(hào), 期末分 FROM 選課成績(jī) WHERE 課程號(hào)=G0002 AND 期末分AL

16、L(SELECT 期末分 FROM 選課成績(jī) WHERE 課程號(hào)=G0006) 上述的查詢(xún)涉及到嵌套查詢(xún)(子查詢(xún)),利用查詢(xún)?cè)O(shè)計(jì)器是設(shè)計(jì)不出來(lái)的。 6 62 2 視圖設(shè)計(jì)視圖設(shè)計(jì) 6 62 21 1 視圖的概念視圖的概念 視圖是一種虛表,兼有“表”和“查詢(xún)”兩者的特點(diǎn)。視圖具有表的屬性,視圖的打開(kāi)與關(guān)閉、設(shè)置屬性、修改結(jié)構(gòu)以及刪除等,都與表的操作相同。視圖又具有查詢(xún)的特點(diǎn),可以從一個(gè)或多個(gè)相關(guān)聯(lián)的表中提取信息,與查詢(xún)不同之處在于視圖可以更新數(shù)據(jù)源表,而查詢(xún)不能。視圖可以用來(lái)更新其記錄的值,并將更新結(jié)果送回到基本表(即源表)中并永久保存在磁盤(pán)上。 可以從本地表、其他已建立的視圖、儲(chǔ)存在服務(wù)器上的

17、表或遠(yuǎn)程數(shù)據(jù)源中的表創(chuàng)建視圖,因此視圖可以分為本地視圖和遠(yuǎn)程視圖。 本節(jié)主要討論本地視圖。 視圖可以查詢(xún)表中信息,也可以更新表中的記錄值。然而視圖是數(shù)據(jù)庫(kù)中的一個(gè)特有功能,只有當(dāng)包含視圖的數(shù)據(jù)庫(kù)打開(kāi)時(shí),視圖才可以使用。 6 62 22 2 視圖設(shè)計(jì)器視圖設(shè)計(jì)器 1 1打開(kāi)視圖設(shè)計(jì)器打開(kāi)視圖設(shè)計(jì)器 與查詢(xún)是一個(gè)獨(dú)立的文件不同,視圖不能單獨(dú)存在,它是數(shù)據(jù)庫(kù)中的一部分,因此在打開(kāi)視圖設(shè)計(jì)器創(chuàng)建視圖時(shí),或者某視圖已創(chuàng)建,打開(kāi)視圖設(shè)計(jì)器修改該視圖時(shí),必須首先打開(kāi)某一個(gè)數(shù)據(jù)庫(kù),在數(shù)據(jù)庫(kù)中建立視圖。打開(kāi)視圖設(shè)計(jì)器的方法有: “ 文件”“ 新建” “ 視圖”“ 新建文件”按鈕,打開(kāi)“添加表或視圖”對(duì)話(huà)框(圖6

18、-1),確定要?jiǎng)?chuàng)建的視圖所需要的表或另一個(gè)視圖,如果所需要的表不在數(shù)據(jù)庫(kù)中,則單擊“其他” 按鈕,添加自由表。添加表后,打開(kāi)視圖設(shè)計(jì)器,如圖6-20所示。 如果數(shù)據(jù)庫(kù)設(shè)計(jì)器打開(kāi),在該窗口中單擊右建,選擇“新建本地視圖” ,如圖6-21,打開(kāi)“新建本地視圖”對(duì)話(huà)框,如圖6-22所示。單擊“新建視圖”按鈕,同樣可以打開(kāi)圖6-20窗口。 使用命令:CREATE VIEW 也可以啟動(dòng)視圖設(shè)計(jì)器。 圖6-20 視圖設(shè)計(jì)器 圖6-21 數(shù)據(jù)庫(kù)中創(chuàng)建本地視圖打開(kāi)“新建本地視圖”對(duì)話(huà)框 圖6-22 新建本地視圖對(duì)話(huà)框 2 2視圖設(shè)計(jì)器的使用視圖設(shè)計(jì)器的使用 視圖設(shè)計(jì)器選項(xiàng)卡有7個(gè),多了一個(gè)“更新條件”,如圖6

19、-23所示,其它的6個(gè)選項(xiàng)卡的功能和用法與查詢(xún)?cè)O(shè)計(jì)器完全相同。 圖6-23 視圖設(shè)計(jì)器“更新條件”選項(xiàng)卡 “ 更新條件”選項(xiàng)卡用于設(shè)置更新數(shù)據(jù)的條件,其各選項(xiàng)的含義與用法如下: 表:列出添加到視圖設(shè)計(jì)器中的所有表。其下拉列表中選擇該視圖允許更新的表。如果選擇“全部表”,則在“字段名”列表框中顯示在視圖設(shè)計(jì)器中“字段”選項(xiàng)卡中選取的全部字段;如果只選擇其中的一個(gè)表,則在“字段名”列表框中只顯示該表中被選擇的字段。 字段名:該列表框列出了可以更新的字段,但要設(shè)置每個(gè)表的關(guān)鍵字段后才可以設(shè)置該表中要修改的字段。鑰匙符號(hào)含義為指定某字段是否為關(guān)鍵字段,如在字段前打上“”標(biāo)志,表明該字段為關(guān)鍵字段;鉛筆

20、符號(hào)含義為指定某字段是否可以更新,如在字段前打上“”標(biāo)志,表明該字段的值可以更新。一個(gè)表只能設(shè)置一個(gè)關(guān)鍵字段。 發(fā)送SQL更新:指定是否將視圖中的更新結(jié)果發(fā)送回源表中。 SQL WHERE子句:一般在多用戶(hù)的環(huán)境下會(huì)出現(xiàn)多個(gè)人同時(shí)修改一個(gè)表的情況,“SQL WHERE子句”是用來(lái)檢測(cè)更新沖突的,其選項(xiàng)是檢測(cè)視圖操作的數(shù)據(jù)在更新前是否被別的用戶(hù)修改過(guò),各項(xiàng)含義為: 關(guān)鍵字段:當(dāng)源數(shù)據(jù)表中的關(guān)鍵字段被修改時(shí),更新失敗。 關(guān)鍵字和可更新字段:當(dāng)源數(shù)據(jù)表的關(guān)鍵字段和可更新字段被修改時(shí),更新失敗。 關(guān)鍵字和已修改字段:當(dāng)源數(shù)據(jù)表的關(guān)鍵字段和表中任一已修改過(guò)的字段被修改時(shí),更新失敗。 使用更新:指定后臺(tái)服

21、務(wù)器更新的方法。選項(xiàng)“SQL DELETE然后INSERT” 含義: 在修改源數(shù)據(jù)表時(shí),先將要修改的記錄刪除,再根據(jù)視圖中修改的結(jié)果插入一新記錄; 選項(xiàng)“SQL UPDATE” 含義: 根據(jù)視圖中的修改結(jié)果直接修改源數(shù)據(jù)表中的記錄。 6 62 23 3 建立視圖建立視圖 1 1建立單表視圖建立單表視圖 例6-3 對(duì)“學(xué)生”表建立視圖,要求輸出學(xué)號(hào)、姓名、性別、出生日期和專(zhuān)業(yè)等字段。并且按學(xué)號(hào)的降序排列,可以更新學(xué)生的學(xué)號(hào),同時(shí)設(shè)置學(xué)號(hào)的字段有效性,即更新時(shí)學(xué)生的學(xué)號(hào)必須是以“07” 或“08” 開(kāi)頭,如果不是,則彈出提示框,顯示提示信息“學(xué)號(hào)以”07” 或”08” 開(kāi)頭”。 操作步驟如下: 打

22、開(kāi)“學(xué)生管理”數(shù)據(jù)庫(kù),再打開(kāi)視圖設(shè)計(jì)器,將“學(xué)生”表添加到視圖設(shè)計(jì)器窗口。 選中 “字段”選項(xiàng)卡,將學(xué)號(hào)、姓名、性別、出生日期和專(zhuān)業(yè)等字段添加到“選定字段”列表框中。 單擊“字段”選項(xiàng)卡中的“屬性”按鈕,打開(kāi)如圖6-25所示的“視圖字段屬性”對(duì)話(huà)框設(shè)置字段屬性。比如可以進(jìn)行字段有效性、顯示格式等屬性設(shè)置,但是不能修改數(shù)據(jù)類(lèi)型、寬度和小數(shù)位數(shù)等屬性。在圖6-25中進(jìn)行字段屬性的設(shè)置: 字段:選擇字段“學(xué)生 .學(xué)號(hào)”。 規(guī)則:在文本框或表達(dá)式生成器中輸入表達(dá)式:SUBSTR(學(xué)號(hào),1,2)=” 07” OR SUBSTR(學(xué)號(hào),1,2)=” 08” ,學(xué)號(hào)開(kāi)頭字符必須是“ 07” 或“08” 信息

23、:輸入錯(cuò)誤時(shí)顯示信息:“學(xué)號(hào)以 07或08開(kāi)頭”。 圖6-25 設(shè)置視圖字段屬性 排序依據(jù)設(shè)置:按“學(xué)號(hào)”字段的降序排列。與建立查詢(xún)的設(shè)置方法相同。 更新設(shè)置:?jiǎn)螕簟案聴l件”選項(xiàng)卡,設(shè)置更新,如圖6-26所示。 圖6-26 設(shè)置更新視圖字段條件 保存視圖:保存視圖名為“視圖 1” ,在“學(xué) 生管理”數(shù)據(jù)庫(kù)中生成視圖如圖 6-27。 圖6-27 在數(shù)據(jù)庫(kù)中建立視圖“視圖 1” 單擊“視圖設(shè)計(jì)器”工具欄上的“ SQL” 按鈕,代碼: SELECT 學(xué)生.學(xué)號(hào), 學(xué)生.姓名, 學(xué)生.性別, 學(xué)生.出生日期, 學(xué)生.專(zhuān)業(yè) FROM 學(xué)生; ORDER BY 學(xué)生.學(xué)號(hào) DESC 由此可見(jiàn),視圖實(shí)際上

24、就是一條 SQL命令。 在“學(xué)生管理”數(shù)據(jù)庫(kù)中,雙擊建立的視圖“視圖1” ,顯示由視圖查詢(xún)到的數(shù)據(jù)。當(dāng)在該視圖中修改某個(gè)學(xué)生的“學(xué)號(hào)”數(shù)據(jù)時(shí),如果“學(xué)號(hào)”不是以“07” 或“08” 開(kāi)頭,則彈出出錯(cuò)信息框;當(dāng)正確修改某個(gè)學(xué)生的學(xué)號(hào)時(shí),運(yùn)行該視圖后,則在相應(yīng)的“學(xué)生”表中,該學(xué)生的學(xué)號(hào)也作了相應(yīng)的修改。 2 2建立多表視圖建立多表視圖 例6-4 在“學(xué)生管理”數(shù)據(jù)庫(kù)中建立視圖,顯示教師的教師代號(hào)、姓名、職稱(chēng)以及教師所教課程的課程號(hào)、課程名稱(chēng)和課時(shí)。并且在視圖中將課程名稱(chēng)是“大學(xué)計(jì)算機(jī)基礎(chǔ)”的課時(shí)數(shù)由64學(xué)時(shí)修改為72學(xué)時(shí),將“葉明珠”教師的職稱(chēng)由“講師”修改為“副教授”。修改后可以檢測(cè)到建立該視

25、圖的源表的數(shù)據(jù)也作相應(yīng)的修改。 與創(chuàng)建單表查詢(xún)步驟一樣,不同的是: 添加三個(gè)表,并建立3表之間的關(guān)聯(lián)。 選擇輸出字段 圖6-29 多表視圖的設(shè)計(jì) 設(shè)置更新:設(shè)置“教師代號(hào)”和“課程號(hào)”為關(guān)鍵字段,確定要修改字段值的字段“職稱(chēng)”和“課時(shí)”;以及進(jìn)行其它選項(xiàng)的設(shè)置如圖6-30所示。 圖6-30 多表字段更新條件設(shè)置 當(dāng)將某一記錄的課程名稱(chēng)為“大學(xué)計(jì)算機(jī)基礎(chǔ)”的課時(shí)改為72學(xué)時(shí),以及將某一記錄的教師姓名為“葉明珠”的職稱(chēng)字段值改為“副教授”時(shí),再次運(yùn)行該視圖,打開(kāi)該視圖的源表“教師”表和“課程”表后,可以看到相應(yīng)的記錄值作了修改。即“大學(xué)計(jì)算機(jī)基礎(chǔ)”的課時(shí)改為72學(xué)時(shí),“葉明珠”的職稱(chēng)改為“副教授”

26、。 3 3視圖參數(shù)視圖參數(shù) 在利用視圖進(jìn)行信息查詢(xún)時(shí)可以設(shè)置查詢(xún)參數(shù),在運(yùn)行視圖時(shí)通過(guò)用戶(hù)輸入的參數(shù)值來(lái)顯示查詢(xún)結(jié)果。 例6-5 在“學(xué)生管理”數(shù)據(jù)庫(kù)中建立視圖,顯示學(xué)號(hào)、姓名、課程號(hào)、課程名稱(chēng)和期末分,并且在運(yùn)行視圖時(shí)根據(jù)輸入學(xué)生的學(xué)號(hào)而任意進(jìn)行查詢(xún)。并且將學(xué)號(hào)為“07170102” 學(xué)生的“大學(xué)英語(yǔ)”期末成績(jī)改為“98” 。 創(chuàng)建過(guò)程與上述例4講解的一樣,不同是: 設(shè)置篩選條件:在“篩選”卡上設(shè)置如圖6-32所示。表明在運(yùn)行該視圖后,彈出“視圖參數(shù)”對(duì)話(huà)框,要求輸入某學(xué)生的學(xué)號(hào)后,再顯示該學(xué)生的查詢(xún)信息。 圖6-32 “ 視圖參數(shù)”設(shè)置 設(shè)置更新條件:要更新期末分,則先設(shè)定“選課成績(jī).課程

27、號(hào)”為關(guān)鍵字段,再設(shè)定“選課成績(jī).期末分”為可修改的字段,以及其它設(shè)定如圖6-33所示。 圖6-33 設(shè)置更新條件 運(yùn)行該視圖:由于設(shè)置條件參數(shù),運(yùn)行后出現(xiàn)“視圖參數(shù)”對(duì)話(huà)框,要求輸入需要查詢(xún)某學(xué)生的學(xué)號(hào),比如輸入學(xué)號(hào)“07170102” ,如圖6-34。顯示查詢(xún)結(jié)果,如圖6-35。 圖6-34 輸入“視圖參數(shù)”對(duì)話(huà)框 圖6-35 視圖運(yùn)行結(jié)果 6 62 24 4 視圖的視圖的SQLSQL語(yǔ)句語(yǔ)句 視圖是一個(gè)從表中派生出來(lái)的虛表,視圖可以引用一個(gè)或多個(gè)表,也可以引用其他已建立的視圖,它依賴(lài)于表,但不能獨(dú)立存在,必須依賴(lài)于某個(gè)數(shù)據(jù)庫(kù)。 視圖是根據(jù)對(duì)表的查詢(xún)而定義的,其命令格式為: CREATE

28、SQL VIEW REMOTE CONNECTION SHARE | CONNECTION AS 1 1從單個(gè)表派生出的視圖從單個(gè)表派生出的視圖 例6-6 從教師表中查詢(xún)出教師的姓名和職稱(chēng)。定義視圖名為shtu1。 MODIFY DATA MODIFY DATA 學(xué)生管理學(xué)生管理 視圖一旦定義,就可以和基本表一樣進(jìn)行CREATE VIEW shtu1 AS SELECT CREATE VIEW shtu1 AS SELECT 姓名姓名, ,職稱(chēng)職稱(chēng) FROM FROM 教師教師 各種查詢(xún)或進(jìn)行一些修改,比如查詢(xún)出教SELECT SELECT * * FROM shtu1 FROM shtu1

29、師表中的姓名和職稱(chēng)信息。 或:或:SELECT SELECT 姓名姓名, ,職稱(chēng)職稱(chēng) FROM shtu1 FROM shtu1 或:或:SELECT SELECT 姓名姓名, ,職稱(chēng)職稱(chēng) FROM FROM 教師教師 2 2從多個(gè)表中派生出的視圖從多個(gè)表中派生出的視圖 CREATE VIEW shtu3 AS SELECT a.CREATE VIEW shtu3 AS SELECT a.學(xué)號(hào)學(xué)號(hào),a.,a.課程號(hào)課程號(hào),a.,a.期末分期末分 FROM FROM 選課成績(jī)選課成績(jī) a WHERE a WHERE 期末分期末分例6-8 從“選課成績(jī)”表中查詢(xún)出每個(gè)學(xué)生所=(SELECT MAX

30、(=(SELECT MAX(期末分期末分) FROM ) FROM 選課成績(jī)選課成績(jī) b b 修課程中的最高分,要求輸出“學(xué)號(hào)”、WHERE a.WHERE a.學(xué)號(hào)學(xué)號(hào)=b.=b.學(xué)號(hào)學(xué)號(hào)) ) “課程號(hào)”、“期末分”。定義視圖名為shtu3。 3 3視圖中的計(jì)算字段視圖中的計(jì)算字段 用查詢(xún)來(lái)建立一個(gè)視圖中的SELECT子句也可以包含算術(shù)表達(dá)式或函數(shù),它們和視圖的其他字段一樣對(duì)待,由于這些算術(shù)表達(dá)式或函數(shù)是計(jì)算而來(lái)的,所以可以稱(chēng)之為計(jì)算字段。 例6-10 統(tǒng)計(jì)修了“體育”課的男女生人數(shù)。CREATE VIEW shtu5 AS SELECT a.CREATE VIEW shtu5 AS SELECT a.性別性別,COUNT(,COUNT(* *) ) AS AS 男女生人數(shù)男女生人數(shù); ; 定義視圖名為shtu5。 FROM FROM 學(xué)生學(xué)生 a, a,選課成績(jī)選

溫馨提示

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

最新文檔

評(píng)論

0/150

提交評(píng)論