第三章 數(shù)據(jù)庫與數(shù)據(jù)表的創(chuàng)建和使用_第1頁
第三章 數(shù)據(jù)庫與數(shù)據(jù)表的創(chuàng)建和使用_第2頁
第三章 數(shù)據(jù)庫與數(shù)據(jù)表的創(chuàng)建和使用_第3頁
第三章 數(shù)據(jù)庫與數(shù)據(jù)表的創(chuàng)建和使用_第4頁
第三章 數(shù)據(jù)庫與數(shù)據(jù)表的創(chuàng)建和使用_第5頁
已閱讀5頁,還剩95頁未讀, 繼續(xù)免費閱讀

下載本文檔

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

文檔簡介

第三章數(shù)據(jù)庫與數(shù)據(jù)表的創(chuàng)建和使用3.1數(shù)據(jù)庫設(shè)計3.2數(shù)據(jù)庫的組成3.3創(chuàng)建和使用數(shù)據(jù)庫3.4數(shù)據(jù)表3.5數(shù)據(jù)表的索引3.6數(shù)據(jù)庫表的操作開發(fā)數(shù)據(jù)庫管理應用系統(tǒng)時,首先要設(shè)計數(shù)據(jù)庫,數(shù)據(jù)庫設(shè)計的好壞將直接影響后續(xù)對數(shù)據(jù)的使用和數(shù)據(jù)庫應用系統(tǒng)的維護。數(shù)據(jù)庫設(shè)計步驟:1)需求分析階段:需求收集和分析,得到數(shù)據(jù)字典和數(shù)據(jù)流圖。2)概念結(jié)構(gòu)設(shè)計階段:對用戶需求綜合、歸納與抽象,形成概念模型。3)邏輯結(jié)構(gòu)設(shè)計階段:將概念結(jié)構(gòu)轉(zhuǎn)換為具體DBMS所支持的數(shù)據(jù)模型。4)數(shù)據(jù)庫物理設(shè)計階段:為邏輯數(shù)據(jù)模型選取相對適合的物理結(jié)構(gòu)。3.1數(shù)據(jù)庫設(shè)計1.數(shù)據(jù)需求分析階段是向用戶收集信息,明確用戶問題的具體要求、處理哪些數(shù)據(jù),希望獲得什么結(jié)果,最后輸出哪些數(shù)據(jù)。數(shù)據(jù)需求分析是數(shù)據(jù)庫設(shè)計的第一步,是其他后續(xù)步驟的基礎(chǔ)。例如,教學管理系統(tǒng)的主要功能是對教學環(huán)節(jié)的各種相關(guān)數(shù)據(jù)進行管理。教學管理所涉及的相關(guān)數(shù)據(jù)是:1)學生信息2)教師信息3)課程信息4)學院信息5)學生所在班級信息6)學生課程的成績信息等。2.確定數(shù)據(jù)表數(shù)據(jù)表是數(shù)據(jù)庫管理的主要對象。在應用系統(tǒng)設(shè)計中將根據(jù)具體功能需求將收集的數(shù)據(jù)進行分類并分解為多個不同的實體,并確定這些實體之間存在的聯(lián)系。例如,“教學管理系統(tǒng)”涉及多個實體,如學生、教師、課程、成績、班級、學院、教學任務等。每個實體可創(chuàng)建一個數(shù)據(jù)表,用于存放相關(guān)數(shù)據(jù)。本例中“教學管理系統(tǒng)”有八個實體、實體間的聯(lián)系如圖所示:學院基本信息學生基本信息課程基本信息教師基本信息學生成績信息學生所在班級教師任課信息教師職稱信息3.確定所需字段每一張數(shù)據(jù)表就是一個實體的具體信息,每個實體的相關(guān)信息是通過屬性體現(xiàn)出來,依據(jù)實體的屬性確定數(shù)據(jù)表中的字段。設(shè)計數(shù)據(jù)表中的字段有以下規(guī)則:1)數(shù)據(jù)表中的字段是不可再分解的。2)數(shù)據(jù)表中的字段必須是實體的直接描述。3)數(shù)據(jù)表中不能包含通過計算或者推導得出的字段。4)每個數(shù)據(jù)表必須包含主關(guān)鍵字。主關(guān)鍵字由數(shù)據(jù)表中一個或一組字段構(gòu)成,用以唯一確定存儲在數(shù)據(jù)表中的記錄。例如,以“教學管理系統(tǒng)”中“學生”實體為例,其主要屬性如圖所示:主關(guān)鍵字4.確定表間關(guān)系在應用系統(tǒng)中,數(shù)據(jù)表之間通常存在一定的聯(lián)系。利用這些聯(lián)系可以查詢相應的信息,并為數(shù)據(jù)的完整性和一致性提供支持。聯(lián)系有三種:一對一關(guān)系、一對多關(guān)系、多對多關(guān)系一對一關(guān)系在實際應用中不常見。如果兩個數(shù)據(jù)表之間存在一對一關(guān)系,可以將兩個數(shù)據(jù)表合并為一個數(shù)據(jù)表。一對多關(guān)系最常見的,也是最常用的關(guān)系。例如,department表和student表之間就存在著一對多的關(guān)系,department表中的一個學院有多位學生記錄。多對多關(guān)系這種關(guān)系在實際應用中經(jīng)常出現(xiàn)。例如,student表和course表之間就存在多對多關(guān)系。一個學生可以同時選修多門課程,而每一門課程可以被多位學生選修。在VFP中,兩個數(shù)據(jù)表不能直接建立聯(lián)系實現(xiàn)多對多關(guān)系,必須通過第三個數(shù)據(jù)表來實現(xiàn),這第三個數(shù)據(jù)表在兩個數(shù)據(jù)表之間起紐帶的作用,故稱為“紐帶表”。紐帶表中分別有兩個數(shù)據(jù)表的主關(guān)鍵字,這兩個數(shù)據(jù)表分別與紐帶表建立一對多的聯(lián)系。例如,將sscore表作為student表和course表之間的紐帶表。3.2數(shù)據(jù)庫的組成在VFP中,數(shù)據(jù)庫是一個邏輯上的概念和手段,通過一組系統(tǒng)文件將相互聯(lián)系的數(shù)據(jù)庫表及其相關(guān)的數(shù)據(jù)庫對象統(tǒng)一組織和管理。用戶可以通過數(shù)據(jù)庫來組織數(shù)據(jù)表、視圖,并可以建立數(shù)據(jù)表間關(guān)系、創(chuàng)建存儲過程以及訪問遠程數(shù)據(jù)源。在VFP中數(shù)據(jù)庫包含:1)數(shù)據(jù)表2)本地視圖3)遠程視圖4)連接和存儲過程數(shù)據(jù)表數(shù)據(jù)表是存儲數(shù)據(jù)的實體,是處理數(shù)據(jù)和建立關(guān)系數(shù)據(jù)庫及其應用程序的基本單元。視圖在VFP中數(shù)據(jù)表分為兩類:自由表和數(shù)據(jù)庫表。是數(shù)據(jù)庫中的一張?zhí)摂M表,簡稱為虛表。視圖中的數(shù)據(jù)是從已有的數(shù)據(jù)表中提取出來。連接用于訪問遠程服務器中的數(shù)據(jù)。存儲過程是指存儲在數(shù)據(jù)庫文件中的程序代碼,在數(shù)據(jù)庫打開時自動加載到內(nèi)存中。1.創(chuàng)建數(shù)據(jù)庫3.3數(shù)據(jù)庫的創(chuàng)建和使用利用項目管理器在項目管理器中選擇“數(shù)據(jù)”選項卡中的“數(shù)據(jù)庫”,再單擊項目管理器右側(cè)的“新建”按鈕。利用菜單選擇“文件”菜單中的“新建”命令,或者單擊工具欄中“

