考點(diǎn)1 查詢設(shè)計(jì)器
1查詢的概念 查詢是從指定的表或視圖中提取滿足條件的記錄,然后按照想得到的輸出類型定向輸出查詢結(jié)果。查詢以擴(kuò)展名為QPR的文件保存在磁盤上的,這是一個(gè)文本文件,它的主體是SQL SELECT語句。 2查詢的建立 建立查詢可以使用“查詢設(shè)計(jì)器”,但它的基礎(chǔ)是SQL SELECT語句。建立查詢的方法有以下幾個(gè)方面 。 (l)可以利用CREATE QUERY命令打開查詢設(shè)計(jì)器建立查詢。 (2)可以利用“新建”對話框打開查詢設(shè)計(jì)器建立查詢。 (3)可以在項(xiàng)目管理器的“數(shù)據(jù)”選項(xiàng)卡中打開查詢設(shè)計(jì)器建立查詢。 (4)可直接編輯QPR文件建立查詢。 建立查詢時(shí),首先進(jìn)入如圖6-1所示的界面選擇用于建立查詢的表或視圖,選擇表或視圖后,單擊“添加”按鈕。最后單擊“關(guān)閉”按鈕,進(jìn)入如圖6-2所示的查詢設(shè)計(jì)器界面。
 圖6-1 為查詢選擇表或視圖 查詢設(shè)計(jì)器中的各選項(xiàng)卡和SQL SELECT語句的各短語是相對應(yīng)的,對應(yīng)關(guān)系如下。 “字段”――SELECT短語,用于指定要查詢的數(shù)據(jù) “連接”――JOIN ON短語,用于編輯連接條件。 “篩選”――WHERE短語,用于指定查詢條件。 “排序依據(jù)”――ORDER BY短語,用于指定排序字段和排序方式。 “分組依據(jù)”――GROUP BY短語和HAVING短語,用于分組。
 圖6-2 查詢設(shè)計(jì)器 3查詢的運(yùn)行 運(yùn)行查詢有下列兩種方法。 (1)可以在項(xiàng)口管理器的“數(shù)據(jù)”選項(xiàng)卡中,展開“查詢”選項(xiàng),然后選擇要運(yùn)行的查詢文件,單擊“運(yùn)行”按鈕,可查看查詢結(jié)果。 (2)在命令窗門執(zhí)行命令DO QueryFile。 注意:此處的查詢文件名是全名,包括擴(kuò)展名QPR。 4查詢?nèi)ハ?BR> 設(shè)計(jì)查詢的目的不只是完成一種查詢功能,在查詢設(shè)計(jì)器中可以根據(jù)需要為查詢輸出定位查詢?nèi)ハ颉Mㄟ^“查詢”菜單卜的“查詢?nèi)ハ颉,或在“查詢設(shè)計(jì)器”工具欄中單擊“查詢?nèi)ハ颉卑粹o!安樵?nèi)ハ颉睂υ捒蛉鐖D6-3所示
 圖6-3 “查詢?nèi)ハ颉睂υ捒?BR> 各去向的含義如下。 (1)瀏覽:在“瀏覽" (BROWSE)窗口中顯示查詢結(jié)果,這是默認(rèn)的輸出去向。 (2)臨時(shí)表:將查詢結(jié)果存儲于一個(gè)命名的臨時(shí)只讀表中。 (3)表:將結(jié)果保存在一個(gè)命名的數(shù)據(jù)表文件中。 (4)圖形:查詢結(jié)果可以用于Microsoft Graph。 (5)屏幕:在Visual FoxPro主窗口或當(dāng)前活動(dòng)輸出窗口中顯示查詢結(jié)果。 (6)報(bào)表:將結(jié)果輸出到一個(gè)報(bào)表文件。 (7)標(biāo)簽:將結(jié)果輸出到一個(gè)標(biāo)簽文件。
