




版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進(jìn)行舉報或認(rèn)領(lǐng)
文檔簡介
第一章數(shù)據(jù)庫技術(shù)基礎(chǔ)信息時代的核心是信息,因此,現(xiàn)代計算機(jī)技術(shù)基本上是以數(shù)據(jù)處理和信息管理為中心,它是計算機(jī)應(yīng)用的一個主要領(lǐng)域。L計算機(jī)技術(shù):信息的處理和存儲。2.網(wǎng)絡(luò)技術(shù):信息的傳輸與共享。3.數(shù)據(jù)庫技術(shù):信息的管理。1.1數(shù)據(jù)管理技術(shù)的發(fā)展數(shù)據(jù):計算機(jī)可以接受并能處理的符號序列。如:數(shù)字、文字、圖像、聲音數(shù)據(jù)處理:對各種形式的數(shù)據(jù)進(jìn)行收集、儲存、加工和傳播。其目的是從大量、原始的數(shù)據(jù)中抽取、推導(dǎo)出對人們有價值的信息。數(shù)據(jù)管理:對數(shù)據(jù)進(jìn)行分類、組織、編碼、存儲、檢索和維護(hù),是數(shù)據(jù)處理的核心問題。隨著計算機(jī)硬件和軟件的發(fā)展,計算機(jī)應(yīng)用于數(shù)據(jù)管理工作經(jīng)歷了自由管理、文件系統(tǒng)管理和數(shù)據(jù)庫系統(tǒng)管理三個階段。1.1人工管理階段20世紀(jì)50年代中期以前,計算機(jī)主要用于科學(xué)計算,無專門軟件來管理數(shù)據(jù)。數(shù)據(jù)是面向應(yīng)用的,一組數(shù)據(jù)對應(yīng)一個應(yīng)用程序,數(shù)據(jù)之間無法相互利用。特點:數(shù)據(jù)不保存、.數(shù)據(jù)與程序無獨立性、數(shù)據(jù)冗余大。2文件系統(tǒng)階段.20世紀(jì)50年代后期到60年代中期,計算機(jī)開始大量用于非數(shù)值計算領(lǐng)域,操作系統(tǒng)的出現(xiàn),有了專門管理數(shù)據(jù)的文件系統(tǒng)。特點:數(shù)據(jù)以文件形式保存、…使用文件名訪問數(shù)據(jù)“文件組織多樣化.在文件系統(tǒng)階段,數(shù)據(jù)庫基本上還是面向應(yīng)用的,應(yīng)用程序各自獨立地建立與維護(hù)自己的文件,數(shù)據(jù)與程序之間仍互相依賴,缺乏獨立性,文件之間彼此孤立,不能反映相互聯(lián)系。1.1.3數(shù)據(jù)庫系統(tǒng)階段20世紀(jì)60年代后期開始,計算機(jī)廣泛用于管理,對數(shù)據(jù)的共享性要求越來越高。于是,出現(xiàn)了數(shù)據(jù)庫技術(shù),以及相應(yīng)的軟件系統(tǒng):數(shù)據(jù)庫管理系統(tǒng)DBMS(DataBaseManagementSystem)特點:數(shù)據(jù)結(jié)構(gòu)化好,數(shù)據(jù)獨立性高,數(shù)據(jù)冗余度小,數(shù)據(jù)共享程度高,有統(tǒng)一的數(shù)據(jù)管理和控制功能。數(shù)據(jù)庫是相關(guān)數(shù)據(jù)的集合。數(shù)據(jù)結(jié)構(gòu)由數(shù)據(jù)模型表示出數(shù)據(jù)之間所存在的有機(jī)關(guān)聯(lián),以反映現(xiàn)實世界事物之間的聯(lián)系。12數(shù)據(jù)模型數(shù)據(jù)模型就是現(xiàn)實世界的模擬,是對客觀事物及其聯(lián)系的抽象描述。在數(shù)據(jù)庫系統(tǒng)中針對不同的使用對象和不同的應(yīng)用目的,可采用不同層次的數(shù)據(jù)模型。數(shù)據(jù)從現(xiàn)實世界到計算機(jī)里的具體表示一般要經(jīng)歷現(xiàn)實世界、信息世界和機(jī)器世界三個階段。1.2.1由現(xiàn)實世界到數(shù)據(jù)世界.現(xiàn)實世界個體(對象):實際存在且可以識別的事物。如:一個人、一臺計算機(jī)、某人的愛好與性格。全體:相同特征個體的集合。.信息世界實體:客觀存在且可以相互區(qū)別的事物。屬性:用于描述實體的某些特征。如:“學(xué)生”實體可用學(xué)號、姓名、性別、年齡等屬性描述。屬性值的集合表示一個實體,屬性的集合表示一個實體類型(實體型),同類型實體的集合稱為實體集。(VisualFoxpro用“表”來存放實體集)兩個不同實體集之間的聯(lián)系有三種類型:一對一聯(lián)系(1:D:如果對于實體集A中的每個實體,實體集B中至多有一個實體(也可以沒有)與之聯(lián)系,反之亦然,則稱實體集A與實體集B具有一對一的聯(lián)系,記為1:1。一對多聯(lián)系(1:n):如果對于實體集A中的每個實體,實體集B中有多個實體與之聯(lián)系,反之,對于實體集B中的每個實體,實體集A中至多有一個實體與之聯(lián)系,則稱實體集A與實體集B具有一對多的聯(lián)系,記為1:n。(3)多對多聯(lián)系(m:n):如果對于實體集A中的每個實體,實體集B中有多個實體與之聯(lián)系,反之,對于實體集B中的每個實體,實體集A中也有多個實體與之聯(lián)系,則稱實體集A與實體集B具有多對多的聯(lián)系,記為m:n。3.數(shù)據(jù)世界 三個不同世界術(shù)語對照表現(xiàn)實世界信息世界數(shù)據(jù)世界組織(事物及其聯(lián)系)實體及其聯(lián)系數(shù)據(jù)庫事物類(總體)實體集文件事物(對象、個體)實體記錄特征屬性數(shù)據(jù)項(字段)1.2.2數(shù)據(jù)庫數(shù)據(jù)模型描述數(shù)據(jù)在數(shù)據(jù)庫中用數(shù)據(jù)模型這個工具來抽象、表示和處理現(xiàn)實世界中數(shù)據(jù)、信息及其聯(lián)系的方法。通俗地講數(shù)據(jù)模型就是現(xiàn)實世界的模擬。目前最常用的是下列三種:按圖論理論建立的層次模型(HierarchicalModel):網(wǎng)絡(luò)模型(NetworkModel);按關(guān)系理論建立.的關(guān)系模型(RelationalModel)。.層次數(shù)據(jù)模型:用樹形結(jié)構(gòu)表示實體之間聯(lián)系的模型。層次模型必須滿足下面兩個條件:(1)有且只有一個結(jié)點沒有雙親結(jié)點,該結(jié)點為根結(jié)點。(2)根以外的其它結(jié)點有且只有一個雙親結(jié)點。.網(wǎng)狀數(shù)據(jù)模型:用網(wǎng)絡(luò)結(jié)構(gòu)表示數(shù)據(jù)及其聯(lián)系.滿足下面兩個條件的基本層次聯(lián)系的集合為網(wǎng)狀模型。(1)允許一個以上的結(jié)點無雙親;(2)一個結(jié)點可以有多于一個的雙親。.關(guān)系數(shù)據(jù)模型:70年產(chǎn)生于IBM公司E.F.Codd提出的關(guān)系理論.其基本思想是用二維表格來數(shù)據(jù)之間的聯(lián)系.即每個二維表格稱為一個關(guān)系。關(guān)系模型中的常用術(shù)語關(guān)系(Relation):即通常所說的表,由行和列組成關(guān)系模式。一般表示為關(guān)系名一(屬性名1,屬性名2,……,屬性名n)例如:學(xué)生關(guān)系模式可描述為:學(xué)生(學(xué)號,姓名,性別,出生日期,專業(yè))。元組(Tuple):表中的每一行,對應(yīng)一個實體。屬性(Attribute):表中的每一列,對應(yīng)實體的一個屬性。列名稱為屬性名,列值稱為屬性值。值域:屬性的取值范圍。(也稱域(Domain))主碼(關(guān)鍵字)(Key):一個或幾個屬性的組合,能夠唯一確定一個元組的屬性集合稱為關(guān)鍵字。外碼:與其它表起聯(lián)系作用的屬性。主鍵:表中可能有多個關(guān)鍵字,在應(yīng)用中被選用的關(guān)鍵字稱為主鍵。外部關(guān)鍵字(ForeignKey):與其它表起聯(lián)系作用的屬性。若屬性集合S存在于關(guān)系R1中,但不是關(guān)系R1的主鍵;它同時也存在于關(guān)系R2中,而且是關(guān)系R2的主鍵,則S是關(guān)系R1相對于R2的外鍵。關(guān)系的描述:關(guān)系名(屬性1,屬性2,…,屬性n)二維表與關(guān)系數(shù)據(jù)庫二維表人事檔案一職工名冊表名:職工名冊(數(shù)據(jù)庫文件名file)結(jié)構(gòu):檔案管理的項目struture(數(shù)據(jù)庫文件的結(jié)構(gòu)每一項目名叫字段名)行(元組):管理的對象record(數(shù)據(jù)庫文件的記錄)列(屬性):管理對象的屬性field,即對應(yīng)于字段名的值(通常稱為數(shù)據(jù)項或字段值)一個關(guān)系模型的二維表須滿足以下條件(性質(zhì))①表中每一列對應(yīng)于一個唯一的字段名,即不能有重名的屬性.②表中每一列必須是基本數(shù)據(jù)項,不可再分解,即具有不可再分的原子屬性.③表中各列的數(shù)據(jù),具有各自相同性質(zhì)的數(shù)據(jù),即取值范圍相同.④表中任意兩行的內(nèi)容不能完全相同即沒有冗余的元組⑤表中的行的順序和列的順序,可以分別任意調(diào)換,即行列次序無關(guān).關(guān)系模型的基本運算.選擇(Selection):根據(jù)給定條件,從一個關(guān)系中選出若干個元組組成一個新的關(guān)系。是原關(guān)系的子集。.投影(Projection):從一個關(guān)系中選擇某些特定的屬性組成一個新的關(guān)系。重復(fù)的元組將被刪除。.連接(Join):從兩個或多個關(guān)系中選取屬性滿足一定條件的元組,組成一個新的關(guān)系。(YFE—沒有直接提供傳統(tǒng)的集合運算…(并."一差、…交),.一可以通過其它操作或編導(dǎo)程序來實現(xiàn))L3數(shù)據(jù)庫系統(tǒng)的組成與模式結(jié)構(gòu)3.1數(shù)據(jù)庫系統(tǒng)的組成數(shù)據(jù)庫(DB):以一定結(jié)構(gòu)存儲且相互關(guān)聯(lián)的、結(jié)構(gòu)化數(shù)據(jù)集合。一個數(shù)據(jù)庫由若干表及其聯(lián)系組成。數(shù)據(jù)庫管理系統(tǒng)(DBMS):用于描述、維護(hù)、管理數(shù)據(jù)庫的軟件系統(tǒng)。是數(shù)據(jù)庫系統(tǒng)的核心組成部分。數(shù)據(jù)庫應(yīng)用系統(tǒng):根據(jù)需要在DBMS支持下運行的計算機(jī)應(yīng)用系統(tǒng)。1.3.2數(shù)據(jù)庫系統(tǒng)三級模式結(jié)構(gòu)L外模式 2.概念模式 3.內(nèi)模式3.3數(shù)據(jù)庫系統(tǒng)研究范圍L數(shù)據(jù)庫管理系統(tǒng)軟件的研制 2.數(shù)據(jù)庫設(shè)計 3.數(shù)據(jù)庫理論L4新一代數(shù)據(jù)庫技術(shù)發(fā)展1、分布式數(shù)據(jù)庫2、面向?qū)ο髷?shù)據(jù)庫3,多媒體數(shù)據(jù)庫4、模糊數(shù)據(jù)庫新的數(shù)據(jù)庫技術(shù):如Web數(shù)據(jù)庫技術(shù)、并行數(shù)據(jù)庫技術(shù)、數(shù)據(jù)倉庫(DataWarehouse,DW)與聯(lián)機(jī)分析處理(LineAnalyticalProcessing,OLAP)技術(shù)、數(shù)據(jù)挖掘(DataMining,DM)與商務(wù)智能技術(shù)、內(nèi)容管理技術(shù)、海量數(shù)據(jù)管理技術(shù)等。(2)這些數(shù)據(jù)庫技術(shù)將促使數(shù)據(jù)庫向智能化集成化方向發(fā)展。數(shù)據(jù)庫設(shè)計基礎(chǔ)數(shù)據(jù)庫設(shè)計原則L應(yīng)遵從概念單一化的原則:一個表描述一個實體或?qū)嶓w間的一種聯(lián)系,如學(xué)生信息放在學(xué)生表,課程信息放在課程表。2.盡量避免表之間出現(xiàn)重復(fù)字段:減少數(shù)據(jù)冗余。3.表中的字段必須是原始數(shù)據(jù)和基本數(shù)據(jù)元素。4.用外部關(guān)鍵字保持相關(guān)表之間的聯(lián)系。數(shù)據(jù)庫設(shè)計步驟需求分析:信息需求、處理需求、安全性和完整性。確定需要的表:遵從概念單一化的原則,一個表描述一個實體或?qū)嶓w間的一種聯(lián)系。確定所需字段:①每個字段直接和表的實體相關(guān)②以最小的邏輯單位存儲信息③表中的字段必須是原始數(shù)據(jù)④確定主關(guān)鍵字字段。確定聯(lián)系:需要分析各個表所代表的實體之間存在的聯(lián)系,可以把一個表的主關(guān)鍵字添加到另一個表中,使兩個表都有該字段。建立方法:一對多聯(lián)系、多對多聯(lián)系(盡可能分解為一對多)、一對一聯(lián)系。設(shè)計求精:對上述過程不斷檢查、修改、調(diào)整,直至滿足用戶要求。第二章VisualFoxPro概述1Xbase系列數(shù)據(jù)庫的發(fā)展Ashton-Tate公司:Xbase系列dBASE、dBASEH、dBASEHI、dBASEIIIplus,dBASEIV(1984DbaseIII)Fox公句:FoxBASE系列FoxBASE、FoxBASE+、FoxBASE+2.0、FoxBASE+2.10、FoxPro1986FoxSoftware公司FoxbasePLUS(+) 1988.7FoxbaseV2.11992FoxSoftware公司并入MicrosoftMicrosoft公司:92年收購Fox公司,推出FoxPro2.5、FoxPro2.6;96年推出VisualFoxPro5.0/6.0forwin;04年12月VisualFoxPro9.0目前常用的產(chǎn)品有:Sybase、Oracle,Informix,SQL、FoxPro等關(guān)系數(shù)據(jù)庫管理系統(tǒng)。常用數(shù)據(jù)庫開發(fā)平臺數(shù)據(jù)庫開發(fā)平臺:(1)數(shù)據(jù)庫服務(wù)器常用的有SQLServer、Oracle、Sybase、DB2、MySQL等.它們都是大型的數(shù)據(jù)庫開發(fā)平臺,重點在于后端數(shù)據(jù)庫的管理,它們的數(shù)據(jù)庫都是隱身于后的“服務(wù)器其主要功能有:強(qiáng)大的數(shù)據(jù)庫引擎、高度的數(shù)據(jù)安全、備份及還原、不同數(shù)據(jù)庫之間的數(shù)據(jù)轉(zhuǎn)換等。(2)桌面型數(shù)據(jù)庫軟件常用的有挺照和駟L典亟9等,它們都是小型的數(shù)據(jù)庫開發(fā)平臺,其特點是易學(xué)易用,適合建立小型數(shù)據(jù)庫。其主要特色有:強(qiáng)大的窗體及報表制作能力、強(qiáng)化數(shù)據(jù)庫的工具和易學(xué)易用的操作界面等。2VFP功能與特點.可視化開發(fā)工具:將界面元素與相應(yīng)的行為、動作結(jié)合、簡化編程。.增強(qiáng)項目管理:使用明目管理器創(chuàng)建、集中管理開發(fā)項目中的數(shù)據(jù)、文檔、源代碼、類庫等資源,使開發(fā)與維護(hù)更方便。.豐富開發(fā)工具:提供更多好的生成器、工具欄、設(shè)計器,可快速開發(fā)應(yīng)用程序。.面向?qū)ο蟪绦蛟O(shè)計:即結(jié)構(gòu)化程序設(shè)計(如:窗體、工具欄等)。.兼容性:可兼容Xbase、FoxBASE等…..多用戶共享數(shù)據(jù)。.比較完善的數(shù)據(jù)字典:可對數(shù)據(jù)庫中的每個表定義規(guī)則、永久關(guān)系等。.支持網(wǎng)絡(luò)應(yīng)用(C/S模式):支持客戶/服務(wù)器工作模式。3VFP的應(yīng)用開發(fā)環(huán)境VisualFoxpro的安裝與啟動安裝:運行安裝程序Setup.exe卸載:控制面板->添加/刪除程序->選擇啟動:與Windows其他應(yīng)用程序相同(選擇VFP快捷命令啟動Visualfoxpr。;“開始”->“程序”->“MicrosoftVisualFoxpro6.0";在桌面上雙擊VFP快捷方式圖標(biāo);運行“VFP6.EXE”文件啟動Visualfoxpro;雙擊打開VFP的文件)Visualfoxpro主窗口簡介L主窗口包括:標(biāo)題欄、控制菜單按鈕、最小化/最大化或還原/關(guān)閉按鈕、菜單欄、工具欄、主窗口顯示區(qū)、命令窗口、狀態(tài)行等。.狀態(tài)行:用于顯示系統(tǒng)的當(dāng)前狀態(tài)信息,包括正在使用的表名及其存放的文件夾、當(dāng)前表的記錄數(shù)、以獨占或共享方式打開表、插入或改寫狀態(tài)、數(shù)字鎖定或非鎖定狀態(tài)、字母大寫或小寫狀態(tài)。.VFP主菜單(1)菜單:由一系列菜單命令組成,有系統(tǒng)菜單、快捷菜單、子菜單和用戶菜單等。(2)菜單命令:一個命令名或過程名,每一個命令都是一個VFP命令的快捷方式,單擊它即執(zhí)行相應(yīng)的命令。(3)訪問鍵:鍵盤上的字符,這些字符一般標(biāo)示在菜單命令右側(cè)括號內(nèi),并加有下劃線。鍵入Alt+字符激活°(4)動態(tài)菜單:是指在運行某一命令時才會被激活的菜單。.VFP工具欄有十幾種工具,"常用'’工具欄是VFP默認(rèn)顯示的工具欄,VFP允許同時打開多個工具欄。(選擇“顯示”二〉“工具欄”->選定需要的工具欄。最后“確定”)整個界面需要了解的內(nèi)容L菜單.工具欄:定制工具欄,常用工具欄,設(shè)計器工具欄(如表單控件工具欄).命令窗口.VFP的環(huán)境設(shè)置(工具/選項).VFP文件類型擴(kuò)展名文件類型擴(kuò)展名文件類型,act向?qū)Р僮鲌D文檔.Ibx標(biāo)簽?app生成的應(yīng)用程序.1st向?qū)Я斜淼奈臋n.cdx復(fù)合索引.mem內(nèi)存變量保存,dbc數(shù)據(jù)庫?mnx菜單.dbf表?mpr生成的菜單程序.det數(shù)據(jù)庫備注?mpx編譯后的菜單程序.dex數(shù)據(jù)庫索引,OCXOLE控制.dll動態(tài)鏈接庫.pjt項目備注.exe可執(zhí)行程序.pjx明目.fmt格式文件?prg程序.frx報表?qpr生成的查詢程序,fxp編譯后的程序,sex表單.idx索引,win窗口文件Visualfoxpro的工作方式:主要有交互式方式和可視化操作,包括選擇命令的快捷方式、鍵入命令方式和命令文件方式。(1)命令的快捷方式:主要設(shè)置在菜單系統(tǒng)、工具欄和快捷菜單上,快捷菜單上還有訪問鍵和快捷按鈕。快捷菜單:當(dāng)用戶在選定的內(nèi)容上單擊鼠標(biāo)右鍵時出現(xiàn)的菜單,它與選定內(nèi)容相關(guān)??旖萱I:用于執(zhí)行某項任務(wù)的一個按鍵或組合鍵,一般在菜單助的右端提示。(2)命令方式:直接在命令窗口中輸入命令,并按回車。如果輸入的命令符合VFP的語法要求,則命令關(guān)鍵字用藍(lán)色字體顯示,否則,用黑色字體顯示。(3)命令程序方式:是指將VFP的一系列命令按照一定的順序組織成一個文件,通過調(diào)用這個文件依次執(zhí)行預(yù)定的命令,實現(xiàn)自動操作功能。有些命令只能用命令方式執(zhí)行?!懊畲翱凇笨梢噪[藏或顯示,隱藏轉(zhuǎn)換顯示可按<ctrl>+<F2><ctrl>+<F4>退出Visualfoxpro在關(guān)閉VFP之前,最好先關(guān)閉所有的數(shù)據(jù)庫和表等操作對象,避免數(shù)據(jù)丟失。常用方法:單擊VFP主窗口右上角的“關(guān)閉按鈕。其它方法:①選擇“文件”菜單->選擇“退出”②在VFP主窗口下,按<ALT>+<F4>③在命令窗口中執(zhí)行RUIT”命令④雙擊VFP主窗口左上角的“控制菜單按鈕”⑤右鍵單擊任務(wù)欄上的VFP圖標(biāo)->選擇“關(guān)閉”項目管理器1項目管理器的作用(1)采用目錄樹結(jié)構(gòu),可以集中統(tǒng)一分類管理系統(tǒng)所必需的各個文件(2)具有創(chuàng)建、修改、刪除及編譯應(yīng)用系統(tǒng)中各文件的功能2創(chuàng)建助目文件(1)命令方式:modifyproject〈項目名〉modifyproject[?](2)菜單按鈕方式:新建 (3)項目文件擴(kuò)展名為:.PJX3項目文件的打開4項目文件的使用(1)選項卡(6種:全部、數(shù)據(jù)、文檔、類、代碼、其他)(2)折疊按鍵(3)命令按鈕(新建、添加、修改、運行、移去、連編等)VFP的設(shè)計器、生成器與向?qū)Чぞ遃FP的設(shè)計器、生成器與向?qū)Чぞ呤怯脕碜詣由蓱?yīng)用程序部件的有效工具。設(shè)計器VFP提供多種設(shè)計器,可以快速建立表、表單、數(shù)據(jù)庫、查詢、報表等。設(shè)計器名稱功能表設(shè)計器創(chuàng)建表和設(shè)置表中的索引查詢設(shè)計器在本地表上創(chuàng)建查詢視圖設(shè)計器在本地表或遠(yuǎn)程數(shù)據(jù)源上創(chuàng)建查詢表單設(shè)計器創(chuàng)建表單以便在表中查看的編輯數(shù)據(jù)報表設(shè)計器建立用于顯示和打印數(shù)據(jù)的報表數(shù)據(jù)庫設(shè)計器建立數(shù)據(jù)庫,在不同的表之間查看并創(chuàng)建關(guān)系菜單設(shè)計器創(chuàng)建菜單視圖或快捷菜單連接設(shè)計器為遠(yuǎn)程視圖創(chuàng)建連接2.5.2向?qū)驅(qū)且环N交互的程序,能幫助用戶快速地完成創(chuàng)建表單、設(shè)置報表格式、建立查詢等。
向\J名稱用途表向?qū)?chuàng)建一個表查詢向?qū)?chuàng)建查詢本地視圖向?qū)?chuàng)建本地視圖遠(yuǎn)程視圖向?qū)?chuàng)建遠(yuǎn)程視圖圖表向?qū)?chuàng)建一個圖表表單向?qū)?chuàng)建表單一對多表單向?qū)?chuàng)建一對多表單有幾種方法可以啟動向?qū)В?.項目管理器/新建2.菜單中:文件/新建3.工具欄中:新建 4.菜單中:工具/向?qū)?.5.3生成器生成器是在VFP應(yīng)用程序中生成并加入某類控件生成器功能組合框生成器生成組合框命令組生成器生成命令組編輯框生成器生成編輯框表單生成器生成表單表格生成器生成表格列表框生成器生成列表框文本生成器生成文本框自動格式生成器生成格式化控制組第三章 數(shù)據(jù)類型、國數(shù)與表達(dá)式31數(shù)據(jù)類型VFP提供11種的數(shù)據(jù)類型數(shù)據(jù)類型代碼特性占用字節(jié)數(shù)字符型C存放字符1-254數(shù)值型N可存放0-9、+、-、小數(shù)點1-20整形N存放整數(shù)4浮點型N與數(shù)值型同(與其它版本兼容)4雙精度型N與數(shù)值型同,提供更高精度8貨幣型Y存放貨幣值,小數(shù)保留4位8日期型D存放日期8時間型T存放時間8邏輯型L存放.匚、.F.1通用型G存放OLE對象(多媒體對象、表格等)4備注型M備注的內(nèi)容41.字符型(CharacterC):由任意字符(字母、漢字、數(shù)字、空格、符號等)組成,每個字符占一個字節(jié),長度為0-254,最多可有254個。字符型的常量要用英文的單引號、雙引號或方括號括起來(不可用中文標(biāo)點)如:’A0001'、’數(shù)學(xué)系.數(shù)值型(NumericN):表示數(shù)量,由數(shù)字0一9、一個正負(fù)符號(+或-)和小數(shù)點(.)組成。(數(shù)值型數(shù)據(jù)取值的范圍是:-0.9999999999E+19—0.9999999999E+20)內(nèi)存變量廣8字節(jié),字段變量廣20字節(jié)。小數(shù)點和小數(shù)位數(shù)是字段總長度的一部分。.整型(IntegerN):用于存儲無小數(shù)部分的數(shù)值,只能用于數(shù)據(jù)表中字段的定義。在數(shù)據(jù)表中,整型字段占用4個字節(jié),(取值范圍是:-2147483647—2147483647)整型以二進(jìn)制形式存儲,不像數(shù)值型那樣需要轉(zhuǎn)換成ASCH字符存儲。.浮點型(FloatN):只能用于數(shù)據(jù)表中字段的定義,包含此類型是為了提供兼容性,浮點型在功能上與數(shù)值型等價。.雙精度型(DoubleN):用于取代數(shù)值型,以便能提供更高的數(shù)值精度。雙精度型只能用于數(shù)據(jù)表中字段的定義,它采用固定存儲長度的浮點數(shù)形式。與數(shù)值型不同,雙精度型數(shù)據(jù)的小數(shù)點的位置是由輸入的數(shù)據(jù)值來決定的。每個雙精度型數(shù)據(jù)占8個字節(jié)。.貨幣型(CurrencyY):在使用貨幣值時,可以使用貨幣型來代替數(shù)值型。(貨幣型數(shù)據(jù)取值的范圍是:-922337203685477.5807-922337203685477.5807)小數(shù)位數(shù)超過4位時,系統(tǒng)將進(jìn)行四舍五入的處理。每個貨幣型數(shù)據(jù)占8個字節(jié)。當(dāng)涉及貨幣時使用,使用貨幣型數(shù)據(jù)要在前面加上符號如:$100.日期型(DateD):用于存儲不帶時間的日期值,寬度為8字節(jié)。日期型數(shù)據(jù)的存儲格式為'yyyymmdd'其中yyyy為年,占4位,mm為月,占2位,dd為日,占2位。(日期型數(shù)據(jù)取值的范圍是:公元0001年1月1日?公元9999年12月31日)日期型數(shù)據(jù)的表示有多種格式,最常用的格式為:mm/dd/yyyyo系統(tǒng)默認(rèn)格式為{nun/dd/yy),可通過SETDATE、SETMARK、SETCENTURY命令設(shè)置日期格式,或通過系統(tǒng)的‘選助'對話框中的‘區(qū)域'卡中設(shè)置。日期型常量要放在花括號中,如:dDate={09/10/2001} dBlank={}:空日期日期常用格式:(D標(biāo)準(zhǔn)ANSI:yy.mm.dd(2)*美國式AMERICAN:mm/dd/yy(3)歐州式BRITISH:dd/mm/yy輸入日期時,其日期輸入格式由STRICTDATE設(shè)置決定。設(shè)置SETSTRICTDATETO1須按嚴(yán)格的日期輸入方式:?{A1999/11/12)年月日時分秒:{A1999/11/124:2:5)設(shè)置SETSTRICTDATETO0則可用通常的日期輸入方式。.日期時間型(DateTimeT):用以保存日期和時間值。日期時間型數(shù)據(jù)的存儲格式為'yyyymmddhhmmss'其中yyyy為年,占4位,mm為月,占2位,dd為日,占2位,hh為時間中的小時,占2位,mm為時間中的分鐘,占2位,ss為時間中的秒,占2位。與日期型一樣,要用‘?!瘜?shù)據(jù)括起來,若要指定空日期時間值,要在花括號中加一個空格和冒號,如:{:}.邏輯型(LogicalL):用于存儲只有兩個值的數(shù)據(jù)。存入的值只有真CT.)和假(.F.)兩種狀態(tài),寬度固定,占1個字節(jié)。.通用型(General。:用于存儲OLE(對象鏈接和嵌入)對象,只能用于數(shù)據(jù)表中字段的定義。該字段包含了對OLE對象的引用,而OLE對象的具體內(nèi)容可以是一個電子表格、一個字處理器的文本、圖片等,是由其他應(yīng)用軟件建立的。寬度為4字節(jié)。表中存儲的是指向OLE對象的引用。.備注型(Memo):備注型用于字符型數(shù)據(jù)塊的存儲,只能用于數(shù)據(jù)表中字段的定義。在數(shù)據(jù)表中,備注型字段占用10個字節(jié),并用這10個字節(jié)來引用備注的實際內(nèi)容。實際備注內(nèi)容的多少只受內(nèi)存可用空間的限制。備注型字段的實際內(nèi)容變化很大,不能直接將備注內(nèi)容存在數(shù)據(jù)表(.DBF)文件中。系統(tǒng)將備注內(nèi)容存放在一個相對獨立的文件中,該文件的擴(kuò)展名為.FPT。由于沒有備注型的變量,所以對備注型字段的處理,需轉(zhuǎn)換成字符型變量,然后使用字符型函數(shù)進(jìn)行處理。32數(shù)據(jù)存儲類型3.2.1常量常量:在運算過程中值不變的量(即不變的量).包括字符型常量、數(shù)值型常量、邏輯型常量、日期型常量和貨幣型常量五種。(五種常量:c、N,D(T)、L、Y)1.字符型常量是用定界符標(biāo)識的字符串。所以也叫字符串常量。定界符必須是ASCII碼的單引號'‘、雙引號''和方括號口。如果一種定界符已做為字符型常量的組成部分,則應(yīng)選擇另一種定界符來標(biāo)識字符串。其書寫方法如:‘男'、'工程師'、[財金系"金融專業(yè).數(shù)值型、浮點型常量可以是實數(shù)或整數(shù),通常也叫做常數(shù),可以用定點式表示,也可以用科學(xué)計數(shù)法表示。.邏輯型常量規(guī)定用.Y.或.T.表示邏輯真,.N.或.F.表示邏輯假,小寫亦可。.日期型、時間型常量 常用的日期格式:mm/dd/yy[,][hh[:mm[:ss]][a|p]]嚴(yán)格的日期格式:-yyyy-mm-dd[,] [:ss]][a|p]].貨幣型常量 小數(shù)位數(shù)超過4位時,系統(tǒng)將進(jìn)行四舍五入的處理。 當(dāng)涉及貨幣時使用,使用貨幣型數(shù)據(jù)要在前面加上符號,如:$1003.2.2內(nèi)存變量內(nèi)存變量是表示暫時存放在內(nèi)存變量工作區(qū)中的有關(guān)程序運行或命令執(zhí)行過程中所需要使用到的數(shù)據(jù),包括常量、中間結(jié)果和最終結(jié)果。變量命名基本準(zhǔn)則:首字符不能是數(shù)字;以字母(下劃線或漢字)開頭,由字母、數(shù)字、下劃線和漢字典名字的長度1到128個字符,不可以與系統(tǒng)保留名同名。詞義要盡量準(zhǔn)確。內(nèi)存變量的賦值命令<內(nèi)存變量>=v表達(dá)式>STORE〈表達(dá)式〉TO〈內(nèi)存變量表》說明:該命令計算表達(dá)式的值,并把計算結(jié)果賦給內(nèi)存變量名(格式2能夠給多個內(nèi)存變量賦值)O(1)格式1中的'='稱為賦值號,而不是等于號。即有首先計算’='右部的值,然后送給左邊的變量名;而且具有明顯的時序性、方向性和不可移項性。如:x=2 X=X+1(2)格式2中的內(nèi)存變量名表是一組用逗號分隔開的變量,對于不同類型的變量,不能用格式2同時賦值。2.3數(shù)組變量.數(shù)組的定義一維數(shù)組的定義 DIMENSION|DECLARE數(shù)組名1(M1),數(shù)組名2(M2)...二維數(shù)組的定義 DIMENSION|DECLARE數(shù)組名1(Ml,Nl),數(shù)組名2(M2,N2)...例如:DIMEX(3)有X(1),X(2),X(3)共3個元素DIMEA(3,2)有A(1,1)、A(1,2)、A(2,1)、A(2,2)、A(3,1),A(3,2)共6個元素(VFP中最多可定義65000個數(shù)組,每個數(shù)組最多可有65000個元素)數(shù)組的賦值(數(shù)組須先定義后賦值)例如:DIMEA(2)A(1)=123A(2)='ABC'數(shù)組定義后各元素的初值均為:.F.2.4字段變量.一個數(shù)據(jù)庫由若干相關(guān)的數(shù)據(jù)表組成,一個數(shù)據(jù)表又由若干個具有相同屬性的記錄組成,而每個記錄又由若干個字段組成,字段變量就是指表中已定義的任意一個字段。.字段變量的類型由建表時定義的字段類型一致。.區(qū)別:內(nèi)存變量 字段變量獨立存在,關(guān)機(jī)丟失 隸屬于表,存于磁盤類型與長度可由賦值改變 由表結(jié)構(gòu)決定,不可改變單值變量 多值變量(當(dāng)內(nèi)存變量與字段變量同名時,默認(rèn)為字段變量,內(nèi)存變量可用前綴生2或M?.區(qū)別)2.5記錄.記錄是數(shù)據(jù)表中一組數(shù)據(jù)項的集合,同一個數(shù)據(jù)表中可以有若干個記錄,每一個記錄具有相同的字段數(shù)。 2.在VFP中,許多操作都是通過記錄操作來完成的。2.6對象對象:構(gòu)成程序的基本單位和運行實體3.3函數(shù)一、數(shù)值類操作函數(shù)絕對值函數(shù):A?S(N一型表達(dá)式)函數(shù)值為N型 如:?ABS(-123.456)值為123.456指數(shù)函數(shù):EXP(N型表達(dá)式) 函數(shù)值為N型 如:?EXP(1)值為2.72自然對數(shù)函數(shù):LQ(L3型表達(dá)式)一函數(shù)值為N型 如:?LOG(1)值為0.00?LOG(100)值為4.61圓周率函數(shù):且。返回數(shù)值型常數(shù)兀。數(shù)值常數(shù)兀(3.141592)是一個圓的周長與直徑的比值。pi()國數(shù)返回值的小數(shù)點位置由SETDECIMALS命令決定。取整數(shù)函數(shù):里匚@.型表達(dá)式)一返回大于或等于指定數(shù)值表達(dá)式的最小整數(shù)。C&_型表達(dá)式]返回大于或等于此數(shù)值型表達(dá)式值的最小整數(shù)。FLQ典Q一型表達(dá)式)—返回小于或等于此數(shù)值型表達(dá)式值的最大整數(shù)。TOC\o"1-5"\h\z所有返回的函數(shù)值為N型如:?INT(6.8),INTG6.8) 返回值為6 -6?CEILING(6.8),CEILING(-6.8)返回值為7 -6?FLOOR(6.8).FLOOR(-6.8)返回值為6 -7取最大者函數(shù):MAX(表達(dá)式1.表達(dá)式2.表達(dá)式3...)函數(shù)值為最大者,表達(dá)式必須同類型比較,表達(dá)式可以是N型、D型、不能為C型如:?MAX(12,43,20)值為43?MAX(12,-43,20)值為20?MAX(CTOD('01/01/97'),CTOD(110/03/97"))值為10/03/97取最小者函數(shù):一(表達(dá)式一1冊.一表達(dá)■式2,一一一表達(dá)式一函數(shù)值為最小者,兩個表達(dá)式必須同類型如:?MIN(12,-43,20)值為-43?MIN(CTOD(*01/01/97,),CTOD(*10/03/97*))值為01/01/97取余函數(shù):MOD(N型表達(dá)式U型表達(dá)式2)或:N1%N2取表達(dá)式1除以表達(dá)式2的余數(shù)國數(shù)值的符號一定和表達(dá)式2符號相同MOD(M,N)相當(dāng)如下計算:M,N相同符號M-INT(M/N)*NM,N不同符號M-INT(M/N)*N+N四舍五入國數(shù):,RQ睡一但型敷試型君彩L2)一國數(shù)值為N型,如:?ROUND(123.45678,2)值為123.46?ROUND(123.45678,0)值為123?ROUND(123.45678,-1)值為120開平方函數(shù):,SQRLQ型表達(dá)式)一如:?SQRT(10000)值為100.00?N型表達(dá)式不能負(fù)數(shù)隨機(jī)函數(shù):?RAND()?返回隨機(jī)值,即大于0且小于1的任一正小數(shù)。?如:?RAND()二、字符類函數(shù)判斷子串在母串中的位置:A1(子串,一母串)一函數(shù)值為N型(如:?AT<WTADCER,)值為3) 若田串中無子串,則函數(shù)值為0求子串函數(shù):迦亞JC型」J3L 函數(shù)值為C型,實數(shù)取整(如:?SUBSTR('ABC.DEF',5.99,2.D+SUBSTRC123.4567',4)值為'DE.4567')取左子串函數(shù):?LEFT('中國人民',4)值為‘中國'函數(shù)值為C型,取=0值為空串取右子串函數(shù):KIC町轉(zhuǎn)型表達(dá)式,N型表達(dá)式)函數(shù)值為c型,N<=0值為空串?RIGHT('中國人民',4)值為'人民’?RIGHT('123',2)+RIGHT('123',-1)+RIGHT('中國人民',4)值為'23人民'取消前導(dǎo)空格函數(shù):LTRIMJC>aiSSJL 函數(shù)值為C型?LTRIM('123,+LTRIM('中國’))值為'123中國'取消尾部空格函數(shù):RIRIMKG型表達(dá)式)一 函數(shù)值為c型?RTRIMC1123'+RTRIM('中國人民‘))值為’123中國人民’取消尾隨空格函數(shù)■mic型表達(dá)式] 函數(shù)值為c型?TRIM(*012345 ')+TRIM('中國人民')值為'012345中國人民'取消前部與尾隨空格函數(shù)ALLTRIM(C型表達(dá)式) 國數(shù)值為C型7ALLTC012345 ')+ALLT('中國人民')值為'012345中國人民'字符串測試函數(shù)測字母開關(guān)函數(shù):以LE!達(dá)型表達(dá)或L?函數(shù)值為L型?若字符串開頭是字母,國數(shù)值為.T.,否則返回.F.?ISALPHA(TABC2')值為.f.?ISALPHA('中國人民')值為.T.?ISALPHA('abc')值為.T. ?ISALPHA('ABC')值為.T.測小寫字母開頭函數(shù):ISL。典JLQ型表達(dá)式1M數(shù)值為L型若字符串開頭是小寫字母開頭,函數(shù)值為.T.,否則為.F.? ?ISLOWERCABC2')值為.F. ?ISLOWER('中國人民')值為.f.?ISLOWERfabc)值為.T.測大寫字母開頭函數(shù):至yPEER」。型表達(dá)救?函數(shù)值為l型?若字符串是大寫字母開頭字母,函數(shù)值為.T.,否則函數(shù)值為.F.?ISUPPERCABC2,)值為.T. ?ISUPPER('中國人民')值為.T.?ISUPPERCabc)值為.F. ?ISUPPERCABC')值為.T.求字符串長度邸45里表達(dá)式上函數(shù)值為N型,函數(shù)值為字符串的個數(shù)?LEN('ABCDEIE')值為7 ?LEN('中國人民')值為8字符串轉(zhuǎn)換函數(shù)宏替換:&C型內(nèi)存變量(&作用是去掉字符串的界限符號)如:姓名=‘張三' Cl='姓名’?&C1值為姓名相當(dāng)于?姓名如:Al=‘中國’ ?'&AL漳州‘ 值為‘中國漳州’注意:C型內(nèi)存變量不允許是C型數(shù)組元素。宏代換函數(shù)可以嵌套使用。C2='Good!' Cl=2*C=*C&Cl* ?&C值為Good!?&C1.2*3 值為66大寫字母換成小字母L。加上(C型表達(dá)式):將字符串中的所有大寫字母換成小寫字母。如:?LOWER('abAB635&r)值為'abab635&~小寫字母轉(zhuǎn)換成大寫字母近RER<C型表達(dá)式):值為C型,將字符串中所有的小寫字田轉(zhuǎn)換成大寫字母。如:?UPPER('abCD32')值為'ABCD32'替換子串函數(shù)STUFF(串1,Nl*N2,串2)串1中第N1個字符開始N2個字符用串2替換。如:Cl=1234567890' ?STUFF(Cl,2,4,'AB') 值為'1AB67890,當(dāng)N1大于串1的長度,則串2直接連接在串1后面。?STUFF(Cl,12,5,'AB') 值為'1234567890AB'當(dāng)N2=0,則串2直接插入第N1個字符前。?STUFF(Cl,1,0,'AB') 值為'AB1234567890'生成重復(fù)的字符串蝌年里O表WtL 值為C型,重復(fù)生成字符串N次如:?REPLICATE10)值為'**********'生成空格字符串SPACE(N)值為C型,生成N個空格的字符串如:?'12'+'SPACE(4)+'AB'值為'12AB'三、日期與時間類函數(shù)求星期函數(shù):@堡Q一型表達(dá)式)—值為C型,函數(shù)值為日期的星期(英文)如:D1=CTOD('07/01/95') ?CDOW(D1)值為'Saturday'系統(tǒng)日期DATEJUL D型,函數(shù)值為系統(tǒng)的日期7DATE() 值為系統(tǒng)的日期系統(tǒng)時間TIMEJJL C型,函數(shù)值為計算機(jī)系統(tǒng)的時間?time0 值為系統(tǒng)的時間日期時間函數(shù)DATETIME()T型,國數(shù)值為計算機(jī)系統(tǒng)的日期時間?DATETIME() 值為系統(tǒng)的日期時間09/01/0308:00:24AM求星期中的星期幾(整數(shù))POW_<D型表達(dá)式)…值為N型,函數(shù)值為日期對應(yīng)的數(shù)字日一二三四五六1 2 3 4 5 6 7如:D1=CTOD('07/01/95')?DOW(D1)值為7求日期中的月份(英文)函數(shù)CM0NI1LID埋I表達(dá)式I C型,函數(shù)值為日期對應(yīng)的月份(英文)如:D1=CTOD('07/01/95')?CMONTH(D1)值為‘July'求日期中的號數(shù)函數(shù)噠丫一。型表達(dá)式)— N型,函數(shù)值為日期對應(yīng)的號數(shù)如:Dl=CT0D('07/01/95')?DAY(D1)值為1求日期中的月份函數(shù)儂NILO型表達(dá)或L N型,函數(shù)值為日期對應(yīng)的月份(整數(shù))如:Dl=CT0D('07/01/95')?MONTH(D1)值為7求日期中的年份函數(shù)選噠一(D型表達(dá)式)一 N型,函數(shù)值為日期對應(yīng)的年份(四位整數(shù))如:Dl={_2004-09-23}?YEAR(D1)值為2004四、類型轉(zhuǎn)換類函數(shù)字符轉(zhuǎn)換成ASCAH碼值函數(shù)蝮型表達(dá)式)— 值為字符串中第一個字符的ASCII碼值如:?ASC('ABCD')值為65ASCII碼值轉(zhuǎn)換成字符函數(shù)CKR—@型表達(dá)式)一 c型,值為數(shù)值對應(yīng)的ascii碼字符如:?CHR(66)值為‘B'?CHR(98.45)值為'b' 實數(shù)先取整后求值CHR⑺值為響鈴字符串與數(shù)值轉(zhuǎn)換函數(shù)數(shù)值轉(zhuǎn)換字符型函數(shù)STR(N1,N2[,N3])C型如:Nl=1234.56789?STR(N1,9,2)值為’1234.57'寬度9(位數(shù)不足前面用空格補(bǔ)齊)(若省略N3,只轉(zhuǎn)換到整數(shù))如:?STR(N1,5)值為‘1235'寬度為5(若省略N2和N3,則默認(rèn)N2=10,N3=0)字符型轉(zhuǎn)換成數(shù)值函數(shù)VAL9型表達(dá)式)N型,將字符串第1個字符開始到第1個非數(shù)值字符之間的字符串轉(zhuǎn)換成對應(yīng)的數(shù)值。如:?VAL('12.45A')值為12.45(若字符串中的第一個字符為非數(shù)值字符,則返回0)如:?VAL('A12.45')值為0.00?VAL('253')值為253.00(默認(rèn)小數(shù)點的個數(shù)為兩個)字符與日期轉(zhuǎn)換函數(shù).字符型轉(zhuǎn)換成日期型函數(shù)CTOD(C型表達(dá)式) D型如:?MONTH(CTOD('07/01/95*))值為7.日期型轉(zhuǎn)換成字符型函數(shù)DTOC(D甄")C型將日期轉(zhuǎn)換成形式為'月月/日日/年年’字符型數(shù)據(jù)如:?DTOC(DATE()) 值為,01/01/99*.日期轉(zhuǎn)換為YYYYMMDD格式字符串DIQSK日期表達(dá)式“一 c型返回YYYYMMDD字符串如:?DTOS({10/01/99))返回值為:'19991001'五、狀態(tài)檢驗類操作函數(shù)FoxPRO在內(nèi)存中開辟多個工作區(qū),允許在多個工作區(qū)上打開多個數(shù)據(jù)庫文件,但只有一個工作區(qū)是當(dāng)前工作區(qū),其中的庫文件為當(dāng)前庫文件。1、數(shù)據(jù)庫參數(shù)測試函數(shù)庫文件別名測試函數(shù):皿坦3型表達(dá)近值為第'N型表達(dá)式'號工作區(qū)上已打開的數(shù)據(jù)庫文件別名。?若省略'N型表達(dá)式',則值為當(dāng)前庫文件別名。?若指定工作區(qū)上無打開庫文件,則值為空串。庫文件名測試函數(shù): 。近刨型表達(dá)式1?值為'N型表達(dá)式'號工作區(qū)上已打開的庫文件名。?省略'N型表達(dá)式',指當(dāng)前工作區(qū)。?若指定工作區(qū)上無打開庫文件,則值為空串。庫文件字段數(shù)測試函數(shù): 姆I①L型表達(dá)或11值為'N型表達(dá)式'號工作區(qū)上已打開的庫文件中的字段的數(shù)目。省略'N型表達(dá)式',指當(dāng)前工作區(qū)。若指定工作區(qū)上無打開庫文件,則值為0。庫文件字段名測試函數(shù): 』其LDQL型表達(dá)式上L―N型表達(dá)式211值為'N型表達(dá)式2,號工作區(qū)上已打開的庫文件中第'N型表達(dá)式r個字段的字段名,函數(shù)值為C型。省略'N型表達(dá)式',指當(dāng)前工作區(qū)。若指定工作區(qū)上無打開庫文件,則值為空串,若'N型表達(dá)式1'的值小于、大于庫文件的字段數(shù),值也為0。庫文件最近的修改日期測試函I數(shù): lupdatecj.值為當(dāng)前庫文件最近一次修改的日期。函數(shù)值為D型。若當(dāng)前無打開庫文件,則值為空日期。//庫文件記錄數(shù)測試函數(shù): RECCQ地(3型表達(dá)式」)值為'N型表達(dá)式'號工作區(qū)上已打開的庫文件中的記錄總數(shù),值為N型。省略'N型表達(dá)式',指當(dāng)前工作區(qū)。若指定工作區(qū)上無打開庫文件,則值為0。庫文件記錄長度測試函數(shù): 瞋SIZn的型表達(dá)式.D值為'N型表達(dá)式'號工作區(qū)上已打開的庫文件中記錄的長度(所有字段長度和加1),函數(shù)值為N型。省略'N型表達(dá)式',指當(dāng)前工作區(qū)。若指定工作區(qū)上無打開庫文件,則值為0。2、當(dāng)前記錄狀態(tài)測試函數(shù)測試庫文件頭函數(shù): 一B紇I小型表達(dá)式當(dāng)?shù)?N型表達(dá)式'號工作區(qū)上已打開的數(shù)據(jù)庫文件記錄指針在首記錄之前,值為.T.,否則為.F.,值為L型。若省蛤'N型表達(dá)式',指當(dāng)前工作區(qū)。若指定工作區(qū)無打開庫文件,則值為.F.。測試當(dāng)前記錄是否邏輯刪除函數(shù): ?PELETEDJlNSmiSSlL測試第'N型表達(dá)式'號工作區(qū)上已打開的數(shù)據(jù)庫文件中當(dāng)前記錄是否被邏輯刪除,是,值為.T.,否,值為.F.,值為L型。若省略'N型表達(dá)式',指當(dāng)前工作區(qū)。若指定工作區(qū)無打開庫文件,則值為.F.。測試數(shù)據(jù)庫文件尾函數(shù): 一眶表達(dá)式LL當(dāng)?shù)?N型表達(dá)式'號工作區(qū)上已打開的數(shù)據(jù)庫文件中當(dāng)前記錄已指向末記錄之后,(稱為文件尾)是,值為.「;否,值為.F.,值為L型。若省略'N型表達(dá)式',指當(dāng)前工作區(qū)。若指定工作區(qū)無打開庫文件,則值為.F.。測試查找結(jié)果函數(shù): JOTLCL型表達(dá)式在第'N型表達(dá)式'號工作區(qū)上已打開的數(shù)據(jù)庫文件中進(jìn)行查找,若查到,值為.T.,否,值為.F.,值為L型。若省略'N型表達(dá)式',指當(dāng)前工作區(qū)。測試當(dāng)前記錄號函數(shù): 即0表達(dá)式LL?測試第'N型表達(dá)式'號工作區(qū)上已打開的數(shù)據(jù)庫文件中當(dāng)前記錄的記錄號,值為N型。?若省略'N型表達(dá)式',指當(dāng)前工作區(qū)。?若指定工作區(qū)無打開庫文件,則值為0。?若記錄指針為B0F()為.T.,則值為1,若EOF()為.T.,值為記錄總數(shù)加10六、其它測試函數(shù).空值判斷國數(shù):隨篤(送達(dá)式”若表達(dá)式為空值,則返回真值否則返回.F.表達(dá)式可是C,N,D,L型,可以是表的字段名表達(dá)式。對不同表達(dá)式類型,空值概念不同。C型:空串,空格,換行符等。D型、M型、G型:空L型:邏輯假.F.N型:0值(以上幾種類型EMPTY。返回真.T.).測試文件是否存在國數(shù):FILE一(C型表達(dá)式)一若'c型表達(dá)式'指定的文件名存在,則返回值是.T.,否則返回值是.F.,函數(shù)值為L型。.測試當(dāng)前工作區(qū)號國數(shù):SELE0..Q.返回值是當(dāng)前工作區(qū)的區(qū)號,函數(shù)值為N型。.讀一鍵國數(shù):INKEY([N型表達(dá)式])返回值是從鍵盤輸入的一個鍵的鍵值,等待用戶按鍵的時間為'N型表達(dá)式'秒,函數(shù)值為N型。若'N型表達(dá)式'=0則無限期等待,若超過等待時間,用戶未按鍵,則返回為0。INKEY()函數(shù)返回的某些特殊鍵的鍵值如:回車13空格32等。.條件測試函數(shù):IIE(邏輯表達(dá)式,一表達(dá)式L.表達(dá)式2)根據(jù)邏輯表達(dá)式的值,返回兩個值中的一個。如果邏輯表達(dá)式計算結(jié)果為“真”(」.),返回表達(dá)式1;如果為"假''(.F.),則返回表達(dá)式2。返回值:字符型、數(shù)字型、貨幣型、日期型或日期時間型。如:X=3 Y=6 ?iif(X>2/abc/電腦'),iif(丫<2,,abc','電腦,)返回值abc電腦.測試表達(dá)式類型函數(shù):達(dá)式‘工返回值是引號內(nèi)表達(dá)式的類型,函數(shù)值為C型共有N、C、D、L、M、T、U等。數(shù)據(jù)類型與返回的字符字符型C未定義的表達(dá)式類型U通用型G貨幣型丫日期型D日期時間型T邏輯型L備注型M對象型 0Screen(用SAVESCREEN命令建立)S數(shù)值型(或者整數(shù)、單精度浮點數(shù)和雙精度浮點數(shù))N?TYPE('CUSTOMER.CONTACT')&&顯示'C'?TYPEC(12*3)+4') &&顯示'N'?TYPECDATE(),) &&顯示'D'?TYPE('ANSWER=42')&&顯示'U'.信息對話框國數(shù):MESSAGEBOX(提示文本,對話框類型[N1+N2+N3],標(biāo)題文本)提示文本:指定在對話框中顯示的文本。在提示文本中包含回車符(CHR(13)j可以使信息移到下一行顯示。對話框類型:指定對話框中的按鈕N1和圖標(biāo)N2、顯示對話框時的默認(rèn)按鈕N3以及對話框的行為。它可以是下面每個表中選一個值組成的三個值的和。標(biāo)題文本:指定對話框標(biāo)題欄中的文本。若省略標(biāo)題欄中將顯示'MicrosoftVisualFoxPro'o(當(dāng)省略對話框類型時,等同于指定對話框類型值為0)N1數(shù)值對話框按鈕(從0到5指定了顯示的按鈕)0 僅有'確定'按鈕1 '確定'和'取消'按鈕2'放棄重試'和'忽略'按鈕3 '是'、'否'和'取消'按鈕4 '是'、'否'按鈕5 '重試'和'取消'按鈕N2數(shù)值圖標(biāo)(指定了對話框中的圖標(biāo))0 不顯示圖標(biāo) 16 '停止'圖標(biāo)32 問號 48 驚嘆號64 信息⑴圖標(biāo)N3數(shù)值默認(rèn)按鈕(指定對話框中哪個按鈕為默認(rèn)按鈕)0 第一個按鈕256 第二個按鈕512 第三個按鈕例如,若對話框類型值為290(2+32+256)則指定的對話框含有如下特征:‘放棄重試'或'忽略'按鈕。消息框顯示問號圖標(biāo)。第二個按鈕,‘重試'為默認(rèn)按鈕。MESSAGEBOX()返回值類型:數(shù)值型說明:MESSAGEBOX()的返回值標(biāo)明選取了對話框中的哪個按鈕。在含有取消按鈕的對話框中,如果按下ESC鍵退出對話框,則與選取‘取消'按鈕一樣,返回值(2)0注意本函數(shù)的最短縮寫為MESSAGEB()o下表列出了MESSAGEBOX()對應(yīng)每個按鈕的返回值。返回值按鈕返回值按鈕1確定5忽略2取消6是3放棄7否4重試3.4運算符可用于運算的數(shù)據(jù)有四種類型,所以有四種類型的運算符。一、算術(shù)運算符:括號一一。一一正負(fù)t二一一.一取模%乘方** 乘除*/一加減十?二符號優(yōu)先次序:()、正負(fù)號、乘方、乘除、取模、加減日期的計算+-符號用于日期型的三種情況:日期型數(shù)據(jù)+.整數(shù)(天數(shù))一結(jié)果是該日期之后的新日期,仍為日期型數(shù)據(jù)。日期型數(shù)據(jù)一整數(shù)(天數(shù)) 結(jié)果是該日期之前的新日期,仍為日期型數(shù)據(jù)。日期型數(shù)據(jù).1-日期型數(shù)據(jù) 結(jié)果是兩日期之間的天數(shù)
二、字符運算符完全連接符+字符串1+字符串2(原樣連接)將串二、字符運算符完全連接符+字符串1+字符串2(原樣連接)將串2連接到串1的后面。不完全連接符(去空格)-字符串1—字符串2(緊縮連接)將串2連接到串1的后面,但串1的尾部空格移到串2的后面。包含運算符(比較)$字符里一字符串2如:'ABCD'+'EFG':'ABCD'EFG':'張'$‘張王李’:返回返回返回字符串2是否包含字符串1'ABCDEFG)'ABCDEFG'.T.三、關(guān)系運算符?<、>、<=、>=?數(shù)值大小比較:=、?或#、=、!=用于&GP型數(shù)據(jù)的大小比較按數(shù)值大小比較如:?934>397結(jié)果為.T.?2+4=6*3結(jié)果為.F.?字符大小比較:用字符的ASCAH碼值大小比較,第一個字符相同時再比較第二個.?…如:?'='>'+' 值.T.=ASCII為61+ASCH為43注意:字符的三種排列次序:machine(機(jī)器,按ASCH)、PinYin(系統(tǒng)默認(rèn),按拼音)、Stroke(筆畫,按筆畫數(shù))。拼音的大小字母之間的比較是ASCH碼值的相反!如:'A'>'a' 值.T. A65a97日期大?。涸缛掌谥敌?CT0DC01/01/98')>CT0D('01/01/97') 值為.T.常用漢字(一級漢字)的大小按拼音順序、不常用的漢字(二級漢字)的大小按偏旁部首順序比較大小。 如:’中國‘ 福建’?T.大于:> 3>2 小于:< 2<5小于或等于:<= 3<=4'abc'<='abe'大于或等于:>= 8>=5'abc'>='ab'等于:= 4=4'abc'='ab'(非精確比較)不等于:<>4<>5'be'<>'ab'(非精確比較)不等于:#4#5'bc'#'ab'(精確比較)等于== 飛c'=='be'(精確比較)(以上表達(dá)式結(jié)果為真.T.)精確比較與非精確比較:控制EXACT當(dāng)然—叫CL”時保統(tǒng)默出?=<>為字符型數(shù)據(jù)的非精確比較,即=<>不同于==#'abed*='abc' .T. 'abed'<>>abc).F.'abc'='abed) .F. 'abc'O'abed).T.當(dāng)SEI一期隙_?四,=<>為字符型數(shù)據(jù)的精確比較,即=<>相同于==#'abed'='abc'.F. 'abed*O'abc'.T.abc'='abed'.abc'='abed'.F.abc)<>>abed'.T.四、邏輯運算符(.NOT.或!、.AND.、.OR.)運算優(yōu)先次序:()、.NOT.、.AND.、.OR.非運算:.NOT.運算結(jié)果.NOT..T..F..NOT..F..T.與運算:.AND.、一結(jié)果,T..AND..T..T..F..AND..T..F..F..AND..F..F..T..AND..F..F.或運算:.OR.、一四算結(jié)果.T..OR..T..T..F..OR..T..T..F..OR..F.?F.?T..OR..F..T.3.5表達(dá)式?表達(dá)式是由運算對象(常量、變量、函數(shù))和各種運算符組成的式子。(1)數(shù)值表達(dá)式(結(jié)果為數(shù)值)數(shù)值型數(shù)據(jù)算術(shù)運算符數(shù)值型數(shù)據(jù)日期型數(shù)據(jù)一日期型數(shù)據(jù)(2)字符型表達(dá)式(結(jié)果為字符)字符型數(shù)據(jù)+字符型數(shù)據(jù)字符型數(shù)據(jù)一字符型數(shù)據(jù)(3)日期型表達(dá)式(結(jié)果為日期)日期型數(shù)據(jù)+整數(shù)數(shù)據(jù)日期型數(shù)據(jù)一整數(shù)數(shù)據(jù)(4)邏輯表達(dá)式(結(jié)果為邏輯值)數(shù)值型數(shù)據(jù)關(guān)系運算符數(shù)值型數(shù)據(jù)日期型數(shù)據(jù)關(guān)系運算符日期型數(shù)據(jù)字符型數(shù)據(jù)關(guān)系運算符字符型數(shù)據(jù)邏輯型數(shù)據(jù)邏輯運算符邏輯型數(shù)據(jù)表達(dá)式中各運算符運算次序:0f算術(shù)運算符一字符運算符一字符串運算符-關(guān)系運算符一邏輯運算符第四章數(shù)據(jù)庫與表的基本操作41數(shù)據(jù)庫的基本操作VFP數(shù)據(jù)庫相關(guān)概念數(shù)據(jù)庫概念:許多相關(guān)的數(shù)據(jù)庫表的集合。它包括表以及表之間的關(guān)系等。VisualFoxpro數(shù)據(jù)庫及其建立數(shù)據(jù)庫的文件構(gòu)成1.數(shù)據(jù)庫主文件:文件擴(kuò)展名DBC 2,數(shù)據(jù)庫備注文件:文件擴(kuò)展名DCT3.數(shù)據(jù)庫索引文件:文件擴(kuò)展名DCX建立數(shù)據(jù)庫的方法:1.助目管理器2.新建對話框3.使用命令交互項目管理器建立數(shù)據(jù)庫:項目文件f數(shù)據(jù)庫一新建(數(shù)據(jù)庫)新建對話框建立數(shù)據(jù)庫:文件一新建f數(shù)據(jù)庫一新建文件使用命令交互建立數(shù)據(jù)庫:CREATEDATEBASE[數(shù)據(jù)庫名I?]不指定數(shù)據(jù)庫名稱或者問號則探出對話框讓用戶輸入數(shù)據(jù)庫名稱。該命令不能打開數(shù)據(jù)庫設(shè)計器,數(shù)據(jù)庫處于打開狀態(tài)。使用數(shù)據(jù)庫項目管理器中選擇數(shù)據(jù)庫自動打開文件一打開一選擇數(shù)據(jù)庫類型一選擇數(shù)據(jù)庫,命令方式打開OPENDATABASE[數(shù)據(jù)庫名回調(diào)SHARE][NOUPDATE][VALIDATE]EXCLUSIVE:以獨占方式打開數(shù)據(jù)庫。SHARED:以共享方式打開數(shù)據(jù)庫。NOUPDATE:不能對數(shù)據(jù)庫做任何更改。該數(shù)據(jù)庫只讀。VALIDATE:讓VisualFoxPro確保數(shù)據(jù)庫中的引用有效。VisualFoxPro將檢查磁盤上數(shù)據(jù)庫中的表和索引是否可用。修改數(shù)據(jù)庫項目管理器中選擇數(shù)據(jù)庫一修改文件一打開一選擇數(shù)據(jù)庫類型一數(shù)據(jù)庫命令方式修改MODIFYDATABASE[數(shù)據(jù)庫名I?][NOWAIT][NOEDIT]NOWAIT:在程序中使用。在打開數(shù)據(jù)庫設(shè)計器后繼續(xù)程序的執(zhí)行。程序不必等待數(shù)據(jù)庫設(shè)計器關(guān)閉,而是繼續(xù)執(zhí)行MODIFYDATABASENOWAIT之后的程序行。NOEDIT:禁止修改數(shù)據(jù)庫刪除數(shù)據(jù)庫項目管理器中選擇數(shù)據(jù)庫一移去命令方式刪除DELETEDATABASE數(shù)樵度名I?[DELETETABLES][RECYCLE]從磁盤上刪除指定名稱的數(shù)據(jù)庫。指定的數(shù)據(jù)庫不能是打開的。數(shù)據(jù)庫名可以包含指定數(shù)據(jù)庫的路徑和數(shù)據(jù)庫名。DELETETABLES:從磁盤上刪除包含在數(shù)據(jù)庫中的表和包含表的數(shù)據(jù)庫。RECYCLE:放入回收站。建立數(shù)據(jù)庫表與自由表在VFP中表分為數(shù)據(jù)庫表和自由表自由表:是獨立的表,存在于任意一個數(shù)據(jù)庫之外,不屬于任何數(shù)據(jù)數(shù)據(jù)庫表:若干表組織到數(shù)據(jù)庫中形成數(shù)據(jù)庫表表的設(shè)計過程:1.定義表名 2.定義表的字段屬性 3.向表中輸入數(shù)據(jù)準(zhǔn)備工作:根據(jù)需要管理的數(shù)據(jù)表內(nèi)容進(jìn)行分析。數(shù)據(jù)如下:學(xué)號姓名性別出生日期專業(yè)獎學(xué)金備注99001王強(qiáng)T06/01/80計算機(jī)250.0099002李英F12/05/82電子200.0099003趙力T06/05/79金融150.0099004黃偉T10/09/81電子150.0099005陳靜F05/24/80計算機(jī)300.0099006周明F02/15/80金融200.001.定義表名:確定表文件名STUDENT.DBF2.定義表的字段屬性:確定數(shù)據(jù)庫文件結(jié)構(gòu)中的每一個字段名、字段類型、長度。(表結(jié)構(gòu)如下所示)字段名類型寬度小數(shù)位數(shù)學(xué)號C5姓名C8性別L1出生日期D8專業(yè)C8獎學(xué)金N72備注M43.向表中輸入數(shù)據(jù)VisualFoxpro的表可以包含多達(dá)255個字段,若一個或多個字段包含NULL值,表可包含的最大字段數(shù)則減少一個,即254個字段名:可以由字母、漢字、數(shù)字和下劃線組成并以字母或漢字開頭的命名,不能使用空格、逗號等分隔符號。數(shù)據(jù)庫表:字段名最多可包含128個字符,若變成自由表,長字段名將被截短成10個字符。 自由表:字段名不得超過10個字符或5個漢字。NULL值無明確的值,不等同于零或空格。(1)等價于沒有任何值(2)與0、空字符串("")或空格不同(3)排序優(yōu)先于其他數(shù)據(jù)表的創(chuàng)建a.數(shù)據(jù)庫表的建立方法:項目文件一數(shù)據(jù)庫一新建數(shù)據(jù)庫一新建表表結(jié)構(gòu)的創(chuàng)建a.數(shù)據(jù)庫表:項目文件一數(shù)據(jù)庫一包含數(shù)據(jù)庫表的數(shù)據(jù)庫一表一新建一輸入表名字一輸入結(jié)構(gòu)b.數(shù)據(jù)庫表結(jié)構(gòu)的輸入c.自由表的建立方法:項目文件一自由表一新建自由表結(jié)構(gòu)的創(chuàng)建a.自由表:自由表一新建一輸入表名字一輸入結(jié)構(gòu)b.自由表結(jié)構(gòu)的輸入命令方式建立數(shù)據(jù)庫表與自由表數(shù)據(jù)庫表OPENdatabase數(shù)據(jù)庫 打開數(shù)據(jù)庫Create數(shù)據(jù)庫表名 創(chuàng)建數(shù)據(jù)庫表自由表(不打開數(shù)據(jù)庫的情況下)Create自由表名 創(chuàng)建自由表表結(jié)構(gòu)的修改(1)利用表設(shè)計器來修改表的結(jié)構(gòu)(2)數(shù)據(jù)庫表結(jié)構(gòu)的修改啟用表設(shè)計器的方法:方法一:在明目管理器中選擇要修改的表名,單擊修改。方法二:在數(shù)據(jù)庫設(shè)計器中選擇要修改的表,單擊修改。自由表結(jié)構(gòu)的修改:打開自由表一顯示一表設(shè)計器表記錄的輸入.創(chuàng)建表結(jié)構(gòu)后選擇“是“按鈕,立即輸入數(shù)據(jù)。.在瀏覽窗口和編輯窗口表中追加新記錄(Ctrl+W存盤Ctrl+Q或ESC鍵放棄本記錄輸入)。.備注字段與通用字段的輸入,雙擊或Ctrl+Home進(jìn)入該字段輸入窗口。Ctrl+Q或ESC鍵放棄該字段的輸入。自由表與數(shù)據(jù)庫表之間的互換a.將自由表變?yōu)槟硞€數(shù)據(jù)庫表:選項目文件、數(shù)據(jù)庫、添加表b.將數(shù)據(jù)庫表變?yōu)樽杂杀恚哼x項目文件、數(shù)據(jù)庫、選定表、移去c.命令方式移出數(shù)據(jù)庫表成為自由表:迪宜工S且教據(jù)售表名一L2[DELETE][RECYCLE]從當(dāng)前數(shù)據(jù)庫中移去指定的表。該表從數(shù)據(jù)庫中移去之后,便變成了自由表,因而可以添加到另一個數(shù)據(jù),所有與被移去的表有關(guān)的主索引、默認(rèn)值和有效性規(guī)則也被刪除。DELETE:從磁盤上刪除 RECYCLE:放入回收站表的基本操作查看和瀏覽表中內(nèi)容:項目管理器中選擇要瀏覽的表一瀏覽數(shù)據(jù)庫設(shè)計器一選擇數(shù)據(jù)表f右鍵瀏覽打開表一輸入命令顯示edit/瀏覽browse查看和瀏覽表的過程中:直接輸入新數(shù)據(jù)即可修改數(shù)據(jù)邏輯刪除記錄:CTRL+T或者單擊刪除標(biāo)志欄添加記錄:CTRL+Y或者表一追加新記錄記錄定位:表一轉(zhuǎn)到記錄命令窗口中使用命令方式的操作a.插入新記錄(1)命令格式:INSERT[BLANK](2)功能:在當(dāng)前記錄插入新記錄b.追加新記錄(1)命令格式:APPEND[BLANK](2)功能:可在表尾增加一條新記錄(或空記錄)表的打開與關(guān)閉。覽£口緇符->]k路徑214數(shù)據(jù)庫名L1表文件名「.?乂叫"密f受L別名1」典顧索引名]打開指定磁盤的指定路徑下的表和相關(guān)的索引文件。(盤符>和<路徑>:指定表文件所在的驅(qū)動器及路徑,若省略盤符和路徑參數(shù),則打開當(dāng)前盤、當(dāng)前路徑下的表文件。use不帶參數(shù)則關(guān)閉當(dāng)前工作區(qū)的表。記錄邏輯刪除(1)命令格式:DELETE[FOR|WHILE〈條件>][<范圍〉](2)功能:參當(dāng)前表中指定范圍內(nèi)滿足條件的記錄加刪除標(biāo)記。若無可選助則只對當(dāng)前記錄作刪除標(biāo)記。記錄恢復(fù)(1)命令格式:RECALL[<范圍>][FOR|WHILE<條件>]記錄物理刪除(1)命令格式:PAOC(2)功能:從物理上真正刪除帶有刪除標(biāo)記的記錄。記錄清除(1)命令格式:ZAP(2)功能:物理刪除當(dāng)前表的記錄。表的記錄顯示命令(1)命令格式:LIST|DISPLAY[字段名表][范圍][FORv條件〉][OFF][TOPRINTER|<文件>](2)功能:在表中按指定范圍與條件選出記錄并顯示出來,或送至指定設(shè)備或文件。(3)范圍:ALL所有記錄NEXTN從當(dāng)前記錄起的N個記錄RECORDN記錄號為N的記錄REST從當(dāng)前記錄起到最后一個記錄止的所有記錄(4)FOR<條件〉:只有指定范圍內(nèi)的滿足條件的記錄參加命令操作。USESTUDENTGO3DISPLAYNEXT4FOR專業(yè)="計算機(jī)”修改指定記錄(1)命令格式:2dL奈性(2)功能:以全屏幕編輯方式,修改當(dāng)前表中滿足條件的記錄中指定字段的數(shù)據(jù)。窗口修改記錄(1)命令格式:BROWSE[FIELDS〈字段名表>](2)功能:以全屏幕窗口方式修改當(dāng)前表中的記錄。表數(shù)據(jù)的替換命令修改(1)命令格式:REPLACE〈字段名1>W(wǎng)ITH〈表達(dá)式1>[ADDITIVE][,v字段名2>]WITH<表達(dá)式2>.…[<范圍》][FOR/WHILEv融>](2)功能:在當(dāng)前表的指定記錄中,將有關(guān)字段的值用相應(yīng)的表達(dá)式值來替換。若參數(shù)缺省,則只對當(dāng)前記錄的有關(guān)字段進(jìn)行替換。例如:將表中每位同學(xué)的獎學(xué)金增加50元REPLAYALL獎學(xué)金WITH獎學(xué)金+50查詢定位命令a.絕對定位命令格式1:GO[TO]TOP|BOTTOM命令格式2:儂[TQU―4贏裘達(dá)式>功能:GOTOP將記錄指針指向表的邏輯第一個記錄GOBOTTOM將記錄指針指向表的邏輯最后一個記錄G0<數(shù)值表達(dá)式>將記錄指針指向數(shù)值表達(dá)式指出的記錄號b.相對定位記錄(1)命令格式:塞里L(fēng)s數(shù)值表達(dá)式之](2)功能:從當(dāng)前記錄開始移動記錄指針,〈數(shù)值表達(dá)式>表示移位記錄的個數(shù)。正數(shù)表示向后移動,負(fù)數(shù)表示向前移動。查找定位命令順序查找就是按照記錄的物理排列順序查找滿足指定要求的記錄(查找時不要求索引)1.順序查找:(1)命令格式:LOCATEk范圍》]FOR〈條件》(2)功能:在指定的記錄范圍內(nèi)按順序查找滿足條件的第一個記錄2.繼續(xù)順序查找:CONTINUE(1)功能:按上一個LOCATE的條件在指定范圍內(nèi)從下一條記錄起繼續(xù)查找滿足條件的下一個記錄。(2)若在指定范圍內(nèi)找到滿足條件的記錄,指針指向滿足條件的第一條記錄,函數(shù)FOUN()返回.T.EOF()返回.F.(3)若在指定范圍內(nèi)找不到滿足條件的記錄,函數(shù)FOUN()返回.F.(4) 若范圍為ALL或REST則EOF()返回.T.,指針定位在指定范圍的下一條記錄。演示數(shù)據(jù)庫表的建立用前面介紹的同樣方法在學(xué)生管理項目文件中再建立四個數(shù)據(jù)庫表并輸入相應(yīng)數(shù)據(jù):成績(GRADE.DBF)課程(COURSE.DBF)教師(TEACHER.DBF)授課(TEACH.DBF) (詳見練習(xí)資料文件夾)4.2表的索引索引的概念:記錄的物理順序與邏輯順序。物理排序:文件中的記錄一般按其磁盤存儲順序輸出,這種順序稱為物理順序。索引排序:它不改變記錄的物理順序,而是按某個索引關(guān)鍵字(或表達(dá)式)來建立記錄的邏輯順序。索引后產(chǎn)生一個索引文件,在索引文件中,所有關(guān)鍵字值按升序或降序排列,每個值對應(yīng)原文件的一個記錄號,這樣便確定了記錄的邏輯順序。也稱邏輯排序。索引文件中只包括關(guān)鍵字和記錄號兩個字段,比被索引的表要小。?物理順序與索引順序?VFP索引文件的種類復(fù)合索引文件:文件擴(kuò)展名為,CDX(一個或多個索引關(guān)鍵字,可分為結(jié)構(gòu)復(fù)合索引文件和非結(jié)構(gòu)復(fù)合索引文件)結(jié)構(gòu)復(fù)合索引文件:與表文件同名非結(jié)構(gòu)復(fù)合索引文件:與表文件不同名獨立索引文件:文件擴(kuò)展名為.IDX(為與FOXBASE兼容)單獨一個索引關(guān)鍵字可建多個文件,若打開表的時候沒有打開,則數(shù)據(jù)不會同步更新。索引的四種類型:索引類型關(guān)鍵字值或記錄的重復(fù)普通索引允許關(guān)鍵字值或記錄重復(fù)唯一索引不顯示重復(fù)的關(guān)鍵字值或記錄候選索引不允許有相同關(guān)鍵字值的記錄主索引不允許有相同關(guān)鍵字值的記錄,只有數(shù)據(jù)庫表才能建立主索引在表設(shè)計器中創(chuàng)建索引.創(chuàng)建索引:[演示舉例]對表STUDENT.DBF按專業(yè)索引。.用多個字段進(jìn)行索引:[演示舉例]對STUDENT.DBF表按專業(yè)排序,如果專業(yè)一樣,按日期排序。注意字段的索引表達(dá)式為:STUDENT.專業(yè)+DTOC(STUDENT.出生日期)注意:要觀察索引效果必須選定主索引(操作:窗口/數(shù)據(jù)工作期/屬性/索引順序)用命令方式建立索引(補(bǔ)充)索引的建立:命令格式獨立索引文件的建立INDEXON〈索引關(guān)鍵字〉TOV獨立索引文件名〉[FOR條件][COMPACT][ASCENDING][UNIQUE][ADDITIVE]復(fù)合索引文件和索引標(biāo)識的建立INDEXON<索引關(guān)鍵字〉TAG<索引標(biāo)識名〉[OF〈復(fù)合索引文件名>][FOR條件][COMPACT][ASCENDING|DESCENDING][UNIQUE|CANDIDATE]Eadditive]說明:單索引時不能用選項:DESCENDING,CANDIDATE(1)TO子句適用于建立單索引文件,單索引文件名由〈單索引文件名〉給出,擴(kuò)展名為.IDX(2)該命令建立普通索引型索引文件(3)UNIQUE表示建立唯一索引型索引文件(4)CANDIDATE表示建立候選索引型索引文件,但需與TAG子句同時使用。打開STUDENT.DBF,建立按專業(yè)升序排列的普通索引型單索引文件ZY.IDXUSESTUDENTINDEXON專業(yè)TOZYBROWSE?建立按降序排列的唯一索引型單索引文件JGIDX.IDX?INDEXON-獎學(xué)金TOJXJUNIQUE(5)COMPACT選項用于指定單索引文件為壓縮(6)OF〈復(fù)合索引文件名〉選項用來指定非結(jié)構(gòu)復(fù)合索引文件的名字,若缺省該選項,則表示建立結(jié)構(gòu)復(fù)合索引文件(7)記錄邏輯順序默認(rèn)為升序,也可用ASCENDING選項表示升序。DESCENDING選項表示降序。(8)ADDITIVE表示建立本索引文件時并不關(guān)閉先前打開的索引文件。a.為Student.DBF建立一個結(jié)構(gòu)復(fù)合索引文件,其中包括標(biāo)識索引:記錄以學(xué)號降序排列,索引標(biāo)識為XH普通索引。USESTUDENTINDEXON學(xué)號TAGXHDESCENDINGBROWSEb.為STUDENT.DBF建立一個結(jié)構(gòu)復(fù)合索引文件,其中包括標(biāo)識索引:記錄以專業(yè)升序排列,專業(yè)相同時則按出生日期升序排列,索引標(biāo)識為ZYRQ普通索引。USESTUDENTINDEXON專業(yè)+DTOC(出生日期)TAGZYRQBROWSEc.為STUDENT.DBF建立一個結(jié)構(gòu)復(fù)合索引文件,其中包括標(biāo)識索引:記錄以專業(yè)升序排列,專業(yè)相同時則按獎學(xué)金降序排列,索引標(biāo)識為ZYJSJ候選索引。USESTUDENTINDEXON專業(yè)+STR(1OOO-獎學(xué)金,7,2)TAGZYJXJCANDIDATEBROWSE(候選索引時,表中不允許有相同關(guān)鍵字值的記錄)d.為STUDENT.DBF建立一個非結(jié)構(gòu)復(fù)合索引文件,其中包括標(biāo)識索引:記錄以學(xué)號升序排列,索引標(biāo)識為XH普通索引,索引文件名為XH1.CDXUSESTUDENTINDEXON學(xué)號TAGXHOFXH1BROWSE索引的使用(1)要使用索引查詢,必須同時打開表與索引文件,(2)一個表可同時打開多個索引文件,同一個復(fù)合索引文件中也可能包含多個索引標(biāo)識,但任何時候只有一個索引文件能起作用,在復(fù)合索引文件中也只有一個索引標(biāo)識能起作用。當(dāng)前起作用的索引文件稱為主控索引文件,當(dāng)前起作用的索引標(biāo)識稱為主控索弓I。索引使用步驟:(1)單索引文件:打開表、打開索引文件(可能多個索引文件)、確定主控索引文件。(2)復(fù)合索引文件:打開表、打開索引文件、確定主控索引文件、確定主控索引。打開和關(guān)閉索引文件(1)索引文件剛建立時,索引文件呈打開狀態(tài)且成為主控索引文件。USESTUDENTINDEXONXHTOXH (XH.IDX成為主控索引文件)或:USESTUDENTINDEXON專業(yè)TAGZY (標(biāo)識索引ZY成為主控索引)打開索引文件命令格式:SETINDEXTO[v索引文件名表〉][ADDITIVE](2)若當(dāng)前只有打開一個索引文件,則本身成為主控索引文件。USESTUDENTSETINDEXTOXH (XH.IDX成為主控索引文件)(3)若當(dāng)前只有打開多個索引文件,則第一個成為主控索引文件。USESTUDENTSETINDEXTOXH,ZY,ZYRQ (XH.IDX成為主控索引文件)(4)當(dāng)表打開時,結(jié)構(gòu)復(fù)合索引文件自動打開,而非結(jié)構(gòu)復(fù)合文件還需SETINDEXTOv非結(jié)構(gòu)復(fù)合文件名〉來打開。USESTUDENT (結(jié)構(gòu)復(fù)合文件自動打開)SETINDEXTOXH1 (打開非結(jié)構(gòu)復(fù)合文件)(5)表關(guān)閉時,索引文件自動關(guān)閉USE (相關(guān)的索引文件自動關(guān)閉)(4)確定主控索引文件或主控索引SETORDERTO[<數(shù)值>I(單索引文件名>I[TAG"索引標(biāo)識>]索引查找定位,?一利用索引文件進(jìn)行查找。由于在索引文件中各個記錄的邏輯位置是索引關(guān)鍵字的值由小到大排列的,因此可以使用二分法(折半法)根據(jù)索引關(guān)鍵字的值進(jìn)行查找。提高查找速度。SEEK〈表達(dá)式)功能:按索引來查找〈表達(dá)式》指定的關(guān)鍵段值??刹檎褻、N、D型字段值,4表達(dá)式2值與索引夫鍵字段回」!如:在STUDENT表中分別索引查找 (1)第一個“金融”的專業(yè)學(xué)生記錄的姓名(2)1981年10月9日出生的學(xué)生姓名。USESTUDENTINDEXON專業(yè)TAG專業(yè)索引SEEK“金融”?姓名INDEXON出生日期TAG出生索引SEEK{*1981/10/09}或SEEKCTOD(“10/09/81”)?姓名刪除索引?deletetag命令DELETETAG〈索引標(biāo)識名1>Q〈索引標(biāo)...從復(fù)合索弓I文件中刪除指定的索弓標(biāo)識。可以使用包含一系列用逗號隔開的索引標(biāo)識名的deletetag命令刪除多個標(biāo)識。DELETETALALL 從復(fù)合索引文件中刪除所有標(biāo)識4.3數(shù)據(jù)庫的基本操作數(shù)據(jù)庫表的關(guān)系a.數(shù)據(jù)庫表間的永久關(guān)系:作為數(shù)據(jù)庫的一部分被保存起來的數(shù)據(jù)庫表之間所建立的關(guān)系,用以保證數(shù)據(jù)庫各表相關(guān)數(shù)據(jù)的一致性,永久關(guān)系只可能存在于數(shù)據(jù)庫表之間,在數(shù)據(jù)庫設(shè)計器中建立永久關(guān)系的作用。(1)在查詢或視圖設(shè)計中自動作為默認(rèn)聯(lián)接條件 (2)作為表單和報表的默認(rèn)臨時關(guān)系(3)用來存儲參照完整性信息b.數(shù)據(jù)庫表間的臨時關(guān)系:臨時關(guān)系的作用是通過主表記錄指針的移動來控制子表記錄指針的移動,用“數(shù)據(jù)工作期”或setrelation命令建立的自由表之間的關(guān)系。臨時關(guān)系和永久關(guān)系臨時關(guān)系永久關(guān)系可以在自由表之間、數(shù)據(jù)庫表之間、自由表與數(shù)據(jù)庫表之間建立只能在數(shù)據(jù)庫表之間建立表之間的關(guān)系隨表的關(guān)閉而解除永久地保存在數(shù)據(jù)庫中用于在打開的2張表之間控制相關(guān)表的訪問用于存儲相關(guān)表之間的參考完整性數(shù)據(jù)庫庫表之間的永久關(guān)系建立(1)永久關(guān)系a.通過索引建立數(shù)據(jù)庫表所特有的一種關(guān)系。b.一對多關(guān)系中,主表必須用主或侯選索引,子表則使用普通索引。c.一對一關(guān)系中,則兩表都必須是主或侯選索引。(2)永久性關(guān)系的建立 在數(shù)據(jù)庫設(shè)計器中永久關(guān)系的設(shè)置右鍵單擊關(guān)系選擇需要的操作:1、刪除關(guān)系2、編輯關(guān)系3、編輯參照完整
溫馨提示
- 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)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 標(biāo)準(zhǔn)汽車租賃合同協(xié)議
- 農(nóng)業(yè)灌溉系統(tǒng)設(shè)計與安裝手冊
- 少年英雄傳記的讀后感
- 無人機(jī)在物流領(lǐng)域的應(yīng)用合作協(xié)議
- 環(huán)境管理體系認(rèn)證服務(wù)合同
- 零售業(yè)行業(yè)-銷售數(shù)據(jù)統(tǒng)計表
- 成長的煩惱故事評析報告
- 小學(xué)語文成語故事解讀
- 西餐原料知識培訓(xùn)課件
- 種子委托生產(chǎn)合同
- 國家基本藥物臨床應(yīng)用指南最完整版
- 急性髓系白血病小講課
- 大氣冬季滑雪旅游宣傳
- 2016-2023年株洲師范高等??茖W(xué)校高職單招(英語/數(shù)學(xué)/語文)筆試歷年參考題庫含答案解析
- 項目成本管控要素清單
- 歌唱二小放牛郎 金巍 女聲合唱譜
- 基層公職人員禁毒知識講座
- 中小學(xué)生綜合實踐基地(學(xué)校)考核指標(biāo)體系評分標(biāo)準(zhǔn)
- 2024深海礦產(chǎn)資源開采系統(tǒng)技術(shù)指南
- 一+《展示國家工程++了解工匠貢獻(xiàn)》(教學(xué)課件)-【中職專用】高二語文精講課堂(高教版2023·職業(yè)模塊)
- 北京長峰醫(yī)院4.18火災(zāi)事故案例分析
評論
0/150
提交評論