”按鈕,然后在打開的“新建”對話框中選擇“數(shù)據(jù)庫”單選按鈕。語法:CREATEDATABASE[<數(shù)據(jù)庫名>|?]命令方式數(shù)據(jù)庫創(chuàng)建后將生成三個文件:數(shù)據(jù)庫文件(.dbc)、數(shù)據(jù)庫備注文件(.dct)和數(shù)據(jù)庫索引文件(.dcx)。2.使用數(shù)據(jù)庫打開數(shù)據(jù)庫選擇“文件”菜單中的“打開”命令,或工具欄上的“打開

”按鈕。界面方式語法:OPENDATABASE[<數(shù)據(jù)庫名>|?]命令方式例如,打開已創(chuàng)建的數(shù)據(jù)庫stum,執(zhí)行以下命令:OPENDATABASEstum也可以通過修改方式打開數(shù)據(jù)庫,其語法格式如下:MODIFYDATABASE<數(shù)據(jù)庫名>關(guān)閉數(shù)據(jù)庫如果不帶關(guān)鍵字ALL,則表示關(guān)閉當前數(shù)據(jù)庫;若后面加上關(guān)鍵字ALL,則表示關(guān)閉當前打開的所有數(shù)據(jù)庫。在項目管理器中選擇要關(guān)閉的數(shù)據(jù)庫,再單擊右側(cè)的“關(guān)閉”按鈕。界面方式語法:CLOSEDATABASE[ALL]命令方式當數(shù)據(jù)庫關(guān)閉后,與該數(shù)據(jù)庫相關(guān)的數(shù)據(jù)庫表也都同時被關(guān)閉。刪除數(shù)據(jù)庫該命令用于刪除當前指定的數(shù)據(jù)庫。在項目管理器中選擇要刪除的數(shù)據(jù)庫,再單擊右側(cè)的“移去”按鈕。界面方式語法:DELETEDATABASE<數(shù)據(jù)庫名>命令方式例如,刪除已創(chuàng)建的數(shù)據(jù)庫stum,執(zhí)行以下命令:DELETEDATABASEstum刪除數(shù)據(jù)庫時,數(shù)據(jù)庫必須處于關(guān)閉狀態(tài)。如果數(shù)據(jù)庫刪除后,數(shù)據(jù)庫所包含的數(shù)據(jù)庫表將自動變?yōu)樽杂杀怼TO(shè)置當前數(shù)據(jù)庫例如,設(shè)置stum數(shù)據(jù)庫為當前數(shù)據(jù)庫,則執(zhí)行以下命令:SETDATABASETOstum常用工具欄上的下拉列表框中顯示所有打開的數(shù)據(jù)庫,從中選擇某個數(shù)據(jù)庫為當前數(shù)據(jù)庫。界面方式語法:SETDATABASETO<數(shù)據(jù)庫名>命令方式注意:在指定當前數(shù)據(jù)庫時,該數(shù)據(jù)庫應預先處于打開狀態(tài),否則會出錯。1.建立數(shù)據(jù)表3.4數(shù)據(jù)表數(shù)據(jù)表是處理數(shù)據(jù)和建立關(guān)系數(shù)據(jù)庫的基本單元。數(shù)據(jù)表一般由表結(jié)構(gòu)和表記錄兩部分組成。在VFP中數(shù)據(jù)表分為自由表和數(shù)據(jù)庫表,無論是自由表還是數(shù)據(jù)庫表都以擴展名為.dbf的文件形式保存在磁介質(zhì)上。數(shù)據(jù)表的組成每一個數(shù)據(jù)表對應一個關(guān)系,每一個關(guān)系對應一張二維表。二維表中的每一行有若干個數(shù)據(jù)項,這些數(shù)據(jù)項構(gòu)成一條記錄,二維表中的每一列對應實體的每一個屬性。例如,以學生表(student)為例:該數(shù)據(jù)表共有9個屬性列,每個屬性列都有不同的名稱。同一屬性列的所有數(shù)據(jù)類型完全相同,而不同屬性列存放的數(shù)據(jù)類型可以不同。每個屬性列數(shù)據(jù)的寬度也有一定的限制。每個屬性列的取值也可能有一定的限制。在VFP中數(shù)據(jù)表的每一列稱為一個字段。字段的個數(shù)和每個字段的名稱、類型、寬度等要素決定了表文件的結(jié)構(gòu)。數(shù)據(jù)表的基本結(jié)構(gòu)包括字段名、字段類型、字段寬度和小數(shù)位數(shù)。由字母、漢字、數(shù)字和下劃線組成。它的命名規(guī)則與變量相同。自由表字段名最長為10字符,數(shù)據(jù)庫表的字段名最長為128個字符。字段名字段名也被稱作字段變量,用戶可以通過字段名來訪問該字段的值。例如,姓名、tm、r5、_p是合法的字段名,5m、a*t不是合法的字段名。數(shù)據(jù)表中的每個字段都有特定的數(shù)據(jù)類型。不同數(shù)據(jù)類型的表示和可進行的運算有所不同。字段寬度是指字段所能夠容納數(shù)據(jù)的最大字節(jié)數(shù)。字段的數(shù)據(jù)類型和寬度名①字符型字段的寬度最多為254字節(jié)。說明:②數(shù)值型數(shù)據(jù)包含小數(shù)位和正負號時,小數(shù)位和正負號在字段寬度中都要占用一位。③備注型和通用型字段寬度均是4個字節(jié),存放的是一個指向備注文件的指針。數(shù)據(jù)表的備注文件與表文件同名,其擴展名為.fpt。該文件隨數(shù)據(jù)表的打開而自動打開,如果它被破壞或丟失,則數(shù)據(jù)表不能被打開。是否允許為空在數(shù)據(jù)表中如果當前字段的值不能確定時,設(shè)置該字段允許為NULL。VFP支持空值,它是用來表示數(shù)據(jù)存在和不存在的一種屬性??罩凳且粋€不確定的值,它不等同于0、空串和空格。一個字段是否允許為空值與字段的性質(zhì)有關(guān),例如,作為關(guān)鍵字的字段是不允許為空值的。利用設(shè)計器創(chuàng)建表結(jié)構(gòu)例如,以自由表為例,建立一個學生表(student)。1)執(zhí)行“文件”菜單中的“新建”命令或單擊常用工具欄上的“