小提示: 在7種輸出去向中,只有“瀏覽”和“屏幕”兩種輸出去向才能直接看到查詢結(jié)果。
6.2 視圖
考點(diǎn)2 視圖的概念與建立
1視圖的概念 視圖是操作表的一種手段,通過視圖可以查詢表,也可以更新表。視圖是根據(jù)表定義的,因此視圖基于表,而視圖可以使應(yīng)用更靈活,因此它又超越表。視圖是數(shù)據(jù)庫中的一個(gè)特有功能,只有在包含視圖的數(shù)據(jù)庫打開時(shí)才能使用。 視圖兼有“表”和“查詢”的特點(diǎn),與查詢相類似的地方是可以用來從一個(gè)或多個(gè)相關(guān)聯(lián)的表中提取有用信息;與表類似的地方是可以用來更新其中的信息,并將結(jié)果永久性保存在磁盤上。 2視圖的建立 (l)用CREATE VIEW命令打開視圖設(shè)計(jì)器建立視圖。 (2)利用“新建”對話框打開視圖設(shè)計(jì)器建立視圖。 (3)在項(xiàng)目管理器的“數(shù)據(jù)”選項(xiàng)卡中打開視圖設(shè)計(jì)器建立視圖。 (4)利用SQL命令CREATE VIEW... AS...建立視圖。 3視圖設(shè)計(jì)象 視圖設(shè)計(jì)器(如圖6一所示)與查詢設(shè)計(jì)器基本上一樣,主要有以下幾點(diǎn)不同。 (1)視圖的結(jié)果保存在數(shù)據(jù)庫中,在磁盤上找不到類似的文件。 (2)視圖可以用來更新數(shù)據(jù),因此在設(shè)計(jì)器中多了一個(gè)“更新條件”選項(xiàng)卡。 (3)在視圖中沒有“查詢?nèi)ハ颉钡膯栴}。
 圖6-4 視圖設(shè)計(jì)器
