




版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進(jìn)行舉報(bào)或認(rèn)領(lǐng)
文檔簡介
第3章數(shù)據(jù)庫的創(chuàng)建與操作學(xué)習(xí)目標(biāo)重點(diǎn)掌握表中數(shù)據(jù)的基本操作重點(diǎn)掌握單索引文件和結(jié)構(gòu)復(fù)合索引文件的建立方法掌握數(shù)據(jù)庫表與自由表、邏輯刪除與物理刪除、排序與索引的區(qū)別了解工作區(qū)的概念,重點(diǎn)掌握多個(gè)數(shù)據(jù)表的間永久關(guān)系的操作掌握設(shè)計(jì)數(shù)據(jù)庫的過程重點(diǎn)掌握利用數(shù)據(jù)庫向?qū)Ш蛿?shù)據(jù)庫設(shè)計(jì)器創(chuàng)建數(shù)據(jù)庫的方法掌握有關(guān)數(shù)據(jù)庫的各種操作方法掌握為數(shù)據(jù)庫中的表及表中設(shè)置字段有效性的方法3.1數(shù)據(jù)庫設(shè)計(jì)3.2表的創(chuàng)建與基本操作3.3表的索引與排序3.4數(shù)據(jù)完整性3.1數(shù)據(jù)庫設(shè)計(jì)創(chuàng)建一個(gè)數(shù)據(jù)庫的過程,其實(shí)是向數(shù)據(jù)庫中添加數(shù)據(jù)表的過程。把“表”加入到數(shù)據(jù)庫中,能減少數(shù)據(jù)的冗余并提高數(shù)據(jù)的完整性,VFP強(qiáng)大的功能才能發(fā)揮出來。數(shù)據(jù)庫是一種工作環(huán)境,它存儲了一個(gè)“表”的集合,在表之間建立關(guān)系,對數(shù)據(jù)字段可以設(shè)置屬性和觸發(fā)規(guī)則,從而保證表之間數(shù)據(jù)的完整性。3.1數(shù)據(jù)庫設(shè)計(jì)數(shù)據(jù)庫的設(shè)計(jì)可以采用以下步驟:1.需求分析2.確定需要的表3.確定需要的字段4.確定聯(lián)系5.設(shè)計(jì)求精
3.1數(shù)據(jù)庫設(shè)計(jì)相關(guān)知識:一對多聯(lián)系:表A中的一個(gè)記錄對應(yīng)于其它的表中多條記錄。多對多聯(lián)系:表A中的記錄在表B中對應(yīng)多條記錄,表B中的記錄在表A中也對應(yīng)多條記錄。一對一聯(lián)系:表A中的一條記錄在表B中對應(yīng)為一條記錄,表B中的一條記錄在表A中也只對應(yīng)一條記錄。3.1數(shù)據(jù)庫設(shè)計(jì)
數(shù)據(jù)庫的基本操作
在VisualFoxPro中擴(kuò)展名為dbf的文件稱為數(shù)據(jù)庫表,簡稱表。數(shù)據(jù)庫文件的擴(kuò)展名為dbc,與之相關(guān)的還會自動建立一個(gè)擴(kuò)展名為dct的數(shù)據(jù)庫備注文件和一個(gè)擴(kuò)展名為dcx的數(shù)據(jù)庫索引文件。即建立數(shù)據(jù)庫,用戶可以在磁盤上看到文件名相同,但擴(kuò)展名分別為dbc、dct和dcx的三個(gè)文件,這三個(gè)文件是供數(shù)據(jù)庫管理系統(tǒng)管理數(shù)據(jù)庫使用的,用戶一般不能直接使用這些文件。3.1數(shù)據(jù)庫設(shè)計(jì)1.建立數(shù)據(jù)庫建立數(shù)據(jù)庫的常用方法有以下三種:在項(xiàng)目管理器中建立數(shù)據(jù)庫通過“新建”對話框建立數(shù)據(jù)庫使用命令交互建立數(shù)據(jù)庫3.1數(shù)據(jù)庫設(shè)計(jì)(1)在項(xiàng)目管理器中建立數(shù)據(jù)庫首先在項(xiàng)目管理器的“數(shù)據(jù)”選項(xiàng)卡選擇“數(shù)據(jù)庫”,然后單擊【新建】按鈕,出現(xiàn)“新建數(shù)據(jù)庫”的對話框,并在此對話框中選擇【新建數(shù)據(jù)庫】按鈕,接著通過創(chuàng)建對話框提示用戶輸入數(shù)據(jù)庫的名稱,
即擴(kuò)展名為dbc的文件名。例如,輸入“人員信息管理”,即建立一個(gè)教師人員管理數(shù)據(jù)庫,在創(chuàng)建對話框上有【保存】和【取消】等命令按鈕,輸入數(shù)據(jù)庫名稱后單擊【保存】按鈕則完成數(shù)據(jù)庫的建立,并打開“數(shù)據(jù)庫設(shè)計(jì)器”。3.1數(shù)據(jù)庫設(shè)計(jì)3.1數(shù)據(jù)庫設(shè)計(jì)(2)通過“新建”對話框建立數(shù)據(jù)庫在【文件】菜單下選擇【新建】命令或者單擊工具欄上【新建】按鈕,打開“新建”對話框。在【文件類型】組框中選擇【數(shù)據(jù)庫】,然后單擊【新建文件】按鈕建立數(shù)據(jù)庫,接下來的操作和步驟與項(xiàng)目管理器中建立數(shù)據(jù)庫相同。3.1數(shù)據(jù)庫設(shè)計(jì)3.1數(shù)據(jù)庫設(shè)計(jì)(3)使用命令交互建立數(shù)據(jù)庫【命令格式】CREATEDATABASE[<數(shù)據(jù)庫文件名>|?]【命令功能】創(chuàng)建一個(gè)新的數(shù)據(jù)庫文件并打開此數(shù)據(jù)庫。3.1數(shù)據(jù)庫設(shè)計(jì)【說明】<數(shù)據(jù)庫文件名>指定了生成的數(shù)據(jù)庫文件,若缺省路徑,則所建庫文件將存放在默認(rèn)盤的當(dāng)前路徑中;若缺省擴(kuò)展名,系統(tǒng)默認(rèn)其擴(kuò)展名為.DBC。如果未指定數(shù)據(jù)庫文件名或用“?”代替數(shù)據(jù)庫名,系統(tǒng)會彈出創(chuàng)建對話框請用戶輸入數(shù)據(jù)庫名稱。【注意】在新建數(shù)據(jù)庫時(shí),如果新建的數(shù)據(jù)庫文件已經(jīng)存在,則可能會覆蓋掉已存在的數(shù)據(jù)庫。當(dāng)系統(tǒng)環(huán)境參數(shù)SAFETY設(shè)置為OFF狀態(tài)會直接覆蓋,否則會出現(xiàn)警告對話框請用戶確認(rèn)。因此,為安全可以先執(zhí)行命令SETSAFETYON。3.1數(shù)據(jù)庫設(shè)計(jì)2.向數(shù)據(jù)庫中添加表和移去表自由表是那些不屬于任何數(shù)據(jù)庫的表。在V
F中創(chuàng)建表時(shí),如果當(dāng)前沒有打開數(shù)據(jù)庫,則創(chuàng)建的表就是自由表??梢詫⒆杂杀硖砑拥綌?shù)據(jù)庫中,使之成為數(shù)據(jù)庫表;也可以將數(shù)據(jù)庫表從數(shù)據(jù)庫中移出,使之成為自由表。3.1數(shù)據(jù)庫設(shè)計(jì)(1)將自由表添加到數(shù)據(jù)庫將自由表添加到數(shù)據(jù)庫常用方法有以下三種:在項(xiàng)目管理器中將自由表添加到數(shù)據(jù)庫在數(shù)據(jù)庫設(shè)計(jì)器中將自由表添加到數(shù)據(jù)庫使用命令交互將自由表添加到數(shù)據(jù)庫3.1數(shù)據(jù)庫設(shè)計(jì)①在項(xiàng)目管理器中將自由表添加到數(shù)據(jù)庫在項(xiàng)目管理器中,將要添加自由表的數(shù)據(jù)庫展開至表,并確認(rèn)當(dāng)前選擇了“表”,單擊【添加】按鈕,然后從彈出的“打開”對話框中選擇要添加到當(dāng)前數(shù)據(jù)庫的自由表,單擊【確定】按鈕,即將該表加入到當(dāng)前的數(shù)據(jù)庫中。3.1數(shù)據(jù)庫設(shè)計(jì)3.1數(shù)據(jù)庫設(shè)計(jì)②在數(shù)據(jù)庫設(shè)計(jì)器中將自由表添加到數(shù)據(jù)庫在數(shù)據(jù)庫設(shè)計(jì)器中可以從【數(shù)據(jù)庫】菜單中選擇【添加表】,然后從“打開”對話框中選擇要添加到當(dāng)前數(shù)據(jù)庫的自由表。3.1數(shù)據(jù)庫設(shè)計(jì)③使用命令交互將自由表添加到數(shù)據(jù)庫【命令格式】ADDTABLE<自由表文件名|?>[NAME<長表名>]【命令功能】將自由表添加到當(dāng)前打開的數(shù)據(jù)庫中?!菊f明】<自由表文件名|?>:給出了要添加到當(dāng)前數(shù)據(jù)庫的自由表表名,如果使用問號“?”,則顯示“打開”對話框,從中選擇要添加到數(shù)據(jù)庫中的表。NAME<長表名>:為表指定了一個(gè)長名,最多可以有128個(gè)字符。使用長表名在程序中可以提高程序的可讀性。3.1數(shù)據(jù)庫設(shè)計(jì)【實(shí)例3.1】
將自由表人員信息表添加到當(dāng)前人員信息管理數(shù)據(jù)庫中。OPENDATABASE人員信息管理ADDTABLE人員信息表3.1數(shù)據(jù)庫設(shè)計(jì)【注意】一個(gè)表只能屬于一個(gè)數(shù)據(jù)庫,當(dāng)一個(gè)自由表添加到某個(gè)數(shù)據(jù)庫后就不再是自由表了,所以不能把已經(jīng)屬于某個(gè)數(shù)據(jù)庫的表添加到當(dāng)前數(shù)據(jù)庫,否則會有出錯(cuò)提示。3.1數(shù)據(jù)庫設(shè)計(jì)(2)從數(shù)據(jù)庫中移出表當(dāng)數(shù)據(jù)庫不再使用某個(gè)表,而其他數(shù)據(jù)庫要使用該表時(shí),必須將該表從當(dāng)前數(shù)據(jù)庫中移出,使之成為自由表。從數(shù)據(jù)庫中移出表常用方法有以下三種:在項(xiàng)目管理器中移出表在數(shù)據(jù)庫設(shè)計(jì)器中移出表使用命令交互移出表3.1數(shù)據(jù)庫設(shè)計(jì)①在項(xiàng)目管理器中移出表在項(xiàng)目管理器中,將數(shù)據(jù)庫下的表展開,并選擇所要移出的具體表,然后單擊【移去】按鈕,彈出提示對話框,單擊【移去】按鈕即可。3.1數(shù)據(jù)庫設(shè)計(jì)②在數(shù)據(jù)庫設(shè)計(jì)器中移出表在數(shù)據(jù)庫設(shè)計(jì)器中要移出一個(gè)表,首先選擇該表,然后可從【數(shù)據(jù)庫】菜單中選擇【移去】,
或者單擊鼠標(biāo)右鍵從快捷菜單中選擇【刪除】,最后從提示的對話框中單擊【移去】按鈕即可。3.1數(shù)據(jù)庫設(shè)計(jì)③使用命令交互移出表【命令格式】REMOVETABLE<數(shù)據(jù)庫表文件名|?>][DELETE][RECYCLE]【命令功能】將數(shù)據(jù)庫表移出當(dāng)前數(shù)據(jù)庫中,使之成為自由表?!菊f明】DELETE:則在把所選表從數(shù)據(jù)庫中移出之外,還將其從磁盤上刪除。RECYCLE:則把所選表從數(shù)據(jù)庫中移出之后,放到回收站中,而并不立即從磁盤上刪除。3.1數(shù)據(jù)庫設(shè)計(jì)3.表之間建立關(guān)系在數(shù)據(jù)庫中建立的關(guān)系稱為“永久關(guān)系”,這是因?yàn)檫@種表與表之間的關(guān)系作為數(shù)據(jù)庫的一部分而存儲在數(shù)據(jù)庫文件中。當(dāng)在“查詢設(shè)計(jì)器”、“視圖設(shè)計(jì)器”或“表單設(shè)計(jì)器”中的數(shù)據(jù)環(huán)境中使用這些表時(shí),其永久關(guān)系作為這些表之間的默認(rèn)連接自動出現(xiàn)的。3.1數(shù)據(jù)庫設(shè)計(jì)【實(shí)例3.2】
在人員信息管理數(shù)據(jù)庫中有3個(gè)表:人員信息表,含有字段:教師編號、姓名、性別、職稱、職務(wù),并以教師編號建立了主索引。個(gè)人信息表,含有字段:、姓名、出生日期、畢業(yè)學(xué)校、畢業(yè)時(shí)間、所學(xué)專業(yè)、聯(lián)系電話、備注,并以教師編號建立了主索引,以姓名建立普通索引。工作信息表,含有字段:課程編號、課程名稱、教師編號、周學(xué)時(shí)、上課地點(diǎn)、上課時(shí)間,并以課程編號建立主索引,分別以課程名稱和教師編號建立了普通索引。要求:在上面的關(guān)系中,人員信息表和個(gè)人信息表間以“教師編號”為連接字段建立一對一的關(guān)系,個(gè)人信息表和工作信息表間以“教師編號”為連接字段建立一對多的關(guān)系。3.1數(shù)據(jù)庫設(shè)計(jì)在數(shù)據(jù)庫設(shè)計(jì)器中用鼠標(biāo)左鍵選中人員信息表中的主索引教師編號,按住鼠標(biāo)左鍵,并拖動鼠標(biāo)到個(gè)人信息表的教師編號索引上,鼠標(biāo)箭頭會變成小矩形狀,最后釋放鼠標(biāo)。用同樣的方法可以建立個(gè)人信息表和工作信息表之間的聯(lián)系。系統(tǒng)會自動根據(jù)索引類型來判斷聯(lián)系的類型。3.1數(shù)據(jù)庫設(shè)計(jì)通過拖動主索引標(biāo)簽的方法建立永久關(guān)系。3.1數(shù)據(jù)庫設(shè)計(jì)如果在建立聯(lián)系時(shí)操作有誤,隨時(shí)可以通過編輯修改聯(lián)系。用鼠標(biāo)右鍵單擊要修改的聯(lián)系,連線變粗,從彈出的快捷菜單中選擇【編輯關(guān)系】,打開“編輯關(guān)系”對話框,通過在下拉列表框中重新選擇表或相關(guān)表的索引名則可以實(shí)現(xiàn)修改關(guān)系的目的。3.1數(shù)據(jù)庫設(shè)計(jì)4.管理數(shù)據(jù)庫(1)打開數(shù)據(jù)庫在數(shù)據(jù)庫中建立表或使用數(shù)據(jù)庫中的表時(shí),必須先打開數(shù)據(jù)庫,打開方式有三種:在項(xiàng)目管理器中打開數(shù)據(jù)庫通過“打開”對話框打開數(shù)據(jù)庫使用命令交互打開數(shù)據(jù)庫3.1數(shù)據(jù)庫設(shè)計(jì)①在項(xiàng)目管理器中打開數(shù)據(jù)庫在項(xiàng)目管理器中選擇了相應(yīng)的數(shù)據(jù)庫時(shí),數(shù)據(jù)庫將自動打開,不必再執(zhí)行打開數(shù)據(jù)庫的操作。3.1數(shù)據(jù)庫設(shè)計(jì)②通過“打開”對話框打開數(shù)據(jù)庫在【文件】菜單下選擇【打開】命令或者單擊工具欄上的【打開】按鈕,彈出“打開”對話框。選擇數(shù)據(jù)庫文件所在的文件夾,在【文件類型】下拉列表框中選擇“數(shù)據(jù)庫(.dbc)”,然后選擇所要打開的數(shù)據(jù)庫文件名,單擊【確定】按鈕打開數(shù)據(jù)庫。3.1數(shù)據(jù)庫設(shè)計(jì)③使用命令交互打開數(shù)據(jù)庫【命令格式】OPENDATABASE[<數(shù)據(jù)庫文件名>|?][EXCLUSIVE|SHARED]【命令功能】打開指定的數(shù)據(jù)庫文件?!菊f明】打開一個(gè)數(shù)據(jù)庫文件,其同名的.DCT相關(guān)的數(shù)據(jù)庫備份文件與.DCX相關(guān)的索引文件也一起被打開。3.1數(shù)據(jù)庫設(shè)計(jì)【實(shí)例3.4】當(dāng)前打開了4個(gè)數(shù)據(jù)庫文件:aa1,aa2,aa3,aa4,通過數(shù)據(jù)庫下拉列表指定aa2為當(dāng)前數(shù)據(jù)庫。3.1數(shù)據(jù)庫設(shè)計(jì)(2)修改數(shù)據(jù)庫在VisualFoxPro中修改數(shù)據(jù)庫實(shí)際是打開數(shù)據(jù)庫設(shè)計(jì)器,用戶可以在數(shù)據(jù)庫設(shè)計(jì)器中完成各種數(shù)據(jù)庫對象的建立、修改和刪除等操作。打開數(shù)據(jù)庫設(shè)計(jì)器的方式有三種:在項(xiàng)目管理器中打開數(shù)據(jù)庫設(shè)計(jì)器通過“打開”對話框打開數(shù)據(jù)庫設(shè)計(jì)器使用命令打開數(shù)據(jù)庫設(shè)計(jì)器3.1數(shù)據(jù)庫設(shè)計(jì)①在項(xiàng)目管理器中打開數(shù)據(jù)庫設(shè)計(jì)器在項(xiàng)目管理器對話框中,單擊【數(shù)據(jù)】標(biāo)簽,選擇要修改的數(shù)據(jù)庫,然后單擊【修改】按鈕,即可打開數(shù)據(jù)庫設(shè)計(jì)器。3.1數(shù)據(jù)庫設(shè)計(jì)②通過“打開”對話框打開數(shù)據(jù)庫設(shè)計(jì)器在【文件】菜單下選擇【打開】命令或者單擊工具欄上的【打開】按鈕,彈出“打開”對話框,選擇要修改的數(shù)據(jù)庫,然后單擊【確定】按鈕,即可打開數(shù)據(jù)庫設(shè)計(jì)器。3.1數(shù)據(jù)庫設(shè)計(jì)③使用命令打開數(shù)據(jù)庫設(shè)計(jì)器【命令格式】MODIFYDATABASE[<數(shù)據(jù)庫文件名>|?][NOWAIT][NOEDIT]【命令功能】打開數(shù)據(jù)庫設(shè)計(jì)器,修改數(shù)據(jù)庫中的表、視圖等對象?!菊f明】若要修改的數(shù)據(jù)庫已打開,則可省略<數(shù)據(jù)庫文件名>。3.1數(shù)據(jù)庫設(shè)計(jì)(3)刪除數(shù)據(jù)庫在練習(xí)或開發(fā)系統(tǒng)的過程中,一個(gè)數(shù)據(jù)庫不再使用了,可以通過項(xiàng)目管理器和命令方式刪除數(shù)據(jù)庫文件。3.1數(shù)據(jù)庫設(shè)計(jì)①在項(xiàng)目管理器中刪除數(shù)據(jù)庫在項(xiàng)目管理器對話框中選擇要?jiǎng)h除的數(shù)據(jù)庫,然后單擊【移去】按鈕,這時(shí)會出現(xiàn)提示對話框.3.1數(shù)據(jù)庫設(shè)計(jì)移去:從項(xiàng)目管理器中刪除數(shù)據(jù)庫,但并不從磁盤上刪除相應(yīng)的數(shù)據(jù)庫文件;刪除:從項(xiàng)目管理器中刪除數(shù)據(jù)庫,并從磁盤上刪除相應(yīng)的數(shù)據(jù)庫文件;取消:取消當(dāng)前的操作,即不進(jìn)行刪除數(shù)據(jù)庫的操作。3.1數(shù)據(jù)庫設(shè)計(jì)②使用命令刪除數(shù)據(jù)庫【命令格式】DELETEDATABASE<數(shù)據(jù)庫文件名>|?[DELETETABLES][RECYCLE]【命令功能】刪除指定的數(shù)據(jù)庫文件?!咀⒁狻吭谶M(jìn)行刪除操作時(shí),如果SETSAFETY的值為ON,則VisualFoxPro在刪除文件前會提示用戶,是否確定刪除該文件,否則不出現(xiàn)提示,直接實(shí)現(xiàn)刪除操作。3.2表的創(chuàng)建與基本操作VisualFoxPro作為關(guān)系數(shù)據(jù)庫系統(tǒng)是用來管理數(shù)據(jù)的,而數(shù)據(jù)以記錄和字段的形式存儲在數(shù)據(jù)庫中,數(shù)據(jù)庫就是一個(gè)關(guān)于某一主題的信息的集合。表是關(guān)系數(shù)據(jù)庫系統(tǒng)中最基本的文件。在VisualFoxPro中,表文件的擴(kuò)展名為.dbf,表是由表結(jié)構(gòu)和表記錄構(gòu)成的。3.2表的創(chuàng)建與基本操作教師個(gè)人信息表3.2表的創(chuàng)建與基本操作表結(jié)構(gòu)描述了數(shù)據(jù)存放形式以及存儲的順序,表結(jié)構(gòu)由字段的相關(guān)信息(如:字段名、字段類型、字段寬度、小數(shù)位數(shù)等)構(gòu)成。1.字段名2.字段類型和寬度3.小數(shù)位數(shù)4.空值3.2表的創(chuàng)建與基本操作
1.字段名字段名是指關(guān)系的屬性名或表的列名,記錄中的每個(gè)字段都有名稱的。VisualFoxPro6.0規(guī)定字段名必須以字母或漢字開頭,可以由字母、漢字、數(shù)字和下劃線組成,中間不能包含空格,并且長度不能超過128個(gè)字符(自由表字段名最長為10個(gè)字符)。3.2表的創(chuàng)建與基本操作
2.字段類型和寬度字段的數(shù)據(jù)類型決定存儲在字段中的值的數(shù)據(jù)類型,寬度可以決定存儲數(shù)據(jù)的數(shù)量或精度。VisualFoxPro6.0提供了13種字段類型,用以存放不同類型的數(shù)據(jù)。3.2表的創(chuàng)建與基本操作字符型(Character):可以是字母、數(shù)字等各種文本,字符型數(shù)據(jù)長度為0~254。貨幣型(Currency):在數(shù)據(jù)的第一個(gè)數(shù)字前冠以貨幣符號“$”,例如$90。貨幣型數(shù)據(jù)在內(nèi)存中占8個(gè)字節(jié)。數(shù)值型(Numeric):用來存放數(shù)值數(shù)據(jù),其最大寬度為20個(gè)字節(jié)。浮點(diǎn)型(Float):類似“數(shù)值型”,但存儲時(shí)采用浮點(diǎn)格式,其長度在表中最長為20位。日期型(Date):由年、月、日構(gòu)成的數(shù)據(jù)類型,每個(gè)日期型數(shù)據(jù)用8個(gè)字節(jié)存儲。日期時(shí)間型(DateTime):由年、月、日、時(shí)、分、秒構(gòu)成的數(shù)據(jù)類型,每個(gè)日期時(shí)間型數(shù)據(jù)用8個(gè)字節(jié)存儲。雙精度型(Double):類似“數(shù)值型”,一般用于要求很高數(shù)據(jù)。3.2表的創(chuàng)建與基本操作整型(Integer):不帶小數(shù)點(diǎn)的數(shù)值類型,如訂單行數(shù),字段寬度固定為4個(gè)字節(jié)。邏輯型(Logical):邏輯型數(shù)據(jù)只有“真”(.T.,.t.)和“假”(.F.,.f.)兩種值,寬度為1個(gè)字節(jié)。備注型(Memo):不定長的字符型文本,如用于存放簡歷等,字段寬度固定為4個(gè)字節(jié)。信息存儲在以.FPT為擴(kuò)展名的文件中。通用型(General):用于標(biāo)記電子表格、文檔、圖片等OLE對象,字段寬度固定為4個(gè)字節(jié)。二進(jìn)制字符型(CharacterBinary):同“字符型”,但當(dāng)代碼頁更改時(shí)字符值不變。代碼頁是供計(jì)算機(jī)正確解釋并顯示數(shù)據(jù)的字符集,通常不同的代碼頁對應(yīng)不同的平臺或語言。二進(jìn)制備注型(MemoBinary):同“備注型”,但當(dāng)代碼頁更改時(shí)備注不變。3.2表的創(chuàng)建與基本操作3.小數(shù)位數(shù)當(dāng)字段類型為“Numeric”或“Float”時(shí),應(yīng)在“小數(shù)位數(shù)”欄中設(shè)置小數(shù)的位數(shù)。4.空值在定義字段時(shí)的“NULL”選項(xiàng)表示是否允許字段為空值。空值也是關(guān)系數(shù)據(jù)庫中的一個(gè)重要概念,在數(shù)據(jù)庫中可能會遇到尚未存儲數(shù)據(jù)的字段,這時(shí)的空值與空(或空白)字符串、數(shù)值0等具有不同的含義,空值就是缺值或還沒有確定值,不能把它理解為任何意義的數(shù)據(jù)。3.2表的創(chuàng)建與基本操作3.2.2表的建立建立一個(gè)表文件包括兩個(gè)部分:建立表結(jié)構(gòu)和輸入表記錄。表有兩種:數(shù)據(jù)庫表自由表如果建表時(shí)數(shù)據(jù)庫是打開的,建立的表為當(dāng)前數(shù)據(jù)庫的表,若沒打開數(shù)據(jù)庫,則建立的是自由表。3.2表的創(chuàng)建與基本操作建立表結(jié)構(gòu)的常用方法有以下三種:在項(xiàng)目管理器中建立數(shù)據(jù)表通過“新建”對話框建立數(shù)據(jù)表使用命令交互建立數(shù)據(jù)表3.2表的創(chuàng)建與基本操作1.在項(xiàng)目管理器中建立數(shù)據(jù)表首先在項(xiàng)目管理器的“數(shù)據(jù)”選項(xiàng)卡中選擇【數(shù)據(jù)庫】,然后單擊【新建】按鈕,則創(chuàng)建的是指定數(shù)據(jù)庫中的一個(gè)新表,即數(shù)據(jù)庫表。若選擇“數(shù)據(jù)”選項(xiàng)卡中的“自由表”,則創(chuàng)建的是一個(gè)自由表。之后出現(xiàn)“新建表”窗口,單擊【新建表】按鈕,出現(xiàn)“創(chuàng)建”對話框,輸入表文件名,單擊【保存】按鈕之后便進(jìn)入表設(shè)計(jì)器,表設(shè)計(jì)器中建立表結(jié)構(gòu)。3.2表的創(chuàng)建與基本操作字段名字段類型字段寬度教師編號字符型4姓名字符型6出生日期日期型8畢業(yè)學(xué)校字符型14畢業(yè)時(shí)間字符型10所學(xué)專業(yè)字符型8聯(lián)系電話字符型7備注備注型4教師個(gè)人信息表中各字段的定義
3.2表的創(chuàng)建與基本操作2.通過“新建”對話框建立數(shù)據(jù)表在【文件】菜單下選擇【新建】命令或者單擊工具欄上的【新建】按鈕,打開“新建”對話框。在【文件類型】組框中選擇【表】,然后單擊【新建文件】按鈕,接下來的操作和步驟與項(xiàng)目管理器中建立數(shù)據(jù)庫相同。3.2表的創(chuàng)建與基本操作3.使用命令交互建立數(shù)據(jù)表【命令格式】CREATE[<表文件名>|?]【命令功能】創(chuàng)建一個(gè)新的表文件。若缺省擴(kuò)展名,系統(tǒng)默認(rèn)其擴(kuò)展名為.DBF。如果未指定表文件名或用“?”代替表名,系統(tǒng)會彈出創(chuàng)建對話框請用戶輸入表文件名稱。3.2表的創(chuàng)建與基本操作【實(shí)例3.5】在E:\VFP下創(chuàng)建“人員信息管理”庫的“個(gè)人信息表.dbf”。OPENDATABASEE:\VFP\人員信息管理.dbcCREATE個(gè)人信息表.dbf3.2表的創(chuàng)建與基本操作3.2.3修改表的結(jié)構(gòu)在VisualFoxPro6.0中,對于表結(jié)構(gòu)可以增加、刪除字段,可以修改字段名、字段類型、字段寬度等。3.2表的創(chuàng)建與基本操作1.修改表結(jié)構(gòu)的方式使用數(shù)據(jù)庫設(shè)計(jì)器修改表結(jié)構(gòu)使用命令交互修改表結(jié)構(gòu)3.2表的創(chuàng)建與基本操作(1)使用數(shù)據(jù)庫設(shè)計(jì)器修改表結(jié)構(gòu)如果當(dāng)前在數(shù)據(jù)庫設(shè)計(jì)器中直接用鼠標(biāo)右擊要進(jìn)行修改的表文件,再選擇快捷菜單下的【修改】命令,則打開相應(yīng)的表設(shè)計(jì)器修改表結(jié)構(gòu)。3.2表的創(chuàng)建與基本操作(2)使用命令交互修改表結(jié)構(gòu)【命令格式】MODIFYSTRUCTURE【命令功能】修改當(dāng)前表的結(jié)構(gòu)。3.2表的創(chuàng)建與基本操作2.修改表結(jié)構(gòu)的操作修改表結(jié)構(gòu)操作主要有增加、修改、刪除和移動字段等。(1)增加新字段將光標(biāo)移到最后,輸入新字段名、字段類型和寬度等。如果要插入新字段,則首先將光標(biāo)移到要插入新字段的位置,然后單擊【插入】按鈕,輸入新字段名、字段類型和字段寬度等參數(shù)。(2)修改字段將光標(biāo)定位在需要修改處,可以直接修改字段的名稱、類型和寬度,之后單擊【確定】按鈕即可。(3)刪除字段將光標(biāo)定位到要?jiǎng)h除的字段上,單擊【刪除】按鈕。無論是何種修改,單擊【確定】按鈕后,由于表的結(jié)構(gòu)變化要影響表記錄的數(shù)據(jù),所以都會出現(xiàn)對話框由用戶確認(rèn)修改是否有效。3.2表的創(chuàng)建與基本操作3.2.4打開和關(guān)閉表新建立的數(shù)據(jù)表當(dāng)時(shí)處于打開狀態(tài),可以直接進(jìn)行輸入記錄及修改表結(jié)構(gòu)等操作。但表關(guān)閉后若想再對表進(jìn)行操作,則應(yīng)先打開表。
3.2表的創(chuàng)建與基本操作1.表的打開表的常用方法有以下三種:在項(xiàng)目管理器中打開表通過“打開”對話框打開表使用命令交互打開表3.2表的創(chuàng)建與基本操作(1)在項(xiàng)目管理器中打開表在項(xiàng)目管理器中選中需要打開的,單擊【瀏覽】或【修改】按鈕都能自動打開表且進(jìn)行瀏覽或修改操作。關(guān)閉瀏覽或修改窗口后,該表仍處于打開狀態(tài)。3.2表的創(chuàng)建與基本操作(2)通過“打開”對話框打開表從【文件】菜單中選擇【打開】命令,在“打開”對話框中選擇【文件類型】為.DBF,以及文件所在的文件夾,找到要打開的表文件,選中后單擊【確定】按鈕。3.2表的創(chuàng)建與基本操作(3)使用命令交互打開表【命令格式】USE[[<數(shù)據(jù)庫文件名!>]<表文件名>|?]【命令功能】打開指定的表?!菊f明】[<數(shù)據(jù)庫文件名!>]<表文件名>選項(xiàng)用于指定打開的表的名稱。如果打開的表不是在當(dāng)前的數(shù)據(jù)庫中,則必須在表名前指明數(shù)據(jù)庫的名稱。如果打開的表是在當(dāng)前的數(shù)據(jù)庫中或自由表,則可省去此可選項(xiàng)。3.2表的創(chuàng)建與基本操作【實(shí)例3.6】打開在E:\VFP下“人員信息管理”庫的“個(gè)人信息表.DBF”。USEE:\VFP\人員信息管理!個(gè)人信息表.DBF3.2表的創(chuàng)建與基本操作2.表的關(guān)閉表文件操作完成后,必須將其關(guān)閉,保存到磁盤中防止數(shù)據(jù)的丟失?!久罡袷?】USE【命令功能】關(guān)閉已打開的表文件?!久罡袷?】CLOSEDATABASE【命令功能】關(guān)閉所有已打開的數(shù)據(jù)庫文件和表文件?!久罡袷?】CLEARALL【命令功能】關(guān)閉所有已打開的數(shù)據(jù)庫文件和表文件同時(shí)還能關(guān)閉打開的過程文件、各種窗口、設(shè)計(jì)器、生成器等對象。3.2表的創(chuàng)建與基本操作3.2.5使用瀏覽器操作表在交互工作方式下,最簡單方便的方法就是使用BROWSE瀏覽器,從瀏覽器窗口中修改記錄。3.2表的創(chuàng)建與基本操作1.打開BROWSE瀏覽器打開BROWSE瀏覽器的常用方法有三種:(1)在項(xiàng)目管理器中將數(shù)據(jù)庫展開至表,選擇要操作的表,單擊【瀏覽】命令按鈕。(2)在數(shù)據(jù)庫設(shè)計(jì)器中選擇要操作的表,從【數(shù)據(jù)庫】菜單中選擇【瀏覽】命令,或右擊要操作的表,然后從快捷菜單中選擇【瀏覽】命令。(3)在命令交互方式下,先用USE命令打開要操作的表,然后鍵入【BROWSE】命令。以上各種方式打開的BROWSE瀏覽器界面,在瀏覽器窗口中可以進(jìn)行瀏覽、添加、刪除和修改等操作。3.2表的創(chuàng)建與基本操作2.瀏覽操作常用的瀏覽操作有以下內(nèi)容:(1)下一記錄:【↓】鍵(2)前一記錄:【↑】鍵(3)下一頁:【PageDown】鍵(4)前一頁:【
PageUp】鍵(5)下一字段:【Tab】鍵(6)前一字段:【Shift+Tab】鍵除此之外,還可以用鼠標(biāo)上、下、左、右滾動翻頁和定位。3.2表的創(chuàng)建與基本操作3.修改或追加記錄要在瀏覽器中修改記錄的值,只需要將光標(biāo)定位在要修改的記錄和字段值上,然后直接修改即可。在瀏覽器中添加記錄的快捷鍵是【Ctrl+Y】,或者從【表】菜單中選擇【追加新記錄】,這時(shí)在瀏覽器尾部會增加一條空白記錄,在此空白記錄處輸入新記錄值即可。3.2表的創(chuàng)建與基本操作4.刪除記錄表記錄的刪除也是表維護(hù)的一項(xiàng)經(jīng)常性的工作,在VisualFoxPro中刪除記錄可分為邏輯刪除和物理刪除兩種。邏輯刪除只是在記錄上作刪除標(biāo)記,必要時(shí)可以恢復(fù);而物理刪除則是真正從表中刪除記錄,不可恢復(fù)。3.2表的創(chuàng)建與基本操作3.2.6
增加記錄的命令
1.APPEND命令
2.INSERT命令3.2表的創(chuàng)建與基本操作1.APPEND命令【命令格式】APPEND[BLANK]【命令功能】在表文件的尾部增加記錄?!菊f明】使用APPEND需要交互輸入新記錄,可以連續(xù)輸入多條記錄的內(nèi)容。BLANK:是在表的尾部增加一條空白記錄,然后用EDIT、CHANGE或BROWSE命令交互修改空白記錄的值,或用REPLACE命令直接修改該空白記錄的值。3.2表的創(chuàng)建與基本操作2.INSERT命令【命令格式】INSERT[BEFORE][BLANK]【命令功能】在表的任意位置插入新記錄。【說明】BEFORE:選用此可選項(xiàng)在當(dāng)前記錄之前插入記錄,否則在當(dāng)前記錄之后插入記錄。BLANK:插入一條空白記錄,然后再用EDIT等命令修改空白記錄的值,否則直接出現(xiàn)插入界面,錄入數(shù)據(jù)值。3.2表的創(chuàng)建與基本操作【實(shí)例3.7】在個(gè)人信息表中第2條記錄的前面插入一條空白記錄。USE
個(gè)人信息表GO2INSERTBEFOREBLANK3.2表的創(chuàng)建與基本操作3.2.7
顯示記錄【命令格式】LIST|DISPLAY[<范圍>][[FIELDS]<字段名表>][[FOR|WHILE<條件>][OFF][TOPRINTER|FILE<文件名>]【命令功能】顯示當(dāng)前表的內(nèi)容。3.2表的創(chuàng)建與基本操作【說明】LIST命令和DISPLAY命令的功能相似,LIST命令是滾動連續(xù)顯示,而DISPLAY則是分屏顯示。當(dāng)表文件的記錄較多時(shí),使用DISPLAY命令較為方便。如果同時(shí)缺省<范圍>和<條件>子句,DISPLAY命令只顯示當(dāng)前的一條記錄,而LIST命令則是取默認(rèn)值A(chǔ)LL顯示全部記錄。3.2表的創(chuàng)建與基本操作<范圍>:用來指定顯示范圍內(nèi)的記錄。通常有以下參數(shù):(1)ALL:指所有記錄。(2)NEXTn:從當(dāng)前記錄開始的n條記錄。(3)RECORDn:指第n條記錄。(4)REST:從當(dāng)前記錄開始的所有剩余記錄。3.2表的創(chuàng)建與基本操作[FIELDS]<字段名表>:指定顯示的字段,省略此項(xiàng)則顯示全部字段。FOR<條件>:對表中指定范圍內(nèi)滿足條件表達(dá)式的記錄進(jìn)行操作。WHILE<條件>:對表中指定范圍內(nèi)滿足條件表達(dá)式的記錄進(jìn)行操作,但是,當(dāng)?shù)谝淮斡龅讲粷M足的記錄,就停止繼續(xù)搜索。OFF:表示不顯示記錄號,否則,在各記錄前顯示記錄號。TOPRINTER:將結(jié)果輸出到打印機(jī)。TOFILE<文件名>:將結(jié)果輸出到指定文件名的文件中,其默認(rèn)文件擴(kuò)展名為.txt。3.2表的創(chuàng)建與基本操作【實(shí)例3.8】顯示個(gè)人信息表中全部記錄。USE個(gè)人信息表LIST3.2表的創(chuàng)建與基本操作【實(shí)例3.9】顯示個(gè)人信息表中所有計(jì)算機(jī)專業(yè)的教師。USE個(gè)人信息表LISTFOR所學(xué)專業(yè)=“計(jì)算機(jī)”3.2表的創(chuàng)建與基本操作【實(shí)例3.10】將個(gè)人信息表中2~5條記錄的教師編號、姓名、出生日期、畢業(yè)學(xué)校及所學(xué)專業(yè)顯示出來。USE個(gè)人信息表GO2LISTNEXT4FIELDS教師編號,姓名,出生日期,畢業(yè)學(xué)校,所學(xué)專業(yè)3.2表的創(chuàng)建與基本操作【實(shí)例3.11】顯示個(gè)人信息表中“1980年以前出生”的畢業(yè)學(xué)校為“遼寧師范大學(xué)”的記錄。USE個(gè)人信息表LISTFOR出生日期<{^1980/01/01}.AND.畢業(yè)學(xué)校=“遼寧師范大學(xué)”3.2表的創(chuàng)建與基本操作3.2.8
記錄指針的定位對表操作的順序是通過記錄指針來控制的,記錄指針是一個(gè)指示器,它始終指向當(dāng)前表中正在操作處理的那條記錄,此記錄被稱為當(dāng)前記錄。如果要對某條記錄進(jìn)行處理,必須移動記錄指針,使其指向該記錄。3.2表的創(chuàng)建與基本操作1.絕對移動指針GO命令【命令格式】[GO|GOTO][RECORD]<記錄號>【命令功能】將記錄指針移動到指定的位置?!菊f明】GO和GOTO的命令用法完全相同。<記錄號>可以是數(shù)值表達(dá)式,按四舍五入取整數(shù)。TOP:表示首記錄,當(dāng)不使用索引時(shí)是記錄號為1的記錄,使用索引時(shí)是指按索引順序排在最前面的那條記錄,其命令使用時(shí)不能省略GO。BOTTOM:表示尾記錄,當(dāng)不使用索引時(shí)是記錄號最大的記錄,使用索引時(shí)是指按索引順序排在最后面的那條記錄,其命令使用時(shí)不能省略GO。3.2表的創(chuàng)建與基本操作【實(shí)例3.12】分別將個(gè)人信息表中記錄指針定位到首記錄、尾記錄和第4條記錄并顯示。USE個(gè)人信息表GOTOPDISPGOBOTTOMDISPGO4DISP3.2表的創(chuàng)建與基本操作2.相對移動指針SKIP命令【命令格式】SKIP[<數(shù)值表達(dá)式>]【命令功能】將記錄指針從當(dāng)前記錄向前或向后移動若干條記錄位置?!菊f明】SKIP是按邏輯順序定位的,如果使用索引時(shí)按索引的順序定位。<數(shù)值表達(dá)式>:可以是正整數(shù)或負(fù)整數(shù)
,表示指針移動的記錄個(gè)數(shù)。若是正數(shù)則向后移動,若是負(fù)數(shù)則向前移動。如果缺省此項(xiàng),則表示向后移動1個(gè)記錄。3.2表的創(chuàng)建與基本操作【實(shí)例3.13】將個(gè)人信息表中記錄指針定位到第2條記錄,在向下移動3條記錄。USE個(gè)人信息表SKIPSKIP
33.2表的創(chuàng)建與基本操作3.2.9
刪除記錄的命令在VisualFoxPro中刪除記錄可分為邏輯刪除物理刪除3.2表的創(chuàng)建與基本操作1.置邏輯刪除標(biāo)記DELETE命令【命令格式】DELETE[<范圍>][FOR<條件>]【命令功能】對當(dāng)前表中指定范圍內(nèi)滿足條件的記錄加上“*”?!菊f明】如果缺省所有參數(shù),則只刪除當(dāng)前一條記錄。3.2表的創(chuàng)建與基本操作【實(shí)例3.14】邏輯刪除“教師編號”為“8008”的記錄。USE個(gè)人信息表DELETEFOR教師編號=“8008”3.2表的創(chuàng)建與基本操作2.恢復(fù)邏輯刪除記錄RECALL命令【命令格式】RECALL[<范圍>][FOR<條件>]【命令功能】對當(dāng)前表中指定范圍內(nèi)滿足條件的已作刪除標(biāo)記的記錄恢復(fù)。【說明】如果缺省所有參數(shù),則只刪除當(dāng)前一條記錄。3.2表的創(chuàng)建與基本操作【實(shí)例3.15】將個(gè)人信息表中已經(jīng)刪除的第4條記錄恢復(fù)。USE個(gè)人信息表RECALLRECORD43.2表的創(chuàng)建與基本操作3.物理刪除有刪除標(biāo)記的記錄PACK命令【命令格式】PACK【命令功能】對當(dāng)前表中帶有刪除標(biāo)記的記錄全部清除?!菊f明】執(zhí)行該命令后所有帶有刪除標(biāo)記的記錄將從表中被物理地刪除,并且不可以恢復(fù)。3.2表的創(chuàng)建與基本操作4.物理刪除表中的全部記錄ZAP命令【命令格式】ZAP【命令功能】對當(dāng)前表中所有記錄完全清除?!菊f明】執(zhí)行該命令可以物理刪除表中的全部記錄,不管是否有刪除標(biāo)記。執(zhí)行完該命令后表結(jié)構(gòu)依然存在。3.2表的創(chuàng)建與基本操作3.2.10
修改記錄的命令在VisualFoxPro中可以交互式修改記錄,也可以用于指定的值直接修改記錄。交互式修改記錄可以用瀏覽修改BROWSE命令和編輯修改EDIT|CHANGE命令。REPLACE替換修改命令可用指定值直接修改記錄。3.2表的創(chuàng)建與基本操作1.編輯修改EDIT|CHANGE命令這兩個(gè)命令均用于交互地對當(dāng)前表記錄進(jìn)行編輯、修改。默認(rèn)修改的是當(dāng)前記錄,可以通過【PageDown】或【PageUp】鍵跳到下一記錄或上一記錄,或者通過鼠標(biāo)操作快速定位到要修改的記錄,實(shí)現(xiàn)操作。3.2表的創(chuàng)建與基本操作2.替換修改REPLACE命令【命令格式】REPLACE<字段名1>WITH<表達(dá)式1>[,<字段名2>WITH<表達(dá)式2>]……[<范圍>][FOR<條件>]【命令功能】用指定表達(dá)式或值替換當(dāng)前表中滿足條件記錄的指定字段的值?!菊f明】該命令適用于對當(dāng)前表中成批地替換數(shù)據(jù)。如果缺省參數(shù),則只修改當(dāng)前記錄。【注意】表達(dá)式的類型必須與字段類型一致,且表達(dá)式的值不能超出字段寬度,否則,數(shù)據(jù)無效。3.2表的創(chuàng)建與基本操作【實(shí)例3.16】將工作信息表中講授“計(jì)算機(jī)基礎(chǔ)”的周學(xué)時(shí)增加2節(jié)。USE工作信息表REPLACEALL周學(xué)時(shí)WITH周學(xué)時(shí)+2FOR課程名稱=“計(jì)算機(jī)基礎(chǔ)”3.2表的創(chuàng)建與基本操作【實(shí)例3.17】將個(gè)人信息表中編號為“8001”的教師專業(yè)修改為“計(jì)算機(jī)”。USE個(gè)人信息表REPLACEALL所學(xué)專業(yè)WITH“計(jì)算機(jī)”FOR教師編號=“8001”3.2表的創(chuàng)建與基本操作3.2.11
多表操作前面介紹的操作是對當(dāng)前表進(jìn)行操作,似乎默認(rèn)在同一時(shí)刻只能使用一個(gè)表,只能對一個(gè)表進(jìn)行操作,實(shí)際并非如此。在VisualFoxPro中一次可以打開多個(gè)數(shù)據(jù)庫,在每個(gè)數(shù)據(jù)庫中可以打開多個(gè)表,另外還可以打開多個(gè)自由表。3.2表的創(chuàng)建與基本操作1.工作區(qū)的概念工作區(qū)是VisualFoxPro在內(nèi)存中開辟的臨時(shí)區(qū)域,最多提供了32767個(gè)工作區(qū),每個(gè)工作區(qū)都有一個(gè)工作區(qū)號,分別用1~32767表示。系統(tǒng)規(guī)定前10個(gè)工作區(qū)的別名用A-J表示,工作區(qū)11~32767中指定的別名為W11~W32767。在每個(gè)工作區(qū)只能打開一個(gè)表。如果需要打開多個(gè)表,要在不同的工作區(qū)打開。系統(tǒng)默認(rèn)在第一個(gè)工作區(qū)為當(dāng)前工作區(qū)。3.2表的創(chuàng)建與基本操作2.選擇工作區(qū)
【命令格式】SELECT<工作區(qū)號>|<表別名>【命令功能】將指定的工作區(qū)設(shè)為當(dāng)前工作區(qū)?!菊f明】<工作區(qū)號>:用于指定工作區(qū)號,范圍是0~32767。若指定為0,則選擇編號最小的工作區(qū)為當(dāng)前工作區(qū)。<表別名>:是打開表的別名,用來指定包含打開的工作區(qū)。3.2表的創(chuàng)建與基本操作【實(shí)例3.18】分別在第1、2、3工作區(qū)打開人員信息表、個(gè)人信息表和工作信息表三個(gè)表,并選擇當(dāng)前工作區(qū)。OPENDATABASE人員信息管理SELECT1USE人員信息表SELECT2USE
個(gè)人信息表SELECT3USE工作信息表USE人員信息表或SELECT13.2表的創(chuàng)建與基本操作3.在打開表時(shí),還可以在USE命令后面使用了ALIAS參數(shù)指定表的別名?!久罡袷健縐SE<表文件名>[ALIAS<別名>]
[IN<工作區(qū)號>]【命令功能】在一個(gè)工作區(qū)中使用另外一個(gè)工作區(qū)中的表?!菊f明】ALIAS<表別名>:用來指定打開表的別名。3.2表的創(chuàng)建與基本操作【實(shí)例3.19】
分別在第1、2、3工作區(qū)打開人員信息表、個(gè)人信息表和工作信息表三個(gè)表。OPENDATABASE人員信息管理USE人員信息表IN1USE
個(gè)人信息表IN2USE
工作信息表IN33.2表的創(chuàng)建與基本操作4.使用不同工作區(qū)的表在一個(gè)工作區(qū)中,還可以直接利用表名或表的別名引用另外一個(gè)表中的數(shù)據(jù)。【命令格式】<工作區(qū)別名>.<字段名>|<工作區(qū)別名>-><字段名>【命令功能】在一個(gè)工作區(qū)中引用另外一個(gè)工作區(qū)中的字段值。3.2表的創(chuàng)建與基本操作【實(shí)例3.20】當(dāng)前工作區(qū)為第3工作區(qū)(工作信息表),現(xiàn)在要顯示第一個(gè)工作區(qū)中人員信息表的當(dāng)前記錄的“姓名”和“職稱”字段的值。?人員信息表.姓名,人員信息表->職稱3.2表的創(chuàng)建與基本操作5.表之間的關(guān)聯(lián)在VisualFoxPro中根據(jù)所建表關(guān)系能否長久保存在數(shù)據(jù)庫中,可把兩表之間的關(guān)系分為永久關(guān)系和臨時(shí)關(guān)系兩種。永久關(guān)系:數(shù)據(jù)表之間的這種關(guān)系不僅運(yùn)行時(shí)存在,而且一直保存在數(shù)據(jù)庫中,這種就是永久關(guān)系。臨時(shí)關(guān)系:在任意類型表之間都可建立臨時(shí)關(guān)系,這種臨時(shí)關(guān)系也稱為關(guān)聯(lián)。3.2表的創(chuàng)建與基本操作(1)建立關(guān)聯(lián)【命令格式】SETRELATIONTO<表達(dá)式>INTO<工作區(qū)號>|<工作區(qū)別名>【命令功能】建立表之間的關(guān)聯(lián)?!菊f明】<表達(dá)式>:有“關(guān)鍵字表達(dá)式”和“數(shù)值表達(dá)式”兩種形式。其中關(guān)鍵字必須是兩個(gè)表文件共有的字段,且別名表文件已按關(guān)鍵字建立了索引文件,已指定關(guān)鍵字段為主索引?!皵?shù)值表達(dá)式”的值指子表記錄指針應(yīng)定位的記錄號。3.2表的創(chuàng)建與基本操作【實(shí)例3.21】在人員信息表和個(gè)人信息表中,建立臨時(shí)關(guān)系。OPENDATABASE人員信息管理USE人員信息表SELE2USE個(gè)人信息表INDEXON教師編號TAG教師編號SETORDERTOTAG教師編號SELE1SETRELATIONTO教師編號INTOB3.2表的創(chuàng)建與基本操作(2)取消關(guān)聯(lián)當(dāng)某些關(guān)聯(lián)不再使用,或暫時(shí)不再使用時(shí),應(yīng)及時(shí)解除關(guān)聯(lián),以提高系統(tǒng)的運(yùn)行速度?!久罡袷健縎ETRELATIONTO【命令功能】取消表之間的關(guān)聯(lián)?!咀⒁狻慨?dāng)用USE關(guān)閉某些表時(shí),系統(tǒng)將自動刪除掉與它建立的關(guān)聯(lián)。當(dāng)關(guān)閉父表時(shí),將自動關(guān)閉與父表建立的所有關(guān)聯(lián)。3.2表的創(chuàng)建與基本操作3.2.12
表的統(tǒng)計(jì)命令在VisualFoxPro中經(jīng)常需要對表中相應(yīng)的記錄進(jìn)行統(tǒng)計(jì),對數(shù)值型數(shù)據(jù)可以進(jìn)行求和、求平
均值以及分類匯總等計(jì)算。3.2表的創(chuàng)建與基本操作1.統(tǒng)計(jì)記錄個(gè)數(shù)COUNT命令【命令格式】COUNT[<范圍>][FOR<條件>][WHILE<條件>][TO<內(nèi)存變量名>]【命令功能】統(tǒng)計(jì)當(dāng)前表文件中符合條件的記錄數(shù)?!菊f明】如果缺省全部任選項(xiàng),則可統(tǒng)計(jì)出表中所有記錄數(shù)。TO<內(nèi)存變量名>:將計(jì)算的記錄數(shù)存放在內(nèi)存變量中。如果用戶指定的內(nèi)存變量不存在,系統(tǒng)會創(chuàng)建它。3.2表的創(chuàng)建與基本操作【實(shí)例3.22】統(tǒng)計(jì)個(gè)人信息表中所有“計(jì)算機(jī)”專業(yè)教師的記錄數(shù),并存放在M1中。USE個(gè)人信息表COUNTFOR所學(xué)專業(yè)=“計(jì)算機(jī)”TOM14records?M143.2表的創(chuàng)建與基本操作2.求和SUM命令【命令格式】SUM[<范圍>][<數(shù)值表達(dá)式>][TO<內(nèi)存變量名表>|TOARRAY<數(shù)組>][FOR<條件>]【命令功能】對當(dāng)前表中選中記錄的全部或指定的數(shù)值字段或由指定字段組成的數(shù)值表達(dá)式累加求和。【說明】沒有任選項(xiàng),則對表中所有數(shù)值型字段都累加求和。<數(shù)值表達(dá)式>:任選項(xiàng)可以是一個(gè)或多個(gè)數(shù)值型字段或由它們組成的數(shù)值表達(dá)式,數(shù)值表達(dá)式間用“,”隔開。3.2表的創(chuàng)建與基本操作【實(shí)例3.23】求工作信息表文件中講授“計(jì)算機(jī)基礎(chǔ)”課程的總周學(xué)時(shí)數(shù)。USE工作信息表SUMALL周學(xué)時(shí)TOG1FOR課程名稱=“計(jì)算機(jī)基礎(chǔ)”3recordssummed周學(xué)時(shí)6.003.2表的創(chuàng)建與基本操作3.求平均值A(chǔ)VERAGE命令【命令格式】AVERAGE[<范圍>][<數(shù)值表達(dá)式>][TO<內(nèi)存變量名表>|TOARRAY<數(shù)組>][FOR<條件>]【命令功能】對當(dāng)前表中選中記錄的全部或部分?jǐn)?shù)值型字段及其組成的表達(dá)式求平均值并顯示,且可存入內(nèi)存變量名表中。3.2表的創(chuàng)建與基本操作【實(shí)例3.24】求工作信息表文件中講授“計(jì)算機(jī)基礎(chǔ)”課程的教師的平均周學(xué)時(shí)數(shù)。USE工作信息表AVERAGEALL周學(xué)時(shí)TON1FOR課程名稱=“計(jì)算機(jī)基礎(chǔ)”3recordsaveraged周學(xué)時(shí)2.003.2表的創(chuàng)建與基本操作4.表的分類匯總TOTAL命令在實(shí)際運(yùn)用中,用戶常常需要將表的數(shù)值字段進(jìn)行分類統(tǒng)計(jì),VFP提供了專門的分類匯總命令?!久罡袷健縏OTALTO<表文件名>ON<表達(dá)式>[FIELDS<字段名表>][<范圍>][FOR<條件>]【命令功能】對當(dāng)前表中選中記錄的全部或部分?jǐn)?shù)值型字段按關(guān)鍵字表達(dá)式相同的記錄進(jìn)行匯總,并將其結(jié)果放入指定的表文件中。3.2表的創(chuàng)建與基本操作【說明】生成的新表文件與原表文件結(jié)構(gòu)相同,但沒有備注型字段。新生成的數(shù)據(jù)表文件中,每一分類只產(chǎn)生一個(gè)記錄。如果數(shù)值型字段的匯總結(jié)果超出原數(shù)據(jù)表的該數(shù)值型字段的寬度,VisualFoxPro會自動修改新數(shù)據(jù)表溫暖件的數(shù)值型字段的寬度。ON<表達(dá)式>:是分類匯總的標(biāo)準(zhǔn),使用TOTAL命令前必須對當(dāng)前表按<表達(dá)式>進(jìn)行索引或者排序,并且打開索引或排序文件。<表文件名>:指定存放結(jié)果的表文件。FIELDS<字段名表>:對<字段名表>中所給出的數(shù)值型字段進(jìn)行匯總操作。3.2表的創(chuàng)建與基本操作【實(shí)例3.25】對工作信息表文件按“課程名稱”對周學(xué)時(shí)數(shù)進(jìn)行匯總。USE工作信息表INDEXON課程名稱TAG課程名稱TOTALON課程名稱TONSUMUSENSUMLIST3.3表的索引與排序
為了提高數(shù)據(jù)查詢、統(tǒng)計(jì)和定位的效率,并滿足用戶對表中記錄進(jìn)行排序等的要求,VisualFoxPro提供了索引功能,為開發(fā)應(yīng)用程序提供靈活性。VisualFoxPro又把索引分為多種類型,用戶可以根據(jù)自己的不同需求創(chuàng)建不同類型的索引。3.3表的索引與排序VisualFoxPro索引是由指針構(gòu)成的文件,這些指針邏輯上按照索引關(guān)鍵字值進(jìn)行排序。索引文件和表的.dbf文件分別存儲,并且不改變表中記錄的物理順序。實(shí)際上,創(chuàng)建索引是創(chuàng)建一個(gè)由指向.dbf文件記錄的指針構(gòu)成的文件。一個(gè)表可以創(chuàng)建多個(gè)索引,可以通過命令指定這個(gè)表的記錄按照某個(gè)索引的值排列。使用索引還可以加速對表的查詢操作。3.3表的索引與排序1.索引的結(jié)構(gòu)VisualFoxPro系統(tǒng)中支持兩種不同的索引文件類型,即單索引文件和復(fù)合索引文件。單索引文件是根據(jù)一個(gè)索引關(guān)鍵字表達(dá)式(或關(guān)鍵字)建立的索引文件,文件擴(kuò)展名為.idx,它可用INDEX命令建立。單索引文件分為標(biāo)準(zhǔn)和壓縮兩種類型。復(fù)合索引文件又有兩種:一種是結(jié)構(gòu)復(fù)合索引文件;另一種是非結(jié)構(gòu)復(fù)合索引文件。結(jié)構(gòu)復(fù)合索引文件是由VisualFoxPro自動命名的,與相應(yīng)的表文件同名,擴(kuò)展名為.cdx。該索引文件隨表文件同時(shí)打開和同時(shí)關(guān)閉;非結(jié)構(gòu)復(fù)合索引文件不與表文件同名,擴(kuò)展名為.cdx。在打開表時(shí)不會自動打開此索引文件,應(yīng)由命令指定打開。3.3表的索引與排序2.索引的類型在VisualFoxPro中,提供了4種索引類型:主索引候選索引唯一索引普通索引3.3表的索引與排序3.3.2
創(chuàng)建和使用索引1.在表設(shè)計(jì)器中建立索引(1)在“字段”選項(xiàng)卡中建立在表設(shè)計(jì)器界面中有“字段”、“索引”和“表”三個(gè)選項(xiàng)卡。在“字段”選項(xiàng)卡中定義字段時(shí)就可以直接指定某些字段是否是索引項(xiàng),用鼠標(biāo)單擊定義索引的下拉列表框可以看到有三個(gè)選項(xiàng):無、升序和降序(默認(rèn)是無)。如果選定了升序或降序,則在對應(yīng)的字段上建立了一個(gè)普通索引,索引名與字段名同名,索引表達(dá)式就是對應(yīng)的字段。3.3表的索引與排序3.3表的索引與排序(2)在“索引”選項(xiàng)卡中建立①在表設(shè)計(jì)器中選擇“索引”選項(xiàng)卡,單擊【插入】按鈕會出現(xiàn)一個(gè)新行。②在“索引名”欄中輸入索引名。③從“類型”下拉列表框中選擇索引的類型,其中包括主索引、候選索引、唯一索引或普通索引。3.3表的索引與排序⑤在表達(dá)式生成器中入索引表達(dá)式,最后單擊【確定】按鈕。⑥設(shè)置索引的升序和降序。單擊在“索引名”框左邊的箭頭按鈕,可改變索引的序列。索引的升序和降序決定了索引表達(dá)式的值在索引文件中是從小到大排列,還是從大到小排列。在缺省的情況下,創(chuàng)建的索引是升序索引。【注意】在一個(gè)表上可以建立多個(gè)普通索引、多個(gè)唯一索引、多個(gè)候選索引,但只能建立一個(gè)主索引。通常,主索引用于主關(guān)鍵字段;候選索引用于那些不作為主關(guān)鍵字但字段值又必須唯一的字段;普通索引用于一般地提高查詢速度;唯一索引用于一些特殊的程序設(shè)計(jì)。3.3表的索引與排序2.用命令建立索引【命令格式】INDEXON<關(guān)鍵字表達(dá)式>TO<單索引文件名>|TAG<標(biāo)識名>[OF<非結(jié)構(gòu)復(fù)合索引文件名>][FOR<條件>][COMPACT][ASCENDING|DESCENDING][UNIQUE][CANDIDATE][ADDITIVE]【命令功能】對當(dāng)前表文件按指定的關(guān)鍵字表達(dá)式建立索引文件。3.3表的索引與排序【說明】<關(guān)鍵字表達(dá)式>:是指建立索引文件的關(guān)鍵字表達(dá)式,可以是一個(gè)字段名,也可以是多個(gè)字段組成的表達(dá)式,但類型必須轉(zhuǎn)換為一致。TO<單索引文件名>:建立一個(gè)單獨(dú)的索引文件,是擴(kuò)展名為.idx的文件。TAG<標(biāo)識名>:此可選項(xiàng)只對復(fù)合索引文件有效,指定建立或追加索引標(biāo)識的標(biāo)識名。OF<非結(jié)構(gòu)復(fù)合索引文件名>:指定非結(jié)構(gòu)復(fù)合索引文件名,擴(kuò)展名是.cdx。
3.3表的索引與排序FOR<條件>:只對滿足條件的記錄建立索引。COMPACT:說明建立一個(gè)壓縮的.idx文件。ASCENDING|DESCENDING:說明建立升序或降序索引,默認(rèn)升序。UNIQUE:說明建立唯一索引。CANDIDATE:說明建立候選索引。ADDITIVE:與建立索引本身無關(guān),說明現(xiàn)在建立索引時(shí)是否關(guān)閉以前的非結(jié)構(gòu)索引,默認(rèn)是關(guān)閉已經(jīng)使用的非結(jié)構(gòu)索引,使新建立的索引成為當(dāng)前索引。3.3表的索引與排序【實(shí)例3.26】
對個(gè)人信息表建立“姓名”單索引文件XMSY.idx,并顯示結(jié)果。USE個(gè)人信息表INDEXON姓名TOXMSY.idxLIST3.3表的索引與排序【實(shí)例3.27】
對個(gè)人信息表按教師編號、出生日期建立結(jié)構(gòu)復(fù)合索引文件。USE個(gè)人信息表INDEXON教師編號TAG教師編號INDEXON出生日期TAG出生日期3.3表的索引與排序3.使用索引(1)打開索引文件盡管結(jié)構(gòu)索引在打開表時(shí)都能夠自動打開,但對于非結(jié)構(gòu)索引必須在使用之前打開索引文件?!久罡袷健縎ETINDEXTO<索引文件名表>【命令功能】在已打開表文件的前提下,打開相關(guān)索引文件。3.3表的索引與排序(2)設(shè)置當(dāng)前索引盡管打開了結(jié)構(gòu)索引文件(在打開表時(shí)自動打開)或非結(jié)構(gòu)復(fù)合索引文件,在使用某個(gè)特定索引項(xiàng)進(jìn)行查詢或需要記錄按某個(gè)特定索引項(xiàng)的順序顯示時(shí),則必須指定當(dāng)前索引項(xiàng)?!久罡袷健縎ETORDERTO[<數(shù)值表達(dá)式>|[TAG]<標(biāo)識名>][ASCENDING|DESCENDING]【命令功能】指定打開的索引文件中的主索引。3.3表的索引與排序【實(shí)例3.28】
打開個(gè)人信息表按“出生日期”顯示表中的記錄。USE個(gè)人信息表SETORDERTOTAG出生日期3.3表的索引與排序4.查詢命令在數(shù)據(jù)資源的管理過程中,使用最頻繁的操作是查詢滿足一定條件的系列數(shù)據(jù)。對表記錄的查詢系統(tǒng)提供了兩類查詢命令:順序查詢快速查詢3.3表的索引與排序(1)順序查詢【命令格式】LOCATE[<范圍>]FOR<條件>【命令功能】在表指定范圍中按順序查找并定位第一個(gè)相匹配的記錄。若想繼續(xù)查找,可以利用繼續(xù)查找命令CONTINUE?!久罡袷健緾ONTINUE【命令功能】查找并定位到下一個(gè)符合條件的記錄上。3.3表的索引與排序【說明】用LOCATE命令查詢時(shí),不用對表進(jìn)行排序或建立索引文件。該命令后將記錄指針定位在指定范圍內(nèi)滿足條件的第一條記錄上,則置函數(shù)FOUND()值為.T.;如果沒有滿足條件的記錄則指針指向文件結(jié)束位置,則置函數(shù)FOUND()值為.F.。<范圍>:指定查找范圍,缺省時(shí),系統(tǒng)默認(rèn)為ALL。3.3表的索引與排序【實(shí)例3.29】查找個(gè)人信息表畢業(yè)學(xué)校是“遼寧大學(xué)”的記錄。USE個(gè)人信息表LOCATEFOR畢業(yè)學(xué)校=“遼寧大學(xué)”DISPLAYCONTINUEDISPLAY3.3表的索引與排序2)快速查詢①FIND命令【命令格式】FIND<字符串>|<數(shù)值>【命令功能】在當(dāng)前索引中快速查找字符串或數(shù)值相匹配的第一個(gè)記錄。3.3表的索引與排序【說明】此命令在使用前必須打開相應(yīng)的表文件和主控索引文件。此命令只能查找字符串或數(shù)值,但不能是表達(dá)式。字符串不用定界符,若按字符型內(nèi)存變量查找,必須使用宏代換&函數(shù)。若找到了符合條件的首記錄,則置函數(shù)FOUND()值為.T.;否則置函數(shù)FOUND()值為.F.。3.3表的索引與排序【實(shí)例3.30】在個(gè)人信息表中快速查找姓名為“李紅”的記錄。USE個(gè)人信息表INDEXON姓名TAG姓名FIND李紅DISPLAY3.3表的索引與排序②SEEK命令【命令格式】SEEK<表達(dá)式>【命令功能】在當(dāng)前索引中快速查找關(guān)鍵字值與表達(dá)式值相匹配的第一個(gè)記錄。3.3表的索引與排序【說明】此命令可以查找字符型、數(shù)值型、日期型和邏輯型數(shù)據(jù),其表文件必須按相應(yīng)表達(dá)式索引。若表達(dá)式為字符型時(shí),必須使用定界符;若表達(dá)式為日期型時(shí),必須使用大括號括起來。若找到了符合條件的首記錄,則置函數(shù)FOUND()值為.T.;否則置函數(shù)FOUND()值為.F.。對于字符表
溫馨提示
- 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)確性、安全性和完整性, 同時(shí)也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 二零二五年度秸稈供應(yīng)合同中的秸稈生物質(zhì)能源項(xiàng)目合作終止與清算協(xié)議
- 二零二五年度珠寶店電子商務(wù)部門聘用合同
- 2025年度虛擬現(xiàn)實(shí)產(chǎn)業(yè)入股合作協(xié)議書
- 二零二五年度商鋪?zhàn)赓U合同延期及經(jīng)營支持措施
- 二零二五年度房屋抵押借款合同評房動態(tài)監(jiān)控與貸款利率調(diào)整服務(wù)協(xié)議
- 出售大件掛車合同范本
- 二零二五年度婚內(nèi)債務(wù)處理及還款責(zé)任明確協(xié)議
- 2025年中國特殊清潔夾具市場調(diào)查研究報(bào)告
- 二零二五年度單位公房租賃與租賃期滿解約協(xié)議
- 二零二五年度電視廣告時(shí)段分?jǐn)偱c贊助協(xié)議
- GB/T 44112-2024電化學(xué)儲能電站接入電網(wǎng)運(yùn)行控制規(guī)范
- 加油站加油合同范本
- 河南省南陽市2024-2025學(xué)年七年級上學(xué)期期末模擬英語試題(含答案)
- 2024年高中數(shù)學(xué)新課程標(biāo)準(zhǔn)考試模擬測試題及答案
- 煤礦員工安全培訓(xùn)教材一通三防篇
- 表演課程教案完整版
- 2024年新疆區(qū)公務(wù)員錄用考試《行測》試題及答案解析
- DB14-T 2736-2023 池塘養(yǎng)殖尾水處理規(guī)范
- 體重管理健康科普教育
- 大學(xué)數(shù)學(xué)《概率論與數(shù)理統(tǒng)計(jì)》說課稿
- 深大基坑設(shè)計(jì)施工關(guān)鍵技術(shù)孫加齊
評論
0/150
提交評論