新建”按鈕,在打開對話框中選擇“表”,單擊“新建文件”按鈕。也可以在項目管理器的“數(shù)據(jù)”選項卡中選擇自由表,單擊右側(cè)的“新建”按鈕。步驟如下:2)在“創(chuàng)建”對話框中輸入表文件名,如student,然后單擊“保存”按鈕;3)在表設(shè)計器中完成表結(jié)構(gòu)的設(shè)計?!氨碓O(shè)計器”有三個選項卡:字段、索引和表?!白侄巍边x項卡用于建立和編輯表文件中字段的名稱、類型、寬度、小數(shù)位數(shù)、索引方式(升序或降序)、設(shè)置NULL等。用于建立索引、排序方式和篩選?!八饕边x項卡用來顯示記錄、字段、長度等?!氨怼边x項卡向數(shù)據(jù)表中輸入記錄輸入數(shù)據(jù)有兩種方式:—編輯方式,即一條記錄的每個字段占一行;—瀏覽方式,即每一條記錄占一行。操作方法:執(zhí)行“顯示”菜單中的“編輯”命令或者“顯示”菜單中的“瀏覽”命令?!皞渥⑿汀弊侄螖?shù)據(jù)輸入“通用型”字段數(shù)據(jù)輸入通過雙擊“memo”標志或按[Ctrl+Home]組合鍵。用于存放圖形、圖像、聲音、電子表格等多媒體數(shù)據(jù)。雙擊通用型字段的“gen”,進入通用型字段編輯窗口,然后執(zhí)行“編輯”菜單中的“插入對象”命令。2.打開和關(guān)閉數(shù)據(jù)表工作區(qū)指標識一個打開的數(shù)據(jù)表的區(qū)域。VFP中規(guī)定每一個數(shù)據(jù)表文件在一個指定的工作區(qū)打開,一個工作區(qū)在某一個時刻只能打開一個數(shù)據(jù)表。每個工作區(qū)都有一個編號,編號的取值范圍為1~32767(前10個工作區(qū)也可以用字母A~J表示)。在某個時刻用戶只能在一個工作區(qū)中打開一張表文件,為了解決同時使用多個數(shù)據(jù)表,VFP提供了多表的打開操作。如果選定某個工作區(qū)可使用SELECT命令,其語法格式如下:SELECT<工作區(qū)號>|<別名>如果工作區(qū)號為0時,表示選擇未被使用的最小編號的工作區(qū)。啟動VFP系統(tǒng)后,系統(tǒng)默認當前工作區(qū)號為1。打開數(shù)據(jù)表界面方式--執(zhí)行“文件”菜單->“打開”命令--單擊工具欄上的“”按鈕--執(zhí)行“窗口”->“數(shù)據(jù)工作期”命令命令方式USE<表文件名>[IN工作區(qū)號][ALIAS別名][EXCLUSIVE|SHARED]說明:1)IN工作區(qū)號指明打開數(shù)據(jù)表的工作區(qū),缺省時表示在當前工作區(qū)中打開數(shù)據(jù)表;2)ALIAS用于指定打開的表的別名,缺省時系統(tǒng)自動指定表名就是別名;3)EXCLUSIVE用于指定以獨占方式打開表文件,系統(tǒng)默認獨占方式;4)SHARED用于指定以共享形式打開表文件。例3.1在不同的工作區(qū)中分別打開student、teacher和department三張數(shù)據(jù)表。SELECT1USEstudent USEteacherIN2 SELECT0 USEdepartmentALIAS學院表