考點(diǎn)3 遠(yuǎn)程視圖與連接
為了建立遠(yuǎn)程視圖,必須首先建立連接遠(yuǎn)程數(shù)據(jù)庫的“連接”,“連接”是Visual FoxPro數(shù)據(jù)庫中的一種對象。 1定義數(shù)據(jù)源和連接 數(shù)據(jù)源一般是ODBC數(shù)據(jù)源,開放數(shù)據(jù)庫互連ODBC是一種連接數(shù)據(jù)庫的通用標(biāo)準(zhǔn)。為了定義ODBC數(shù)據(jù)源,必須首先安裝ODBC驅(qū)動(dòng)程序。 2建立連接 建立連接的方法有以下幾種。 (1)用CREATE CONNECTION命令打開“連接設(shè)計(jì)器”,或完全用命令方式建立連接。 (2)通過“新建”對話框建立連接。 (3)在項(xiàng)目管理器的“數(shù)據(jù)”選項(xiàng)卡中建立連接。 3設(shè)計(jì)遠(yuǎn)程視圖 利用數(shù)據(jù)源或連接建立的遠(yuǎn)程視圖的SQL語法要符合遠(yuǎn)程數(shù)據(jù)庫的語法,例如,SQL Server的語法和Visual FoxPro的語法就有所區(qū)別。
考點(diǎn)4 視圖與數(shù)據(jù)更新
視圖是根據(jù)基本表派生出來的,所以把它叫做虛擬表為了通過視圖能夠更新基本表中的數(shù)據(jù),需要在視圖設(shè)計(jì)器的“更新條件”選項(xiàng)卡中的左下角選中“發(fā)送SQL更新”復(fù)選框。 1指定可更新的表 如果視圖是基于多個(gè)表的,默認(rèn)可以更新“全部表”的相關(guān)字段,如果要指定只能更新某個(gè)表的數(shù)據(jù),則可以通過“表”下拉列表框選擇表 2指定可更新的字段 在“字段名”列表框中列出了與更新有關(guān)的字段,在字段名左側(cè)有兩列標(biāo)志,“鑰匙”表示關(guān)鍵字,“鉛筆”表示更新通過單擊相應(yīng)列可以改變相關(guān)的狀態(tài),默認(rèn)可以更新所有非關(guān)鍵字字段,并且通過基本表的關(guān)鍵字完成更新,即Visual FoxPro用這些關(guān)鍵字字段來唯一標(biāo)識那些已在視圖中修改過的基本表中的記錄建議不要改變關(guān)鍵字的狀態(tài),不要試圖通過視圖來更新基本表中的關(guān)鍵字字段值,如有必要,可以指定更新非關(guān)鍵字字段值 3檢查更新的合法性 如圖6-1所示,“SQL WHERE子句包括”框中的選項(xiàng)決定哪些字段包含在UPDATE或DELETE語句的WHERE子句中,Visual FoxPro正是利用這些語句將在視圖中修改或刪除的記錄發(fā)送到遠(yuǎn)程數(shù)據(jù)源或基本表中,WHERE子句就是用來檢查自從提取記錄用于視圖中后,服務(wù)器上的數(shù)據(jù)是否已經(jīng)改變。 “SQL WHERE子句包括”框中各選項(xiàng)的含義如下。 (l)關(guān)鍵字段:當(dāng)基本表中的關(guān)鍵字字段被改變時(shí),更新失敗。 (2)關(guān)鍵字和可更新字段:當(dāng)基本表中任何標(biāo)記為可更新的字段被改變時(shí),更新失敗。 (3)關(guān)鍵字和已修改字段:當(dāng)在視圖中改變的任一字段的值在基本表中已被改變時(shí),更新失敗。 (4)關(guān)鍵字和時(shí)間戳:當(dāng)遠(yuǎn)程表上記錄的時(shí)間戳在首次檢索之后被改變時(shí),更新失敗。 4使用更新方式 “使用更新”框的選項(xiàng)決定當(dāng)向基本表發(fā)送SQL更新時(shí)的更新方式。 (1)SQL DELETE然后INSERT:先用SQL DELETE命令刪除基本表中被更新的舊記錄,再用SQL INSERT命令向基本表中插入更新后的記錄。 (2)SQL UPDATE:使用SQL UPDATE命令更新基本表。
考點(diǎn)5 使用視圖
視圖建立后,不但可以用它來顯示和更新數(shù)據(jù),而且可以通過調(diào)整它的屬性來提高性能,它的使用類似于表。 1視圖操作 (1)在數(shù)據(jù)庫中使用USE命令打開或關(guān)閉視圖。 (2)在“瀏覽器”窗口中顯示或修改視圖中的記錄。 (3)使用SQL語句操作視圖。 (4)在文本框、表格控件、表單或報(bào)表中使用視圖作為數(shù)據(jù)源。 2使用視圖 視圖一經(jīng)建立就基本可以像基本表一樣使用,適用于基本表的命令基本都可以用于視圖。比如在視圖上也可以建立索引,此索引當(dāng)然是臨時(shí)的,視圖一關(guān)閉,索引自動(dòng)刪除,多工作區(qū)時(shí)也可以建立聯(lián)系等。但視圖不可以用MODIFY STRUCTURE命令修改結(jié)構(gòu)。因?yàn)橐晥D畢竟不是獨(dú)立存在的基本表,它是由基本表派生出來的,只能修改視圖的定義。
小提示: 查詢與視圖的區(qū)別是:查詢可以定義輸出去向,可以將查詢的結(jié)果靈活地應(yīng)用于表單、報(bào)表、圖形等各種場合,但是利用查詢不可以修改數(shù)據(jù);而利用視圖可以修改數(shù)據(jù),可以利用SQL將對視圖的修改發(fā)送到基本表,特別是對于遠(yuǎn)程表的操作,利用視圖是非常有效的。
|