說明:表的別名是對工作區(qū)中打開表的一個臨時標識。如果同一個數(shù)據(jù)表在不同工作區(qū)中同時被打開且沒有指定別名,則系統(tǒng)認為第一次打開的工作區(qū)中的別名和表名相同,其后打開的工作區(qū)中用A~J和W11~W32767來表示。查看數(shù)據(jù)表通過“窗口”菜單中的“數(shù)據(jù)工作期”查看已打開的所有數(shù)據(jù)表以及表的別名。關(guān)閉數(shù)據(jù)表—在“數(shù)據(jù)工作期”窗口中選中要關(guān)閉的表,再單擊“關(guān)閉”按鈕;—命令方式USE[IN<工作區(qū)號>|<別名>]若將所有打開的數(shù)據(jù)表全部關(guān)閉,則執(zhí)行命令:CLOSETABLEALL也可以執(zhí)行CLOSEALL命令關(guān)閉所有打開的文件,其中包括數(shù)據(jù)表、索引以及各類其他文件。例3.3執(zhí)行以下命令:SELECT1USEsscore SELECT2USEcourseUSE USEIN1 表結(jié)構(gòu)的輸出LIST|DISPLAYSTRUCTURE功能:將當前打開的表文件的結(jié)構(gòu)輸出到屏幕上。LIST和DISPLAY的區(qū)別是LIST連續(xù)顯示,當顯示內(nèi)容超過一屏幕時,自動向上滾動,直到顯示完成為止。DISPLAY是分屏顯示,顯示滿一屏時暫停,待用戶按任一鍵后繼續(xù)顯示后面的內(nèi)容。3.數(shù)據(jù)表的輸出與瀏覽例3.4顯示“student.dbf”表結(jié)構(gòu)。USEstudentLISTSTRUCTURE表記錄的輸出LIST|DISPLAY[FIELDS<字段名列表>][FOR<條件表達式>]表記錄的輸出與瀏覽功能:將當前數(shù)據(jù)表中的記錄輸出到屏幕上。說明:1)LIST默認輸出全部記錄;2)DISPLAY默認輸出當前記錄;3)若使用FIELDS子句,表示輸出指定的字段記錄;4)若使用FOR子句,則輸出滿足給定條件的所有記錄。例如,輸出student表中來自江蘇南京的學生的學號和姓名。表記錄的瀏覽操作方法:--執(zhí)行“顯示”菜單中的“瀏覽”命令;--命令方式:查看全部或指定的記錄。BROWSE[FIELDS<字段名列表>][FOR<條件表達式>]功能:以瀏覽窗口顯示和修改當前打開的數(shù)據(jù)表的記錄。例3.5以瀏覽窗口查看“student.dbf”表中來自北京的學生的學號、姓名以及是否為黨員的信息。USEstudentBROWSEFIELDSstuno,stuname,partyFORbirthplace="北京"表結(jié)構(gòu)的修改利用表設(shè)計器修改表結(jié)構(gòu)打開表設(shè)計器。打開表設(shè)計器有多種方式:--執(zhí)行“顯示”菜單->“表設(shè)計器”命令--命令方式:MODIFYSTRUCTURE4.

數(shù)據(jù)表的修改瀏覽窗口或編輯窗口表記錄的修改--執(zhí)行“顯示”菜單中的“瀏覽”或“編輯”命令--命令方式語句格式:EDIT|CHANGE[FIELDS<字段名列表>][FOR<條件表達式>]功能:打開編輯窗口,以交互方式修改指定的記錄,每個字段占據(jù)一行。例3.6修改學生表student.dbf中“于小蘭”的記錄。USEstudentEDITFORstuname="于小蘭"批量替換修改--執(zhí)行“表”菜單->“替換字段”命令,在“替換字段”對話框中設(shè)置--命令方式語句格式:REPLACE[<范圍>]<字段名1>WITH<表達式1>[,<字段名2>WITH<表達式2>,…][FOR<條件表達式>]功能:對范圍內(nèi)所有滿足條件的記錄。例如,將課程表course.dbf中所有credits(學分)為2的記錄的credits值加1。其命令語句如下:USEstudentREPLACEALLcourse.creditsWITHCourse.credits+1FORCourse.credits=2注意:若省略范圍和條件,則僅對當前記錄進行替換。當向數(shù)據(jù)表中輸入記錄的時候,系統(tǒng)自動為每條記錄指定一個記錄號,記錄號反映其輸入的順序。5.

表記錄指針的定位在訪問數(shù)據(jù)表文件時,系統(tǒng)會提供一個記錄指針,用于指示當前記錄的位置。為了控制記錄指針的移動,每個數(shù)據(jù)表中還設(shè)置了兩個標志:表頭標志和表尾標志。1)RECNO()函數(shù)用來測試記錄指針的位置2)BOF()函數(shù)用來測試記錄指針是否指向表頭3)EOF()函數(shù)用來測試記錄指針是否指向表尾測試函數(shù):在VFP中定位方式有三種:絕對定位、相對定位和條件定位。絕對定位格式:GO<記錄號>|<TOP>|<BOTTOM>功能:將記錄指針移動到指定的記錄上。說明:1)<記錄號>:指定一個物理記錄號。2)TOP:記錄指針指向表頭。指向記錄號為1的記錄或使用索引時指向索引項排在最前面的索引對應的記錄。3)BOTTOM:記錄指針指向表的最后一條記錄。指向記錄號最大的記錄或使用索引時指向索引項排在最后面的索引對應的記錄。例3.7打開student表,將記錄指針移到第一條記錄、最后一條記錄和第二條記錄上,并顯示它們的記錄號。USEstudentGOTOP?RECNO() &&顯示數(shù)據(jù)表的第一條記錄號GOBOTTOM?RECNO() &&顯示數(shù)據(jù)表的最大記錄號GO2?RECNO() &&顯示記錄號為2相對定位格式:SKIP[+/-<記錄數(shù)>][IN<工作區(qū)號>|<別名>]功能:記錄指針從當前位置開始向前或向后移動記錄指針。說明:如果<記錄數(shù)>的值為正數(shù),則記錄指針向表尾移動,若為負數(shù),則向表頭移動。若缺省此項,則記錄指針移到下一條記錄;若缺省IN子句,表示對當前工作區(qū)的數(shù)據(jù)表進行操作。例3.8對student表做記錄指針相對移動操作。USEstudentGOTOPSKIP-1?BOF() GOBOTTOMSKIP?EOF() 條件定位格式:LOCATEFOR<條件表達式>[<范圍>]功能:按照一定的條件在數(shù)據(jù)表的指定范圍內(nèi)查找滿足條件的記錄。說明:1)范圍:ALL、NEXT<記錄數(shù)>、RECORD<記錄號>和REST,默認為ALL。2)條件定位是將記錄指針移到滿足條件的第一條記錄上。若查找滿足條件的其他記錄,使用CONTINUE命令。若找到符合條件的記錄,記錄指針移動到該記錄,否則記錄指針定位到指定范圍的末尾。例3.9查找student表中女學生的記錄。USEstudentLOCATEFORgender="女"?FOUND() ?stuno,stuname,gender CONTINUE?stuno,stuname,gender 格式:INSERT[BEFORE][BLANK]功能:在當前數(shù)據(jù)表的某個記錄之前或之后插入一條記錄。6.

表記錄的追加插入記錄說明:1)BEFORE子句,表示在當前記錄之前插入;否則,在當前記錄之后插入。2)BLANK子句,表示自動插入一條空白記錄;否則,進入編輯窗口輸入記錄內(nèi)容。例如,在學生表的第4條記錄前插入一條空記錄。添加記錄--執(zhí)行“顯示”菜單中的“追加方式”命令--命令方式在數(shù)據(jù)表中直接輸入記錄若省略BLANK子句,則自動打開編輯窗口,輸入一條或多條新記錄。APPEND[BLANK]功能:在當前數(shù)據(jù)表的末尾增加一條空白記錄。例3.10在student表末記錄后增加一條記錄。USEstudentAPPEND--命令方式:APPENDFROM<文件名>[FIELDS<字段名列表>][FOR<條件表達式>][DELIMITED|XLS]功能:將其他表文件、文本文件或EXCEL文件中的數(shù)據(jù)添加到當前數(shù)據(jù)表中。從其他數(shù)據(jù)源獲取記錄數(shù)據(jù)--執(zhí)行“表”菜單中的“追加記錄”,

在“追加來源”對話框中選擇其他數(shù)據(jù)源;說明:1)FIELDS子句指定添加哪些字段數(shù)據(jù);2)DELIMITED或XLS指定數(shù)據(jù)來源是文本文件還是EXCEL文件。1)瀏覽狀態(tài)下,單擊刪除標記,可直接刪除2)執(zhí)行“表”菜單中的“刪除記錄”命令7.

表記錄的刪除與恢復邏輯刪除刪除記錄的有兩種:1)邏輯刪除:對要刪除的記錄加上刪除標記。2)物理刪除:從數(shù)據(jù)表中徹底刪除。3)命令方式:DELETE[范圍][FOR<條件表達式>]功能:給指定范圍內(nèi)滿足條件的記錄添加刪除標記。例如,刪除所有男同學的記錄。注意:若范圍和FOR子句缺省時,僅對當前記錄加上刪除標記。例3.11將student.dbf表中第4條記錄加上刪除標記,并將來自江蘇南京的所有女同學刪除。USEstudentGO4DELETEDELETEALLFORbirthplace="江蘇南京"andgender="女"恢復記錄1)瀏覽狀態(tài)下,單擊刪除標記,可直接恢復2)執(zhí)行“表”菜單中的“恢復記錄”命令3)命令方式:RECALL[范圍][FOR<條件>]功能:恢復指定范圍內(nèi)滿足條件的加刪除標記的記錄。若范圍和FOR子句缺省時,僅恢復當前記錄。例3.12恢復student.dbf中加上刪除標記的記錄。USEstudentGO4RECALLRECALLALLFORbirthplace="江蘇南京"andgender="女"徹底刪除1)界面方式在瀏覽狀態(tài)下執(zhí)行“表”菜單中的“徹底刪除”命令。將數(shù)據(jù)表中所有邏輯刪除的記錄從數(shù)據(jù)表中移去。2)命令方式格式1:PACK功能:清除數(shù)據(jù)表中所有加上刪除標記的記錄。格式2:ZAP功能:物理刪除數(shù)據(jù)表中的所有記錄數(shù)據(jù)。例如,執(zhí)行下列語句:USEstudentGO4DELETEPACKZAP注意:PACK和ZAP命令執(zhí)行的前提是該數(shù)據(jù)表必須在獨占方式下進行。COPYSTRUCTURETO<新表文件名>[FIELDS<字段名列表>]功能:將當前數(shù)據(jù)表結(jié)構(gòu)的部分或全部復制到指定的新表文件中。8.數(shù)據(jù)表的復制和統(tǒng)計數(shù)據(jù)表的復制復制表結(jié)構(gòu)例3.13復制student表結(jié)構(gòu)到新表文件student_1。USEstudentCOPYSTRUCTURETOstudent_1;FIELDSstuno,stuname,genderUsestudent_1LISTSTRUCTURECOPYTO<新表文件名>[FIELDS<字段名列表>][FOR<條件表達式>][范圍]功能:將當前數(shù)據(jù)表的結(jié)構(gòu)和記錄部分或全部復制到指定的新表文件中。例3.14復制student表中來自北京的學生信息到新表文件。USEstudentCOPYTOstudent_2FIELDSstuno,stuname,gender;FORbirthplace="北京"Usestudent_2LIST復制表的記錄COUNTTO<內(nèi)存變量名>[FOR<條件表達式>]功能:統(tǒng)計指定范圍內(nèi)滿足條件的記錄個數(shù),并將統(tǒng)計結(jié)果保存在指定的內(nèi)存變量中。數(shù)據(jù)表的統(tǒng)計表記錄個數(shù)的統(tǒng)計例3.15統(tǒng)計student表中來自北京的學生人數(shù)。USEstudentCOUNTTOnFORbirthplace="北京"?n

若執(zhí)行:countton,則統(tǒng)計結(jié)果是什么?SUM[數(shù)值表達式][范圍][TO<內(nèi)存變量名>][FOR<條件表達式>]功能:對當前數(shù)據(jù)表文件中指定范圍內(nèi)數(shù)值型字段累加求和,并把計算結(jié)果保存在指定的內(nèi)存變量中。數(shù)據(jù)表中數(shù)值型字段求和說明:若缺省[范圍],則默認范圍為ALL;若缺省[數(shù)值表達式],則對數(shù)據(jù)表中所有數(shù)值型字段求和。例3.16統(tǒng)計course表中專業(yè)基礎(chǔ)課的總學分。USEcourseSUMcreditsTOsFORcharacter="專業(yè)基礎(chǔ)課"?s AVERAGE[數(shù)值表達式][范圍][TO<內(nèi)存變量名>][FOR<條件表達式>]功能:對當前數(shù)據(jù)表文件中指定范圍內(nèi)數(shù)值型字段求平均值,并把計算結(jié)果保存在指定的內(nèi)存變量中。數(shù)據(jù)表中數(shù)值型字段求平均值例3.17統(tǒng)計sscore表中課程代號為“1141012”課程的平均成績。USEsscoreAVERAGEgradeTOpFORccode="1141012"?p1.索引的概述3.5數(shù)據(jù)表的索引索引概念索引是使數(shù)據(jù)表中的記錄有序排列的一種技術(shù)。數(shù)據(jù)表中記錄的順序一般由記錄輸入的前后順序決定的,并用記錄號來表示。為了加快記錄的檢索、顯示、查詢以及匯總速度,需要對數(shù)據(jù)表中的記錄順序重新組織。因此,在不改變記錄物理順序的情況下,建立一個索引關(guān)鍵字表達式與記錄號的對應關(guān)系。按照對應關(guān)系實現(xiàn)記錄的排序。按照某個索引關(guān)鍵字進行排序的記錄順序稱為邏輯順序,可以是升序,也可以是降序。每一個索引都包含兩部分:1)索引表達式用來創(chuàng)建索引的依據(jù),可以由數(shù)據(jù)表中的一個字段,也可以由某些字段、變量、函數(shù)等構(gòu)成的一個表達式。2)索引名也稱為索引標識名,命名規(guī)則與變量相同,但不能超過10個字符。單索引文件指一個索引文件中只包含一個索引的索引文件,其擴展名為.idx。索引文件的類型指包含一個或多個索引的索引文件,其擴展名為.cdx。復合索引文件復合索引又分為結(jié)構(gòu)復合索引和非結(jié)構(gòu)復合索引。1)結(jié)構(gòu)復合索引結(jié)構(gòu)復合索引文件只有一個,其文件名與表文件名同名,創(chuàng)建索引時系統(tǒng)自動生成。結(jié)構(gòu)復合索引文件隨表文件的打開而自動打開,在數(shù)據(jù)表中添加、更改或刪除記錄時,可隨數(shù)據(jù)表自動更新。2)非結(jié)構(gòu)復合索引非結(jié)構(gòu)復合索引文件的主文件名與表文件名不同,是由用戶命名,可以有多個。它的打開或關(guān)閉與數(shù)據(jù)表文件不同步,需要專門的命令打開。主索引索引關(guān)鍵字是由一個或幾個字段構(gòu)成的索引表達式,索引表達式的類型決定了不同的索引方式。在VFP中有四種類型的索引:主索引、候選索引、唯一索引和普通索引。不允許索引表達式的值重復出現(xiàn)的索引。一個數(shù)據(jù)表只能有一個主索引。只適應用于數(shù)據(jù)庫表,用于在永久關(guān)系中建立參照完整性。例如,在student表中“stuno”字段可作為主索引關(guān)鍵字。而“gender”、“stuname”等都不可以。索引的類型候選索引也是一種可以用來作主關(guān)鍵字的索引,其內(nèi)容具有唯一性。一個數(shù)據(jù)表可以有多個候選索引。索引表達式的值允許重復,一個數(shù)據(jù)表可以創(chuàng)建多個普通索引。普通索引如student表中的“gender”字段的值允許重復,可以建立普通索引,按性別排序。允許索引表達式的值有重復,但索引文件中重復的值僅保存第一次出現(xiàn)該值的記錄號。唯一索引說明:一個表可以創(chuàng)建多個唯一索引。2.索引的創(chuàng)建表設(shè)計器創(chuàng)建索引例如,在“student”表設(shè)計器上建立三個索引:1)第一個索引是以“stuno”字段建立候選索引,索引為升序;2)第二個索引是以“birthplace”字段建立普通索引,索引為降序;3)第三個索引是以“gender”和“birthdate”兩個字段建立普通索引,索引為升序,即當“gender”字段值相同時,再按“birthdate”字段值排序。設(shè)置索引表達式:gender+DTOC(birthdate,1)命令方式創(chuàng)建索引INDEXON<索引表達式>TAG<索引標識名>[FOR<條件表達式>][ASCENDING|DESCENDING]功能:根據(jù)指定的<索引表達式>為當前打開的數(shù)據(jù)表建立一個索引,索引名用<索引標識名>來表示。對符合條件的記錄建立索引;缺省對所有記錄建立索引升序(缺省)降序例3.18為sscore.dbf表建立兩個普通索引,其中第一個索引是按stuno的升序排序,第二個索引是先按stuno升序排序,stuno相同再按grade升序排序。USEsscoreINDEXONstunoTAGstunoINDEXONstuno+str(grade,4)TAGstu_grade3.索引的使用指定主控索引當一個數(shù)據(jù)表建立了若干個索引后,某個時刻最多只有一個索引在起作用,這個索引被稱為主控索引。設(shè)置主控索引:1)打開數(shù)據(jù)表時,通過ORDER子句指定主控索引。例如,打開sscore.dbf表,同時設(shè)置主控索引:USEsscoreORDERstuno2)直接設(shè)置主控索引SETORDERTO<索引標識名>功能:指定當前數(shù)據(jù)表的主控索引。若缺省<索引標識名>,則取消主控索引。USEstudentSETORDERTOgen_birthLIST若取消student表當前的主控索引,可執(zhí)行下列命令:SETORDERTOLIST注意:取消主控索引后,數(shù)據(jù)表恢復到原來的物理順序。例3.19student.dbf表已建立了多個索引,現(xiàn)指定gen_birth為主控索引,即學生信息按性別升序排序,性別相同再按出生日期升序重排記錄。利用索引查詢定位索引查詢又稱快速查詢,是按照數(shù)據(jù)表記錄的邏輯順序查詢。語法格式:SEEK<表達式>功能:在數(shù)據(jù)表和索引文件打開的情況下,將記錄指針定位到滿足條件的第一個記錄上。說明:SEEK命令可以查找任意類型的數(shù)據(jù),但需要加相應的定界符。如需查找滿足條件的下一條記錄,則需使用SKIP命令。例3.20在student.dbf表中已建立了一個索引名為birth_p,表達式為“birthplace”的索引,現(xiàn)要利用索引快速查找“江蘇南京”的學生記錄。USEstudentSETORDERTObirth_pSEEK"江蘇南京"DISPLAY若查詢下一個江蘇南京的學生,則執(zhí)行下列語句:SKIPDISPLAY1.數(shù)據(jù)庫表3.6數(shù)據(jù)庫表的操作當一個數(shù)據(jù)表屬于某個數(shù)據(jù)庫,則該表為數(shù)據(jù)庫表。建立數(shù)據(jù)庫表1)執(zhí)行“數(shù)據(jù)庫”菜單中的“新建表”命令;2)在數(shù)據(jù)庫設(shè)計器的快捷菜單中的“新建表”命令;3)在項目管理器的“數(shù)據(jù)”選項卡中選擇“數(shù)據(jù)庫”下的“表”,然后單擊項目右側(cè)“新建”按鈕。操作方法:例如,建立數(shù)據(jù)庫表student。數(shù)據(jù)庫表具有字段屬性和表屬性。表屬性包括長表名、記錄級規(guī)則、信息、表注釋以及觸發(fā)器等。字段屬性包括字段的格式、輸入掩碼、默認值、標題、注釋、字段規(guī)則、信息以及默認的控件類等。字段的顯示屬性包括顯示格式、輸入掩碼和標題。字段的顯示格式顯示格式用來控制字段在瀏覽窗口、表單或者報表中顯示時的樣式以及大小寫。輸入掩碼用于控制向字段輸入數(shù)據(jù)的格式。標題用來增強字段的可讀性,用于在瀏覽窗口中顯示列標題,沒有標題則顯示字段名。例如,student表中stuno字段,可用“學號”標題。有效性規(guī)則是一個與字段或記錄相關(guān)的表達式,通過對用戶的值加以限制,提供數(shù)據(jù)有效性檢查。有效性規(guī)則有兩種:1)字段有效性規(guī)則:是對某一個字段的約束,檢查單個字段中輸入的數(shù)據(jù)是否有效。2)記錄有效性規(guī)則:對一個記錄的約束,當插入或修改記錄時被激活,檢查輸入數(shù)據(jù)的正確性。字段有效性包括“規(guī)則”、“信息”和“默認值”的設(shè)置。①“規(guī)則”文本框:對該字段輸入數(shù)據(jù)的有效性進行檢查的規(guī)則。例:設(shè)student表中的gender(性別)字段的規(guī)則:gender="男"ORgender="女"規(guī)則表示:性別字段輸入的值為字符型數(shù)據(jù),而且僅輸入“男”或者“女”。說明:規(guī)則是設(shè)置一個條件,即規(guī)則欄輸入一個邏輯表達式。②“信息”文本框:設(shè)置該字段輸入數(shù)據(jù)出錯時將顯示的提示錯誤信息。例如,設(shè)置gender(性別)字段的出錯信息為:"性別只能是男或女"③“默認值”文本框:設(shè)置該字段的默認值,即向數(shù)據(jù)表中添加新記錄時,為字段生成的初始值。例如,設(shè)置gender(性別)字段的默認值為:"女"。注意:默認值欄的數(shù)據(jù)類型應與該字段類型一致。注意:信息欄輸入的是一個字符串。記錄有效性指對記錄中各個字段進行某種運算的結(jié)果進行檢查,判斷其是否在合理的范圍內(nèi)。包括“規(guī)則”、“信息”。①“規(guī)則”文本框:設(shè)置數(shù)據(jù)記錄的有效條件。例:設(shè)teacher表中的記錄規(guī)則:

YEAR(workdate)-YEAR(birthdate)>=18規(guī)則表示:參加工作必須滿18歲。②“信息”文本框:設(shè)置輸入錯誤時的提示信息。觸發(fā)器是一個對數(shù)據(jù)庫表進行插入、刪除和更新時而引發(fā)的檢驗規(guī)則。該規(guī)則可以是邏輯表達式,也可以是用戶自定義函數(shù)。①“插入觸發(fā)器”:用于指定記錄的插入規(guī)則。每當用戶向數(shù)據(jù)表中插入或者追加新記錄時,就會觸發(fā)此規(guī)則并進行校驗。②“更新觸發(fā)器”:用于指定記錄的修改規(guī)則。當用戶修改數(shù)據(jù)表中的記錄時,將觸發(fā)此規(guī)則并進行校驗。觸發(fā)器有以下三種:③“刪除觸發(fā)器”:用于指定記錄的刪除規(guī)則。當用戶刪除數(shù)據(jù)表中的記錄時,將觸發(fā)此規(guī)則并進行校驗。例如,設(shè)置title表的三個觸發(fā)器分別為:.F.,并驗證是否可以進行相應的操作。說明:三個規(guī)則中當表達式或函數(shù)的值為.F.,表示不允許對數(shù)據(jù)庫表進行相應的操作。注意:字段有效性規(guī)則和記錄有效性規(guī)則的作用是限制非法數(shù)據(jù)的輸入,而觸發(fā)器是控制對已存在的記錄所做的非法操作。2.數(shù)據(jù)庫表與自由表的轉(zhuǎn)換如果將一個自由表添加到某個數(shù)據(jù)庫中就成為一個數(shù)據(jù)庫表;反之,如果將數(shù)據(jù)庫表從數(shù)據(jù)庫中移出,該數(shù)據(jù)庫表就成為了自由表。數(shù)據(jù)庫表和自由表可以相互轉(zhuǎn)換。向數(shù)據(jù)庫中添加表打開數(shù)據(jù)庫,執(zhí)行快捷菜單中的“添加表”命令。界面方式語法:ADDTABLE<表名>命令方式功能:向當前的數(shù)據(jù)庫中添加自由表。例3.22執(zhí)行命令向當前數(shù)據(jù)庫添加sclass表。

溫馨提示

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

評論

0/150

提交評論