雷鋒計(jì)算機(jī)級考復(fù)習(xí)資料_第1頁
雷鋒計(jì)算機(jī)級考復(fù)習(xí)資料_第2頁
雷鋒計(jì)算機(jī)級考復(fù)習(xí)資料_第3頁
雷鋒計(jì)算機(jī)級考復(fù)習(xí)資料_第4頁
雷鋒計(jì)算機(jī)級考復(fù)習(xí)資料_第5頁
已閱讀5頁,還剩141頁未讀, 繼續(xù)免費(fèi)閱讀

下載本文檔

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

文檔簡介

MicrosoftVisualFoxPro6.0

計(jì)算機(jī)級考復(fù)習(xí)資料

計(jì)算機(jī)科學(xué)與技術(shù)學(xué)院

2006.2

第一章數(shù)據(jù)庫系統(tǒng)概述

(-)數(shù)據(jù)庫系統(tǒng)的幾個概念

1、數(shù)據(jù):數(shù)據(jù)是一個廣義的概念。在計(jì)算機(jī)科學(xué)中一切能被計(jì)算機(jī)接收和處理的物理

符號都稱為“數(shù)據(jù)”,如文字、字符、數(shù)字、圖形、圖象、光、電、聲音、色彩等。它們是

存儲在計(jì)算機(jī)媒體上的物理符號的集合。數(shù)據(jù)按性質(zhì)可以分為模擬數(shù)據(jù)和數(shù)字?jǐn)?shù)據(jù)兩大類。

模擬數(shù)據(jù)指在某個區(qū)間內(nèi)連續(xù)變化的值。數(shù)字?jǐn)?shù)據(jù)指離散的值。數(shù)據(jù)也可以按類型分為數(shù)值

型數(shù)據(jù)(如成績、價格、工資)和非數(shù)值型數(shù)據(jù)(如姓名、地址、聲音、圖像)。

2、信息:信息是一個既抽象又復(fù)雜的概念,它是一種消息,是數(shù)據(jù)按有意義的關(guān)聯(lián)排

列的結(jié)果。信息通常由意義和符號組成,以文字或聲音、圖象的形式來表現(xiàn)。從廣義上來看,

信息是對數(shù)據(jù)加工處理后得到的有用知識。信息來源于數(shù)據(jù),數(shù)據(jù)是信息的具體表現(xiàn)形式,

數(shù)據(jù)是物理性的,信息是觀念性的。

【提示】在有些場合并不區(qū)分信息和數(shù)據(jù),信息處理和數(shù)據(jù)處理常常指同一個概念。

3、數(shù)據(jù)處理:把雜亂無章的數(shù)據(jù)加工成為有意義、有價值的數(shù)據(jù)的過程,稱為“數(shù)據(jù)處理”。

數(shù)據(jù)處理的內(nèi)容主要包括:對數(shù)據(jù)的收集、存儲、分類、統(tǒng)計(jì)、查找、傳輸和維護(hù)等。

4、數(shù)據(jù)管理:按照某種形式對原始數(shù)據(jù)進(jìn)行組織、存貯、維護(hù)和使用、對數(shù)據(jù)進(jìn)行輸入、

傳輸和輸出等環(huán)節(jié)稱為“數(shù)據(jù)管理”。

5、數(shù)據(jù)庫(DB):按一定的組織形式存儲在計(jì)算機(jī)介質(zhì)上的、能夠?yàn)槎鄠€用戶共享的、與應(yīng)用

程序相互獨(dú)立的、數(shù)據(jù)之間相互關(guān)聯(lián)的相關(guān)數(shù)據(jù)的集合,稱為“數(shù)據(jù)庫”。數(shù)據(jù)庫在物理上

按一定的組織方式存儲介質(zhì),在邏輯上按一定的模型結(jié)構(gòu)組成一個整體。

6、實(shí)體:指客觀存在的并且可以相互區(qū)別的事物。實(shí)體可以是實(shí)際存在的事物,比如,一

個學(xué)校;也可以是概念性的事物,比如,-次比賽。

7、實(shí)體集:指性質(zhì)相同的同類實(shí)體的集合。比如,所有學(xué)校。

8、屬性與對象:描述客觀事物的實(shí)體,分為“對象”和“屬性”兩大類。如,人、學(xué)校、

醫(yī)院等都屬于對象,而屬性表示對象的某些特征。比如,?個人的屬性有姓名、年齡、文化

程度等;一個學(xué)校的屬性有學(xué)校名、地址、電話、傳真等。當(dāng)給某個特定對象的某個屬性取

一個具體的值時,描述該對象的某個屬性值的符號就是數(shù)據(jù)。

9、關(guān)鍵字:能夠唯一識別實(shí)體集合中每個實(shí)體屬性的標(biāo)識。例如,學(xué)校的校名就是學(xué)校單

位的關(guān)鍵字。

10、數(shù)據(jù)庫管理系統(tǒng)(DBMS):是對數(shù)據(jù)庫中資源進(jìn)行管理和控制的系統(tǒng)軟件,是用戶與數(shù)據(jù)

庫的接口,提供用戶對數(shù)據(jù)庫進(jìn)行操作的各種命令。

11、數(shù)據(jù)庫系統(tǒng)(DBS):是指引入了數(shù)據(jù)庫技術(shù)、實(shí)現(xiàn)有組織、動態(tài)地儲存大量關(guān)聯(lián)數(shù)據(jù),

方便用戶訪問的計(jì)算機(jī)系統(tǒng)。數(shù)據(jù)庫系統(tǒng)由數(shù)據(jù)庫、數(shù)據(jù)庫管理系統(tǒng)和應(yīng)用軟件構(gòu)成。

12、數(shù)據(jù)庫應(yīng)用系統(tǒng)(DBAS):在數(shù)據(jù)庫管理系統(tǒng)(DBMS)的支持下,為解決實(shí)際應(yīng)用問題而開

發(fā)的數(shù)據(jù)庫應(yīng)用軟件,通常有數(shù)據(jù)庫和應(yīng)用程序組成。

(二)數(shù)據(jù)管理技術(shù)的發(fā)展

數(shù)據(jù)管理技術(shù)的發(fā)展經(jīng)歷了三個階段:

1、人工管理階段

2、文件管理階段

3、數(shù)據(jù)庫系統(tǒng)階段”。

(三)數(shù)據(jù)模型

數(shù)據(jù)模型指數(shù)據(jù)庫的組織形式,是對數(shù)據(jù)庫中數(shù)據(jù)之間進(jìn)行聯(lián)系的描述。數(shù)據(jù)模型有三種:

1、層次模型:以樹型結(jié)構(gòu)表示實(shí)體與實(shí)體之間的聯(lián)系。

2、網(wǎng)狀模型:以網(wǎng)狀結(jié)構(gòu)表示實(shí)體與實(shí)體之間的聯(lián)系。

3、關(guān)系模型:以關(guān)系(二維表)形式表示實(shí)體與實(shí)體之間的聯(lián)系。這種“關(guān)系”以文件形

式存儲在磁盤上,稱為“數(shù)據(jù)表文件”,其文件擴(kuò)展名為.DBF。在“二維表”中,表頭稱為

“表結(jié)構(gòu)”;表格的每一列稱為一個“字段”,它是標(biāo)識實(shí)體屬性的符號;各字段名構(gòu)成了

關(guān)系的“型”,型是相對穩(wěn)定的,而表格其余行的具體內(nèi)容構(gòu)成了關(guān)系的“值”,值是動態(tài)

變化的:字段的取值范圍,稱為該字段的“域”;每一行稱為“一條記錄”,它是字段值的

集合;每一行有一個序號,稱為“記錄號”;

關(guān)系數(shù)據(jù)庫具有以下特點(diǎn):

1、一個關(guān)系中有唯一確定的字段名,不可重名。

2、關(guān)系的每一字段具有相同類型的數(shù)據(jù)。

3、關(guān)系的每一字段是不可分的基本數(shù)據(jù)項(xiàng)。

4、字段的先后次序,不影響記錄的完整性。

5、記錄的先后次序,不影響數(shù)據(jù)庫文件內(nèi)容的完整性。

在關(guān)系數(shù)據(jù)庫中具有相同屬性的記錄的集合構(gòu)成一個“數(shù)據(jù)表”;?個或多個數(shù)據(jù)表的匯集

組成一個“數(shù)據(jù)庫”。隸屬于某個數(shù)據(jù)庫的數(shù)據(jù)表叫“相關(guān)表或數(shù)據(jù)表”,獨(dú)立存在于任何

數(shù)據(jù)庫之外的表叫“自由表”。

(四)關(guān)系運(yùn)算

1、選擇運(yùn)算(SELECTION):從給定的條件中選取滿足條件的記錄,即從數(shù)據(jù)表中進(jìn)行選行操

作。選擇運(yùn)算提供了一種“橫向分割關(guān)系”的手段。

2、投影運(yùn)算(PROJECTION):從給定關(guān)系的所有字段中按某種順序選取指定的字段組,即從

數(shù)據(jù)表中進(jìn)行選列操作。投影運(yùn)算提供了一種“縱向分割關(guān)系”手段。

2

3、連接運(yùn)算(JOIN):根據(jù)給定的條件在兩個或兩個以上的關(guān)系中選取部分字段和部分記錄

合并生成一個新的關(guān)系。

(五)數(shù)據(jù)庫系統(tǒng)的分類

根據(jù)數(shù)據(jù)庫中數(shù)據(jù)用戶的多少,分為:

1、單用戶數(shù)據(jù)庫:早期的數(shù)據(jù)庫都是單用戶系統(tǒng)。

2、多用戶數(shù)據(jù)庫:VisualFoxPro是一種多用戶數(shù)據(jù)庫系統(tǒng)。Foxbase、Foxpro等也是多

用戶數(shù)據(jù)庫系統(tǒng)。多用戶數(shù)據(jù)庫的關(guān)鍵是保證數(shù)據(jù)“并發(fā)存取”的正確執(zhí)行,即允許多個用

戶在網(wǎng)絡(luò)的多個節(jié)點(diǎn)上同時使用數(shù)據(jù)庫信息。

根據(jù)數(shù)據(jù)的存放地點(diǎn),分為:

1、分布式數(shù)據(jù)庫:按“就近存放,就近使用”的原則,將數(shù)據(jù)庫中的數(shù)據(jù)分別存放在網(wǎng)絡(luò)

的多個節(jié)點(diǎn)上,通過通信線路彼此連接,網(wǎng)絡(luò)用戶在最近的節(jié)點(diǎn)上快速、準(zhǔn)確地獲取信息,

因而避免了所有用戶集中訪問數(shù)據(jù)庫而造成的網(wǎng)絡(luò)數(shù)據(jù)傳輸量大,傳輸速度減慢,提高了數(shù)

據(jù)訪問效率。

2、集中式數(shù)據(jù)庫:將數(shù)據(jù)集中在一個數(shù)據(jù)庫中,所有用戶在存取和訪問數(shù)據(jù)時,都要訪問

這個數(shù)據(jù)庫。其特點(diǎn)是訪問方便、通信量大,但速度慢。

根據(jù)數(shù)據(jù)處理的性質(zhì),有智能數(shù)據(jù)庫:傳統(tǒng)數(shù)據(jù)庫只能儲存常規(guī)數(shù)據(jù)(如文字、數(shù)字、圖形、

圖象、聲音等),而智能數(shù)據(jù)庫除了儲存常規(guī)數(shù)據(jù)外,還儲存了邏輯推理規(guī)則。智能數(shù)據(jù)庫

將儲存的常規(guī)數(shù)據(jù)作為推理對象,在需要時利用常規(guī)數(shù)據(jù)作出邏輯推理和邏輯判斷。

第二章VisualFoxPro6.0系統(tǒng)的基本知識

(一)VisualFoxPro6.0的主要特點(diǎn)

1、有500多條命令,200多個函數(shù),8種SQL型命令,其功能強(qiáng)大,使用靈活。

2、使用“向?qū)А?、“生成器”和“設(shè)計(jì)器”等界面操作工具。

3、”項(xiàng)目管理器”方便用戶集中管理數(shù)據(jù)、文檔、類庫、源代碼等資源。

4、在支持面向結(jié)構(gòu)的程序設(shè)計(jì)方式(SP)的同時,提供面向?qū)ο蟮目梢暬绦蛟O(shè)計(jì)方式(OOP)。

5、通過“對象鏈接與嵌入(OLE)”技術(shù)可以與WORD與EXCEL等微軟的其它應(yīng)用軟件共享

數(shù)據(jù),實(shí)現(xiàn)應(yīng)用集成。

6、界面的下拉式菜單、圖形按鈕,設(shè)計(jì)器的工具欄和彈出式快捷菜單,方便用戶采用多種

方法調(diào)用各種命令。

7,既可用于單機(jī)環(huán)境,也可用于網(wǎng)絡(luò)環(huán)境;既可以訪問本地計(jì)算機(jī),也可以訪問和使用遠(yuǎn)

程視圖。

(―)VisualFoxPro6.0的性能指標(biāo)

1、表文件的最大記錄數(shù):10億條:最大字段數(shù):255個:同時打開表文件的最大數(shù)255個。

3

2、一條記錄的最多字符數(shù):65500個。

3、數(shù)據(jù)庫表的字段名最大長度:128個字符;自由表的字段名最大長度:10個字符;字符

型字段的最大寬度254個;數(shù)值型字段的最大寬度20個。

4、程序文件中命令行最大字符數(shù)8192個。

5、內(nèi)存變量的最大數(shù)目:65500個;使用的數(shù)組最大數(shù)目:65500個;每個數(shù)組中數(shù)組元素

的最大書數(shù)目:65500個。

6、同時打開“瀏覽”窗口的最大數(shù)目:255個。

(三)VisualFoxPro6.0的的界面組成

VisualFoxPro采用圖形用戶界面,使用窗口(WINDOWS)、圖標(biāo)(ICONS)、菜單(MENUS)與

對話框技術(shù),用戶主要通過指點(diǎn)式輸入設(shè)備(POINTINGDEVICE)鼠標(biāo)進(jìn)行操作。VisualFoxPro

界面又稱為“WIMP”界面。

菜單:VisualFoxPro主要使用下拉式菜單和彈出式菜單。

選擇菜單的兩種方式:

(D使用鼠標(biāo):

(2)使用鍵盤:ALT+菜單標(biāo)題中的下劃線字母,代表該菜單的訪問鍵,如ALT+F,表示打開文

件菜單項(xiàng)。CTRL+字母,代表該菜單的快捷鍵,例如CTRL+C,表示復(fù)制。

4.對話框:主要由命令按鈕和矩形框兩部分組成。命令按鈕代表某一種操作。矩形框分為:

文本框、選擇框、列表框、組合框和微調(diào)控件。

(四)VisualFoxPro的輔助設(shè)計(jì)工具

1、向?qū)В菏且粋€快速生成各種用戶文件的設(shè)計(jì)工具。用戶只需根據(jù)向?qū)崾疽龑?dǎo)就可以設(shè)

計(jì)出相應(yīng)的文件。向?qū)У淖畲筇攸c(diǎn)是“快”,不僅操作簡便,而且得出結(jié)果也迅速。

2、設(shè)計(jì)器:設(shè)計(jì)器可以快速地建立或修改數(shù)據(jù)表、表單、數(shù)據(jù)庫以及查詢和報(bào)表等。根據(jù)

不同的功能,常用的設(shè)計(jì)器有:表設(shè)計(jì)器、查詢設(shè)計(jì)器、查詢和視圖設(shè)計(jì)器、數(shù)據(jù)庫設(shè)計(jì)器、

菜單設(shè)計(jì)器等。

3、生成器:生成器幫助用戶對特定的控件設(shè)置屬性,或者組合子句創(chuàng)建特定的表達(dá)式。生

成器由一個或多個提供一系列簡單選項(xiàng)的對話框組成。常用的生成器有表格生成器、列表框

生成器、組合框生成器、復(fù)選框生成器、命令按鈕組生成器和選項(xiàng)按鈕組生成器等。

(五)項(xiàng)目管理器

項(xiàng)目是文件、數(shù)據(jù)、文檔和VisualFoxPro對象的集合,項(xiàng)目文件以.PJX擴(kuò)展名保存。

(六)VisualFoxPro6.0的文件類型

數(shù)據(jù)表文件.DBF數(shù)據(jù)表備注文件.FPT

查詢文件.QPR表單文件.SCX

4

報(bào)表文件.FRX標(biāo)簽文件.LBX

項(xiàng)目文件.PJX數(shù)據(jù)庫文件.DBC

復(fù)合索引文件.CDX內(nèi)存變量文件.MEM

菜單文件.MNX程序文件.PRG

文本文件.TXT

(七)工作方式與命令格式

1、工作方式

(1)交互方式

(2)程序方式

(3)菜單操作方式

(4)工具操作方式

2、命令格式

VisualFoxPro的命令山命令動詞和命令子句構(gòu)成:

命令動詞[范圍][FIELDS〈字段名>][FORC條件》/WHILEM條件>][OFF]

命令動詞:表示計(jì)算機(jī)要完成的某種操作。

命令子句:是命令操作對象、操作結(jié)果和操作條件。

范圍:有四種選擇:

ALL對全部記錄進(jìn)行操作。

NEXTN對從當(dāng)前記錄開始的N個記錄進(jìn)行操作。

RECORDN只對記錄號為N的一個記錄進(jìn)行操作。

REST對從當(dāng)前記錄開始到最后一個記錄進(jìn)行操作。

FOR〈條件>:對條件為真的記錄進(jìn)行操作。

WHILE〈條件》:從當(dāng)前記錄開始順序操作,直到條件為假時停止操作。若命令中FOR和WHILE

同時出現(xiàn),則WHILE優(yōu)先。

OFF:顯示記錄時不顯示記錄號。

第三章VisualFoxPro的數(shù)學(xué)基礎(chǔ)

(一)數(shù)據(jù)類型:字符型(C)、數(shù)值型(N)、浮動型(F)、整數(shù)型(I)、雙精度型(B)、

邏輯型(L)、貨幣型(Y)、備注字符型(M)、通用型(G)o

(二)常量:指在程序執(zhí)行過程中始終保持不變的數(shù)值或字符串。常量有數(shù)值型、字符型、

日期型、日期時間型、邏輯型和貨幣型等多種類型。

(三)變量:指在程序或命令執(zhí)行過程中可以發(fā)生變化的量。變量包括:內(nèi)存變量、字段變

量和系統(tǒng)變量3種。

5

1、內(nèi)存變量(又分為:簡單內(nèi)存變量和數(shù)組內(nèi)存變量):內(nèi)存變量是一種存儲單元,它獨(dú)

立于數(shù)據(jù)表存在,是一種單值變量,用來存放程序執(zhí)行過程或數(shù)據(jù)處理過程中的輸入量、中

間數(shù)據(jù)和輸出量。內(nèi)存變量的類型取決于內(nèi)存變量中存放的數(shù)據(jù)類型。使用內(nèi)存變量必須先

定義,后使用。關(guān)機(jī)斷電后,內(nèi)存變量值消失掉,但可將它預(yù)先保存在內(nèi)存變量文件中(.MEM)。

內(nèi)存變量的類型有:數(shù)值型(N)、字符型(C)、邏輯型(L)、日期型(D)、日期時間型(T)、

屏幕型(S存儲當(dāng)前屏幕數(shù)據(jù))等。

C、數(shù)組變量

數(shù)組:(又叫卜標(biāo)變量)是一組數(shù)組名相同,下標(biāo)值不同的內(nèi)存變量。數(shù)組中的每一項(xiàng)叫一個

“數(shù)組元素”,如:CJ(1),CJ⑵,CJ⑶,……CJ(30)共有30個數(shù)組元素。數(shù)組元素可以

作為簡單變量來處理。

D、關(guān)于數(shù)組的幾點(diǎn)規(guī)定:

(1)使用數(shù)組要先定義后使用。

(2)數(shù)組名的取名規(guī)則同簡單變量。

(3)數(shù)組的下標(biāo)必須用括號括起來,如A(12),A(2,3);下標(biāo)值20,下標(biāo)值可以是常數(shù)、

簡單變量或N型表達(dá)式,下標(biāo)的下界為1。如果下標(biāo)值為非整數(shù),系統(tǒng)自動取整。

(4)數(shù)組中的數(shù)組元素可以是N型、C型、D型、L型數(shù)據(jù)。VisualFoxPro允許同一一數(shù)組

的元素取不同類型。在定義數(shù)組時,各數(shù)組元素的初值為.F.。

E、一維數(shù)組及其說明語句

命令格式:DIMENSION數(shù)組名1(N型表達(dá)式1)[,數(shù)組名2(N型表達(dá)式2)……]

[例]DIMEAM(10),BM(4,5)其中:AM是一維數(shù)組,含10個元素。BM是二維數(shù)組,含20

個元素(4*5=20)。

說明:

(1)DIMENSION語句是說明型非執(zhí)行語句,它放在程序開頭位置。

(2)用DIMENSION語句定義過的數(shù)組將在內(nèi)存中占據(jù)一片連續(xù)的存儲單元。

(3)任何數(shù)組都必須先定義后使用。

(4)個數(shù)組只能定義一次,除非將其刪除后,重新定義,否則重復(fù)定義出錯。

例如:

1=1

DOWHILEI<=3

DIMEAX(2)出錯!數(shù)組重復(fù)定義了。

1=1+1

ENDDO

6

(5)下標(biāo)值必須在DIMENSION語句定義的界內(nèi),否則下標(biāo)越界。

例如:

DIMEAX(2)

1=1

DOWHILEI<=3

AX(1)=1出錯!數(shù)組下標(biāo)越界了。

1=1+1

ENDDO

F、二維數(shù)組及其說明語句

命令格式:DIMEN數(shù)組名1(N型表達(dá)式1,N型表達(dá)式2)[,數(shù)組名2(N型表達(dá)式1,N型表

達(dá)式2),……]

二維數(shù)組中數(shù)據(jù)在內(nèi)存的存儲順序:先按行下標(biāo)從小到大依次排列,再按列下標(biāo)從小到大依

次排列。

[例]DIMEW(2,5),T(5,8)W數(shù)組共有2*5個數(shù)組元素,T數(shù)組共有5*8個數(shù)組元素。

G、數(shù)組元素的運(yùn)用

(1)向數(shù)組元素賦值

DIMEAM(4),BM(2,2)

STORE20TOAM(2),AM(3),BM(1,2),BM(2,1)

MB(2,2)=.T.

(2)數(shù)組元素的計(jì)算與賦值

DIMEAM(5)

STORE2TOAM

?AM(1)+AM(2)+AM(3)*AM(4)

H、變量的作用域:

1、公共變量(PUBLIC):具有全局可見性,可以在任何程序?qū)邮褂没蚋淖兤渥兞恐档囊活?/p>

變量。

2、本地變量(LOCAL):是僅限于在當(dāng)前程序內(nèi)部使用或改變其變量值,不能在高層或低層

程序中使用的變量。程序運(yùn)行結(jié)束時,本地變量被釋放掉。

3、私有變量(PRIVATE):是在當(dāng)前程序以及低層程序中可以使用或改變其變量值的變量。

但不影響高層程序變量的定義。在程序中不加作用域的變量,系統(tǒng)默認(rèn)為私有變量。

(四)字段變量:字段變量是隨數(shù)據(jù)表的建立而存在的一類變量,是構(gòu)成數(shù)據(jù)庫文件的基本

數(shù)據(jù)元素,是一種多值變量。關(guān)機(jī)斷電后,字段變量值不消失,保存在表文件中。

7

字段變量的類型有:數(shù)字型、字符型、日期型和日期時間型、邏輯型、備注型和通用型.

變量既可作內(nèi)存變量,也可作字段變量。如果內(nèi)存變量與字段變量同名時,必須在內(nèi)存變量

名前加“M->”,即寫成:M->變量名,以示區(qū)別。

(五)系統(tǒng)變量:VisualFoxPro自動創(chuàng)建和命名的變量。系統(tǒng)內(nèi)存變量以下劃線開頭,分

別用于控制外部設(shè)備、屏幕輸出格式、處理計(jì)算器、H歷、剪貼板等信息。

(六)運(yùn)算符:有5種運(yùn)算符:算術(shù)運(yùn)算符、關(guān)系運(yùn)算符、邏輯運(yùn)算符、字符運(yùn)算符、日期

與H期時間運(yùn)算符。

(七)表達(dá)式:有5種表達(dá)式:數(shù)值型表達(dá)式、字符型表達(dá)式、關(guān)系型表達(dá)式、邏輯型表達(dá)

式、II期型和II期時間型表達(dá)式。

(八)常用函數(shù)

函數(shù)是一個預(yù)先編制好的計(jì)算模塊,可供VisualFoxPro程序在任何地方調(diào)用。

函數(shù)由函數(shù)名、參數(shù)和函數(shù)值3個要素組成。其中:

1、函數(shù)名:起標(biāo)識作用;

2、參數(shù):是函數(shù)的自變量,書寫在括號內(nèi),當(dāng)使用多重函數(shù)嵌套時,括號要成對使用;

3、函數(shù)值:函數(shù)運(yùn)算后返回的值,稱為函數(shù)值。

VisualFoxPro的函數(shù)分為標(biāo)準(zhǔn)函數(shù)和用戶自定義函數(shù)。

標(biāo)準(zhǔn)函數(shù):是VISUALFOXPRO提供的內(nèi)部函數(shù),用戶只需寫出函數(shù)名和自變量即可直接調(diào)用。

用戶自定義函數(shù):是用戶自己定義的函數(shù)。和標(biāo)準(zhǔn)函數(shù)一樣,自定義函數(shù)也返回一個函數(shù)值。

由于自變量具有確定的數(shù)據(jù)類型,因此,函數(shù)返回的值也有確定的數(shù)據(jù)類型。根據(jù)函數(shù)的功

能不同,函數(shù)可以分為5類。

1、數(shù)值型函數(shù)

2、字符型函數(shù)

3、日期處理函數(shù)

4、測試邏輯型函數(shù)

5、其它函數(shù)

第四章表的基本操作

數(shù)據(jù)表是一組相關(guān)聯(lián)的數(shù)據(jù)按多行、多列組成的二維表格,稱為表(TABLE)。每個數(shù)據(jù)

表都有一個表名,-個數(shù)據(jù)庫就是由一個或多個數(shù)據(jù)表構(gòu)成的,在數(shù)據(jù)庫中的各個數(shù)據(jù)表之

間可以存在某種關(guān)系。

一個數(shù)據(jù)表由“表結(jié)構(gòu)”和“數(shù)據(jù)”兩部分構(gòu)成。

(-)建立表結(jié)構(gòu)可以有以下方式:

8

1、界面操作方式:打開文件菜單f新建子菜單,顯示新建對話框后一表f新建文件;在創(chuàng)

建對話框中輸入表名(例如:SB.DBF),將其保存在約定文件夾中(工具菜單f選項(xiàng)f文件

位置);使用表設(shè)計(jì)器設(shè)定各字段屬性值。

2、命令執(zhí)行方式:例如,在命令窗口打入命令:CREATEA:\SB

(二)輸入表記錄

1、字段名右邊的“光帶”表示該字段的寬度。

2、當(dāng)光標(biāo)停在M型或G型字段時,直接按回車表示不輸入數(shù)據(jù),光標(biāo)自動移到下一個字段;

如果需要輸入M型或G型數(shù)據(jù),則按'HOME或'PGDN或用鼠標(biāo)雙擊該字段進(jìn)入字段的編輯

窗口輸入數(shù)據(jù)。

VisualFoxPro除了能處理數(shù)字、文本外,還能處理圖形、圖象、聲音等多媒體數(shù)據(jù)。通

用型字段用于儲存多媒體數(shù)據(jù),儲存由其他應(yīng)用軟件建立的一個電子表格、一個字處理器的

文本、圖片等OLE對象。通用型字段的內(nèi)容存儲在.FPT文件中,在記錄顯示窗口中,備注

型字段數(shù)據(jù)區(qū)標(biāo)識MEMO,通用型字段標(biāo)識GEN,存儲過內(nèi)容后GEN的第一個字符變?yōu)榇髮慓。

(三)記錄指針、工作區(qū)及別名

1、記錄指針:記錄指針是?個存儲單元,存放記錄在數(shù)據(jù)文件中的順序號(即記錄號)。

當(dāng)打開數(shù)據(jù)表文件時,記錄指針總是指向第一條記錄的位置。

2、工作區(qū):VisualFoxPro系統(tǒng)為當(dāng)前正在使用的數(shù)據(jù)表文件開辟一個內(nèi)存區(qū)。Visual

FoxPro提供了32767個工作區(qū),可以同時打開和使用多個數(shù)據(jù)表文件,工作區(qū)號分別為

1-32767。在在一個工作區(qū)內(nèi)只能打開一個表,各個工作區(qū)彼此獨(dú)立,數(shù)據(jù)互不干擾。在任

何時刻,操作對象只能占用一個工作區(qū),這個工作區(qū)稱為“當(dāng)前工作區(qū)”。啟動VisualFoxPro

后,系統(tǒng)默認(rèn)1號工作區(qū)為當(dāng)前工作區(qū)。

3、別名:對打開的表文件可以為其取一個別名。別名代表工作區(qū)號或數(shù)據(jù)表名。系統(tǒng)定義

前10個工作區(qū)的別名分別為:A、B、C、……EJo如果在當(dāng)前工作區(qū)調(diào)用其它工作區(qū)中的

數(shù)據(jù)表字段時,必須使用別名調(diào)用格式:工作區(qū)號->字段名或:別名->字段名

(四)打開與關(guān)閉表

1、使用USE命令打開表

命令格式:USE[〈文件名》]

(1)打開的表中如果含有M型或G型字段,則與之相關(guān)的.FPT文件也隨之打開,如果與表同

名的備注文件不存在(比如,被刪除掉),系統(tǒng)給出錯信息,并且該表將不能被打開。

(2)打開表時,文件記錄指針總是指向第條記錄。

2、使用界面操作方式打開表

(D利用“文件”菜單一選擇“打開”一選擇表名。

9

注意:如果要修改打開表結(jié)構(gòu)或表記錄,應(yīng)選擇打開對話框中“獨(dú)占”選項(xiàng),否則,該數(shù)據(jù)

文件不可修改。

3、關(guān)閉表

(l)USE只關(guān)閉當(dāng)前工作區(qū)表

(2)CLERAALL關(guān)閉所有打開的表,并釋放內(nèi)存變量。

(3)CLOSEALL關(guān)閉所有打開的數(shù)據(jù)庫中的表、表單設(shè)計(jì)器、查詢設(shè)計(jì)器、報(bào)表設(shè)計(jì)器

和項(xiàng)目設(shè)計(jì)器等,但不釋放內(nèi)存。

(4)CLOSEDATABASE[ALL]關(guān)閉指定數(shù)據(jù)庫中的表利自由表。

(5)CLOSETABLES[ALL]關(guān)閉當(dāng)前工作區(qū)的自由表,但不關(guān)閉數(shù)據(jù)庫中的表。

(6)QUIT關(guān)閉所有的數(shù)據(jù)庫中的表、表單設(shè)計(jì)器、查詢設(shè)計(jì)器、報(bào)表設(shè)計(jì)器和項(xiàng)目設(shè)計(jì)

器等后退出VisualFoxProo

(7)也可以利用界面操作方式關(guān)閉表。

(五)表結(jié)構(gòu)的修改

(D利用表設(shè)計(jì)器修改表結(jié)構(gòu):打開表,利用“顯示”菜單中的表設(shè)計(jì)器可以修改表結(jié)構(gòu)。

修改后的表結(jié)構(gòu)按中或“確定”使其為永久性更改,按ESC鍵或“取消”放棄結(jié)構(gòu)更改。

⑵利用命令修改表結(jié)構(gòu):MODIFYSTRUCTURE

(3)利用表向?qū)薷谋斫Y(jié)構(gòu):

修改表結(jié)構(gòu)時,應(yīng)注意幾個問題:

1、修改某字段的類型,原數(shù)據(jù)信息將全部丟失;減少某字段寬度,原數(shù)據(jù)中超寬的部分將

丟失;刪除某字段后,原數(shù)據(jù)信息將全部丟失。

2、新增加的字段數(shù)據(jù)全部為空。

3、修改表的結(jié)構(gòu)后,將產(chǎn)生一個擴(kuò)展名為.BAK的備份文件。

(六)表數(shù)據(jù)的修改

(D利用界面操作方式瀏覽記錄:

(2)利用命令方式瀏覽記錄

BROWSE

(3)利用命令方式修改記錄

CHANG或EDIT

(4)利用一窗兩區(qū)修改記錄:拖動瀏覽窗口左下角的“窗口分割器”,可以將窗口分為兩個

區(qū)。用戶可以在兩個區(qū)內(nèi)對照修改表數(shù)據(jù)。光標(biāo)所在的區(qū)為活動分區(qū),當(dāng)活動分區(qū)的數(shù)據(jù)修

改后,另一分區(qū)的數(shù)據(jù)也隨之改變。

(5)在瀏覽窗口追加與刪除記錄

10

瀏覽窗口命令BROWE具有瀏覽、修改、追加、刪除等多種功能。

追加:追加分為追加方式、追加新記錄和追加記錄。

1)追加方式,可以在表的末尾連續(xù)追加多條記錄;

2)追加新記錄,可以在表的末尾追加一條記錄(命令:APPEND);

3)追加記錄,可以從其它文件向當(dāng)前表追加批記錄(命令:APPENDFROM)。

刪除:刪除記錄分兩步進(jìn)行,先邏輯刪除,再物理刪除。

1)邏輯刪除:給欲刪除記錄打上刪除標(biāo)記(命令:DELETE),但被邏輯刪除的記錄并沒有真

正從表中清除,它們?nèi)匀徽加性瓉淼挠涗浳恢?,可用恢?fù)命令去掉刪除標(biāo)記。

2)物理刪除:將有刪除標(biāo)記的記錄從表中徹底刪除(命令:PACK),它不再占有表記錄位置,

且不可恢復(fù)。

(七)數(shù)據(jù)文件的文本格式概念

數(shù)據(jù)文件擴(kuò)展名為.TXT。數(shù)據(jù)文件有兩種格式:

1、標(biāo)準(zhǔn)格式:每個記錄等長,不同記錄中相同數(shù)據(jù)項(xiàng)也等長,記錄之間用回車符分隔,標(biāo)準(zhǔn)

格式的數(shù)據(jù)無定界符,數(shù)據(jù)之間無分隔符,用SDF表示標(biāo)準(zhǔn)格式,

2、非標(biāo)準(zhǔn)格式:每個記錄不等長,不同記錄中相同數(shù)據(jù)項(xiàng)也不等長,記錄之間用回車符分

隔,數(shù)據(jù)項(xiàng)之間有分隔符。常用的分隔符是逗號。用DELIMITED表示非標(biāo)準(zhǔn)格式。

(A)表與表結(jié)構(gòu)的復(fù)制

1、復(fù)制任何文件

命令:COPYFILE〈文件名1>TO(文件名2>

(1)若〈文件名1〉是表文件,則該表文件必須處于關(guān)閉狀態(tài)。

(2)〈文件名1〉和〈文件名2>均可使用通配符。

2、從一個表復(fù)制得到另一個表或其它文件

命令:COPYTO〈文件名>[范圍][FOR/WHILE條件][FIELDS字段名/FIELDSLIKE通配

字段名/FIELDSEXCEPT通配字段名][[TYPE][DELIMITED[WITH〈定界符)/SDF/XLS]]

[例]將“XSCJ”姓名、性別、平均分3個字段復(fù)制到“XSPJ.DBF”。

USEXSCJ

COPYTOXSPJFIELDS姓名,性別,平均分

USEXSPJ

[例]將“XSCJ”中的男生學(xué)號、姓名、微機(jī)基礎(chǔ)3個字段和“XSDA”中的該男生的獎懲情況

均復(fù)制到XSNX.DBF中。

SELE1

USEXSCJ

11

SELE2

USEXSDA

SELE1

COPYTOXSNXFIELDS學(xué)號,姓名,微機(jī)基礎(chǔ),B->獎懲情況FOR學(xué)號=B->學(xué)號

SELE3

USEXSNX

[例]將“XSCJ”中的記錄復(fù)制得到文本文件。

USEXSCJ

COPYTOXSCJ-BZSDF

TYPEXSCJ-BZ.TXT

COPYTOXSCJ-FBDELI

TYPEXSCJ-FB.TXT

3、表結(jié)構(gòu)的復(fù)制

命令:COPYSTRUCTURETO〈文件名>[FIELDS字段名表]

例如:SELE1

USEXSCJ

SELE2

USEXSDA

COPYSTRUTOXSNXFIELDS學(xué)號,姓名,A->微機(jī)基礎(chǔ),A->數(shù)據(jù)庫

命令執(zhí)行后,新表名中只有表結(jié)構(gòu),沒有庫記錄。

4、表結(jié)構(gòu)的顯示

(1)命令執(zhí)行方式:LIST/DISPLAYSTRUCTURE[TOPRINT]

(2)界面操作方式

5、表結(jié)構(gòu)的修改

A、用命令執(zhí)行方式:MODIFYSTRUCTURE<表文件名〉

(1)修改表的結(jié)構(gòu)后,將產(chǎn)生一個擴(kuò)展名為.BAK的備份文件。

(2)當(dāng)表中沒有記錄時,結(jié)構(gòu)可以任意修改;當(dāng)表中有記錄時,修改某字段的類型,原數(shù)

據(jù)信息將全部丟失;減少某字段寬度,原數(shù)據(jù)中超寬的部分將丟失;刪除某字段后,原數(shù)據(jù)

信息將全部丟失。

(3)新增加的字段數(shù)據(jù)全部為空(C型為空串;N值型為0:I)期型為“//”;L輯型為.F.;

M注型為空串)。

B、用界面操作方式:

12

(l)USE〈表名〉;

⑵打開“顯示”菜單,選擇“表設(shè)計(jì)器”。

(九)記錄定位

當(dāng)用USE命令打開表文件時,記錄指針總是指向第一條記錄。如果需要對指定的記錄進(jìn)行添

加、修改、刪除等操作時,必須將記錄指針移向指定記錄,這一操作叫做“記錄定位”。記

錄定位分絕對定位與相對定位。

1、絕對定位:[GOTO/GO]<N>或:[GOTO/GO]TOP/BOTTOM

2、相對定位:SKIPEN]

(l)N>0時,指針向下移動N個位置;

(2)N<0時,指針向上移動N個位置;

⑶省略N時,指針向下移動一個位置。

注意:區(qū)別文件頭(BOF)、文件尾(EOF)、記錄首(TOP)、記錄尾(BOTTOM)

TOP=BOF+1

EOF=BOTTOM+1

(十)表記錄的插入與追加

1、插入新記錄:INSERT[BEFORE][BLANK]

[例]在“XSCJ.DBF”中第2號記錄前插人一條空記錄;在原來2號記錄后插入下列記錄:

961011037鄭軍.T.7584927570

USEXSCJ

GO2絕對定位到2號記錄

INSERTBEFOREBLANK在2記錄前插入一個空記錄

G03絕對定位到3號記錄,即原來的2號記錄

INSERT插入新記錄

2、追加新記錄:無論表文件中是否有記錄,都可以在表尾部追加新記錄。

1)INSERT-SQL命令

格式:INSERTINTO表名[(字段名1[,字段名2,……])]VALUES(表達(dá)式1[,表達(dá)式2,……])

功能:在表尾追加一個新記錄,并直接饋入記錄數(shù)據(jù)。

[例]INSERTINTOSB(編號,名稱,啟用日期,價格,主要設(shè)備,備注)VALUES(“100T打

印機(jī)”,「1997/08/15},5000.00,.F.,“調(diào)撥”)

可以將數(shù)組或內(nèi)存變量的值填入記錄中:格式:INSERTINTO表名FROMARRAY數(shù)組名/FROM

內(nèi)存變量

例如:

13

DIMEASD(5)

ASD(l)="98129123”

ASD(2)="李林"

ASD(3)=.T.

ASD(4)=79

ASD(5)=81

INSERTINTOXSCJFROMARRAYASD

2)APPEND命令:APPEND[BLANK]

⑴選擇[BLANK],則向表尾部追加一條空記錄;省略[BLANK],可以追加若干條記錄,或修

改原字段值。

(2)該操作也可以用界面操作方式:選擇表菜單,再選擇追加新記錄命令。

(3)該操作也可以直接用鍵盤操作命令:X

3)APPENDFROM命令

APPENDFROM〈文件名》[FIELDS〈字段名表》][FOR<條件>][[TYPE][DELIMITED[WITH〈定界

符〉/WITHBLANK/WITHTAB]/SDF/XLS]]

[例]將SB2.DBF中記錄的編號、名稱字段追加到SB3.DBF尾。

USESB3

APPENDFROMSB2FIELDS編號,名稱

說明:該操作用界面操作方式:選擇表菜單,再選擇追加記錄命令。

[例]將XSCJ-WBB.TXT記錄以標(biāo)準(zhǔn)數(shù)據(jù)格式添加到XSCJ.DBF尾。

USEXSCJ

APPENDFROMXSCJ-WBBSDF

(十一)表記錄的刪除與恢復(fù)

1、邏輯刪除:DELETE[范圍][FOR/WHILE條件]

若省略所有選擇項(xiàng),則只給當(dāng)前記錄作刪除標(biāo)記。

[例]給“XSCJ”庫中的最后兩條記錄作刪除標(biāo)記。

USEXSCJ

GOBOTTOM

DELETE

SKIP-1

DELETE

DELETEALLFOR平均分<60

14

說明:該操作也可以用界面操作方式:選擇表菜單,再選擇刪除記錄命令。

2、恢復(fù)邏輯刪除記錄:RECALL[范圍][FOR/WHILE條件]

說明:省略所有選擇項(xiàng),則只恢復(fù)當(dāng)前記錄。

USEXSCJ

GOBOTTOM

RECALL

RECALLALLFOR性別AND英語>=60

RECALLALLFORLEFT(學(xué)號,2)=“99”

說明:可用界面操作方式:選擇表菜單,再選擇恢復(fù)記錄命令。

3.物理刪除記錄:PACK

USEXSCJ

DELETEALL姓名=SPACE(9)

DELETEFOR姓名=“羅林”

PACK

說明:可用界面操作方式:選擇表菜單,再選擇徹底刪除命令。

4.刪除所有記錄:ZAP

(十二)成批量的替換數(shù)據(jù)

格式:REPLACE[范圍]字段名1WITH表達(dá)式1[,字段名2WITH表達(dá)式2-[ADDITIVE]]

[FOR/WHILE條件]

功能:對當(dāng)前表中指定范圍內(nèi)、符合條件的所有記錄進(jìn)行修改,用表達(dá)式值替換字段值。

[例]將學(xué)生成績表“XSCJ.DBF”總分和平均分字段值成批量填入。

USEXSCJ

LIST&&總分和平均分的字段值為空

REPLAALL總分旭TH(英語+微機(jī)基礎(chǔ)+數(shù)據(jù)庫+高等數(shù)學(xué)+大學(xué)語文)

LIST&&總分的字段值已經(jīng)填入

APPENDBLANK

REPLACE學(xué)號WITH“992345098”,姓名WITH“李康”

[例]把學(xué)生的學(xué)號和家庭住址添加到“XSDA”中的獎懲情況(備注型)中。

USEXSDA

REPLACEALL獎懲情況WITH學(xué)號家庭住址ADDI

(十三)表的單個記錄與數(shù)組的數(shù)據(jù)傳遞

1、將表的單個記錄傳遞到數(shù)組

15

格式:SCATTER[FIELDS〈字段名表》[MEMO]TO〈數(shù)組名》

(1)省缺[FIELDS],則傳遞除備注型以外的所有字段。選擇[MEMO],則傳遞備注型字段。

(2)使用TO〈數(shù)組名),將數(shù)據(jù)復(fù)制到數(shù)組元素中,若數(shù)組元素多余字段數(shù),則多余的數(shù)組

元素仍保持以前的值。若數(shù)組元素少于字段數(shù),則系統(tǒng)自動建立數(shù)組或自動擴(kuò)大數(shù)組元素個

數(shù),以便接納數(shù)據(jù)。

DIMEP(5)

USEXSCJ

SCATTERTOP&&系統(tǒng)自動擴(kuò)大數(shù)組元素個數(shù),以接納數(shù)據(jù)。

DISPMEMO

(3)可以將數(shù)據(jù)復(fù)制到一組內(nèi)存變量中。為了區(qū)別與字段變量同名的內(nèi)存變量,應(yīng)在內(nèi)存變

量前加“M.”。

USEXSCJ

GO3

SCATTERMEMVAR&&第3個記錄的數(shù)據(jù)傳遞到內(nèi)存變量

?M.學(xué)號,M.姓名,M.性別

GO5

SCATTERTOABMEMO&&第5個記錄的數(shù)據(jù)(包括備注型字段)傳遞到數(shù)組AB中。

2、將數(shù)組元素值或內(nèi)存變量值傳遞到表的單個記錄

格式:GATHERFROM〈數(shù)組名>/MEMVAR[FIEIDS〈字段名表>][MEMO]

(1)省略[FIEIDS(字段名表>],則按數(shù)組元素順序依次傳遞到記錄的個字段中,否則按字段

名表順序依次傳遞。

(2)若數(shù)組元素少于庫字段數(shù),則多余的字段填空值,若數(shù)組元素多余庫字段數(shù),則多余的

數(shù)組元素被省略。

(3)數(shù)組元素與對應(yīng)字段的數(shù)據(jù)類型必須一致。

(4)選擇[MEMO]傳遞備注型字段,但不傳遞通用型字段。

[例]將數(shù)組A的數(shù)據(jù)追加至表文件“SB1”中。

DIMEA(7)

A(1)="9-532”

A(2)="洗衣機(jī)"

A(3)={"2001/10/20)

A(4)=9100.50

A(5)="21"

16

A(6)=.F.

USESB1

APPENDBLANK

GATHERFROMA

(十四)表的成批記錄與數(shù)組的數(shù)據(jù)傳遞

1、將表的一批記錄傳遞到數(shù)組

格式:COPYTOARRAY〈二維數(shù)組名/一維數(shù)組名>[FIELDS〈字段名表〉[范圍][FOR條件/

WHILE〈條件>]

功能:將當(dāng)前表指定的一批數(shù)據(jù)復(fù)制到一個二維數(shù)組中,但不復(fù)制備注型字段?;?qū)?dāng)前表

的單個記錄復(fù)制到一個一維數(shù)組中。

⑴省缺[FIELDS],則傳遞除備注型以外的所有字段。

(2)若命令中指定的數(shù)組不存在,系統(tǒng)將自動建立數(shù)組。

(3)將當(dāng)前表的一批數(shù)據(jù)復(fù)制到一個二維數(shù)組時,若數(shù)組元素多余字段數(shù),則多余的數(shù)組元

素仍保持以前的值。若數(shù)組元素少于字段數(shù),則多余的數(shù)據(jù)被忽略。系統(tǒng)不擴(kuò)大數(shù)組元素個

數(shù)。

USESB

DIMECT⑵3)

COPYTOARRAYCT

?CT(1,1),CT(1,2),CT(1,3),CT(2,1),CT(2,2),CT⑵3)

屏幕顯示:

037-2磨床07/21/90

038-1車床10/12/89

表有6個記錄,每個記錄有6個字段,但只復(fù)制2個記錄,每個記錄只復(fù)制3個字段??梢?

使用該命令時,系統(tǒng)不擴(kuò)大數(shù)組元素個數(shù)。

2、將數(shù)組元素值追加到記錄

格式:APPENDFROMARRAY〈數(shù)組名》[FOR〈條件>][FIEIDS〈字段名表》]

功能:將滿足條件的數(shù)組中行數(shù)據(jù)按記錄依次追加到當(dāng)前表中。但忽略備注型字段。

(1)數(shù)組可以是一維數(shù)組或二維數(shù)組。二維數(shù)組的每一行追加到當(dāng)前表的一個記錄。

(2)省略[FIELDS〈字段名表>],則按數(shù)組元素順序依次傳遞到記錄的個字段中,否則按字段

名表順序依次傳遞。

(3)若數(shù)組列數(shù)少于庫字段數(shù),則多余的字段填空值,若數(shù)組列數(shù)多余庫字段數(shù),則多余的

數(shù)組元素被省略。

17

(4)數(shù)組元素與對應(yīng)字段的數(shù)據(jù)類型必須一致。

USESB

APPENDFROMARRAYCT

LIST&&“SB”原來有6個記錄,現(xiàn)在有8個記錄。

(十五)邏輯表的設(shè)置

1、過濾器:過濾器的作用是在進(jìn)行某種操作時,為了省掉某些命令,將不滿足條件的記錄

暫時“隱藏”起來,使它們在邏輯上消失。當(dāng)操作完畢,再撤消過濾器恢復(fù)這些記錄。

格式:SETFILTERTO[<條件>]

說明:SETFILTERTO表示撤消過濾器。

USEXSCJ

SETFILTERTO平均分〉75AND性別

LIST&&只顯示平均分在75分以上的男同學(xué)記錄

SETFILTERTO&&撤消過濾器

LIST&&顯示所有記錄

2、字段表:字段表用于限定命令操作有效的字段。

格式:SETFIELDSTO[〈字段名)ALL]

格式:SETFIELDSON/OFF

(1)選擇[ALL]表示所有字段均在字段表中。

(2)SETFIELDSON/OFF決定字段表是否有效。當(dāng)設(shè)置字段表時,系統(tǒng)默認(rèn)為ON,只對字段

表的字段進(jìn)行操作;當(dāng)取消字段表時,系統(tǒng)默認(rèn)為OFF。

[例]對XSCJ.DBF設(shè)置字段表,使有效字段為姓名,性別和總分。

USEXSCJ

SETFIELDSTO姓名,性別,總分

LIST&&僅顯示3個字段的數(shù)據(jù)

SETFIELDSOFF

LIST&&顯示所有字段的數(shù)據(jù)

(十六)利用結(jié)構(gòu)化查詢語言SQL建立表結(jié)構(gòu)與修改表文件

建立或者修改表結(jié)構(gòu)在程序工作方式中最常用的是CREATETABLE和ALTERTABLE命令。

1、建立表結(jié)構(gòu)命令:CREATETABLE〈表名〉(〈字段名1>〈字段類型〉卜字段寬度>[,〈小數(shù)

位數(shù)〉]])[,(字段名2>…])

[例]先建立表XS-99.DBF,再利用INSERT-SQL命令追加記錄。

CREATETABLEXS-99(學(xué)號C(9),姓名C(8),性別L(l),總分N(5,2))

18

LISTSTRU&&表結(jié)構(gòu)列表

INSERTINTOXS-99VALUES(“990590123”,“李林”,.T.,432.50)

INSERTINTOXS-99VALUES(“990590156”,“王虹”,.F.,454.00)

2、為表文件添加新字段命令

ALTERTABLE〈表名〉A(chǔ)DD[COLUMN](字段名X字段類型》[〈字段寬度>[,<小數(shù)位數(shù)>]]]

[例]在表XS.DBF中添加一個備注型字段“獎懲情況”。

ALTERTABLEXSADD獎懲情況M⑷

3、為表文件刪除字段命令

ALTERTABLE〈表名>DROP[COLUMN]〈字段名》〈字段類型》[〈字段寬度>[,<小數(shù)位數(shù)>]]]

[例]在表XS.DBF中刪除一個“總分”字段。

ALTERTABLEXSDROP總分

4、編輯表文件中已有的字段命令

ALTERTABLE〈表名〉A(chǔ)LTER〈字段名〉〈字段類型〉[〈字段寬度>[,<小數(shù)位數(shù)>]]]

功能:編輯指定表文件中的數(shù)據(jù)類型、字段寬度、小數(shù)位數(shù)等。

[例]將表文件XS.DBF中“總分”字段的寬度改為5,小數(shù)位數(shù)為1。

ALTERTABLEXSTABLE總分(5,1)

5、為指定表文件中已有的字段名更名命令

ALTERTABLE〈表名〉RENAME〈字段名2>TO〈字段名3>

[例]把表文件SB.DBF中的字段“貨號”更名為“編號”。

ALTERTABLEXSRENAME貨號TO編號

6、刪除指定表文件命令:DROP〈表名》

[例]刪除表文件SBT.DBF。

DROPSB-1.DBF

第五章排序與索引

排序是對表文件進(jìn)行物理位置的整理;索引是對表文件進(jìn)行邏輯位置的整理。

(一)排序:SORTTO(新文件名〉0N〈字段名1>[/A][/D][/C][ASCENDING/DESCENDING][<

范圍〉][FOR〈條件"WHILE〈條件>][FIELDS〈字段名表》

說明:

(1)使用一個關(guān)鍵字時,叫“單重排序”;使用多個關(guān)鍵字時,叫“多重排序”。在多重

排序中,關(guān)鍵字有主次之分。在關(guān)鍵字表達(dá)式中,主關(guān)鍵字排在前面,次關(guān)鍵字排在后面。

執(zhí)行排序操作時,先按主關(guān)鍵字排列,當(dāng)在主關(guān)鍵字出現(xiàn)相同字段值時,再按次關(guān)鍵字排序。

19

(2)關(guān)鍵字段可以是N型、C型或D型,但不能是L型、M型和G型數(shù)據(jù)。即不可選用備注

型或通用型字段來排序。其中:N型以數(shù)值大者為大;C型以拼音順序A-Z;D型以后面的日

期為大。

(3)〈字段名表》可以包含其他工作區(qū)中的表文件字段,但必須使用別名調(diào)用格式:工作區(qū)

號->字段名;或:別名->字段名;或:別名.字段名。

[例]對表文件“學(xué)生.DBF”中的男生按入??偡纸敌蚺判颍尚挛募叭胄?偡?DBF”,

且新表中只包含學(xué)號、姓名、入??偡?個字段。

USE學(xué)生

BROWSE

SORTTO入??偡諳N入??偡?DFIELDS學(xué)號,姓名,入??偡?/p>

USE入??偡?/p>

BROWSE

[例]對“教師.DBF”記錄中享受政府津貼的教師按姓名升序排序,生成新文件“政府津

貼.DBF”。

USE教師

BROWSE

SORTTO政府津貼ON姓名FOR政府津貼

USE政府津貼

BROWSE

[例]對“XSCJ”表中男生的英語成績降序排序,當(dāng)英語成績相同時按微機(jī)基礎(chǔ)成績升序排

序。

USEXSCJ

SORTTOXSCJYWON英語/D,微機(jī)基礎(chǔ)FOR性別

USEXSCJYW

[例]對“XSDA”庫中的女生姓名字段按升序排序。

USEXSDA

SORTTOXSDAXMON姓名FORNOT性別

USEXSDAXM

[例]對“XSDA”庫中的出生年月排序。

USEXSDA

SORTTOXSDANYON出生年月

USEXSDANY

20

LIST(后面的II期為大)

(二)索引

索引文件山指向.DBF文件記錄的指針構(gòu)成,這些指針指向表文件中的記錄,在邏輯上

按照指定索引關(guān)鍵字排序,索引并不改變表記錄的物理順序,只是與表記錄建立一種邏輯關(guān)

系。索引和表(.DBF)分別存儲在兩個文件中。在索引文件中,只包含索引關(guān)鍵字和記錄

號兩個字段,每個關(guān)鍵字值對應(yīng)表文件中的一個記錄號。索引是一種不可顯示文件。

1、索引的分類:索引分為單索引和復(fù)合索引。

單索引文件擴(kuò)展名為.IDX。復(fù)合索引文件在使用時必須打開,而且在更新表文件數(shù)據(jù)時,必

須使其處于活動狀態(tài)。復(fù)合索引文件擴(kuò)展名為.CDX。

2、根據(jù)功能不同,復(fù)合索引可以分為主索引、候選索引、普通索引和唯一索引4種類型。

3、永久關(guān)系與參照完整性:

永久關(guān)系:指表中表之間的?種保存在數(shù)據(jù)表文件中的關(guān)系。在表設(shè)計(jì)器中可以看到連接兩

個表索引之間的關(guān)系線。

參照完整性:在永久關(guān)系的相關(guān)表中,如果只對其中的一個表進(jìn)行插入、更新或刪除操作,

就會影響到數(shù)據(jù)的完整性。因此,參照完整性屬于表表間規(guī)則,用于控制數(shù)據(jù)的一致性。為

了保持參照完整性,可以利用“參照完整性生成器”建立規(guī)則,控制記錄在相關(guān)表中的插入、

更新或刪除。

4、索引的建立

(A)命令方式:INDEXON(索引關(guān)鍵字/索引關(guān)鍵字表達(dá)式〉TO〈單索引文件名〉/TAG<

索引標(biāo)識名>[FOR〈條件>][ASCENDING/DESCENDING][UNIQUE/CANDIDATE]

[例]對學(xué)生.DBF按入??偡纸嗡饕募?。

USE學(xué)生

INDEXON入??偡諸OZF

[例]學(xué)生.DBF建立復(fù)合索引,其中包含3個索引:

(1)以姓名降序排列,索引標(biāo)識為普通索引;

USE學(xué)生

INDEXON姓名TAGXMDESCENDING&&建立復(fù)合索引文件學(xué)生.CDX,XM為普通索引標(biāo)識

(2)以性別升序排列,性別相同時以入??偡稚蚺帕?,索引標(biāo)識為普通索引;

INDEXON性別+STR(入??偡?3)TAGXBZFA

**關(guān)鍵字為性別+STR(入??偡?3),普通索引標(biāo)識XBZFA加入學(xué)生.CDX中

(3)以性別升序排列,性別相同時以出生年月降序排列,索引標(biāo)識為候選索引。

INDEXON性別-DTOC(出生年月)TAGXBCSDCANDIDATE

21

**XBCSD為候選索引型索引標(biāo)識,索引標(biāo)識XBCSD加入學(xué)生.CDX

[例]建立索引舉例。

USESB

INDEXON名稱TOMCIDX&&對名稱建立升序排列的普通索引型單索引文件

INDEXON-價格TOJGINDFOR主要設(shè)備UNIQUE

&&對價格建立降序排列的唯一索引型單索引文件

[例]建立復(fù)合索引,其中包含3個索引:

(D以價格降序排列,索引標(biāo)識為普通索引;

USESB

INDEXON價格TAGJGDESCENDING建立SB.CDX,JG為普通索引型索引標(biāo)識

(2)以部門升序排列,部門相同時以價格升序排列,索引標(biāo)識為普通索引;

INDEXON部門+$丁口(價格,9,2)TAGBMJG

**關(guān)鍵字為部門+STR(價格,9,2),索引標(biāo)識BMJG加入SB.CDX

(3)以部門升序排列,部門相同時以價格降序排列,索引標(biāo)識為候選索引。

INDEXONVAL(部門)-價格/1000000TAGBMJG1CANDIDATE

**BMJG1為候選索引型索引標(biāo)識,索引標(biāo)識1^1匹1加入$134D乂

(B)菜單方式建立索引

“文件”菜單一“打開”命令一“表”選項(xiàng)一“顯示”菜單一表設(shè)計(jì)器一“索引”選項(xiàng)卡

一“索引名”一“排序”一“類型”一“表達(dá)式”一確定。

5、索引的使用和刪除

1、使用索引:使用索引必須同時打開表文件和索引文件。一個表文件可以打開多個索引文

件,但任何時刻只有一個索引文件起作用,當(dāng)前起作用的索引文件稱為主控索引文件。只有

主索引文件對表文件才有控制作用,記錄指針總是指向主索引文件關(guān)鍵字值的第一個記錄

上。

打開索引文件有3種方法:

(1)在建立索引文件的同時,就打開了索引文件。

(2)打開表文件的同時打開索引文件:USE〈表文件名〉/?[INDEX〈索引文件名

表》/?][ORDER[〈數(shù)值表達(dá)式>]/<單索引文件名》/[TAG]〈標(biāo)識名〉[OF〈復(fù)合索引文件名》]

[ASCENDING/DESCENDING]]]

USE學(xué)生INDEX學(xué)生ORDERTAGXBXHA

USE學(xué)生INDEX學(xué)生ORDERTAGXM

(3)打開表文件后再打開索引文件:SETINDEXTO〈索引文件名表》[ADDITIVE]

22

USE學(xué)生

SETINDEXTOZF

2.設(shè)置主控索引:SETORDERTO[〈數(shù)值表達(dá)式〉/〈單索引文件名>/[TAG]<索引標(biāo)識

名>[ASCENDING/DESCENDING]]

SETORDERTO0或SETORDERTO都是取消主控索引文件或主控索引。

[例]為復(fù)合索引文件學(xué)生.CDX設(shè)置主索引。

USE學(xué)生

SETORDERTO2&&指定學(xué)生.CDX中的索引序號2(即XM)為主控索引。

SETORDERTOXBXUA&&指定學(xué)生.CDX中的索引標(biāo)識XBXHA為主控索引。

SETORDERTOZF&&指定單索引文件ZF.IND為主控索引文件。

3.更新索引REINDEX

USE學(xué)生

LIST&&顯示有10條記錄

APPENDa&追加一條記錄

USE

USE學(xué)生INDEX學(xué)生ORDERTAGXM打開主關(guān)鍵字為姓名的復(fù)合索引文件

LIST&&顯示有11條記錄被索引

USE學(xué)生

SETINDEXTOZF&&打開主關(guān)鍵字為入學(xué)總分的單索引文件

LIST&&顯示只有10條記錄被索引

REINDEX

LIST&&顯示有11條記錄被索引

4.關(guān)閉索引文件

關(guān)閉索引文件,就是取消索引文件對表文件的控制作用。關(guān)閉索引文件有三種方法:

(1)關(guān)閉當(dāng)前索引文件:SETINDEXTO

(2)關(guān)閉所有索引文件:CLOSEINDEX

(3)關(guān)閉表文件的同時,關(guān)閉索引文件:USE

5.刪除索引

刪除無用的索引標(biāo)識可以提高數(shù)據(jù)處理性能

命令:DELETETAGALL/〈索引標(biāo)識1>[,〈索引標(biāo)識2>]……

菜單操作方式:“文件”菜單一“打開”命令一“表”選項(xiàng)一“顯示”菜單一表設(shè)計(jì)器一“索

引”選項(xiàng)卡一“索引名”一“刪除”。

23

(三)查詢

幾個與索引相關(guān)的函數(shù):

A、記錄找到否測試函數(shù)FOUND([<工作區(qū)號>])

(1)如果記錄找到,則函數(shù)返回值為.「;否則函數(shù)返回值為.F.。

(2)如果指定工作區(qū)中的表文件沒有打開,則函數(shù)返回值為假。

B、求得記錄號函數(shù)RECNO(O)

若指定工作區(qū)中的表文件沒有打開,則函數(shù)返回值為0。

1、順序查詢LOCATE與CONTINUE命令

[例]在“學(xué)生.DBF”中查找姓名為王小平的記錄。

USE學(xué)生

LOCATEALLFOR姓名="王小平”

DISP

CONTINUE&&屏幕顯示:已到定位在范圍末尾。

[例]在“教師.DBF”中查找職稱是教授的記錄。

USE教師

LOCATEALLFOR職稱="教授”

DISP

CONTINUE

DISP

CONTINUE&&屏幕顯示:已到定位在范圍末尾。

[例]在“XSCJ”庫中查找“數(shù)據(jù)庫”成績?yōu)?9分的記錄。

USEXSCJ

LOCATEALLFOR數(shù)據(jù)庫=79

DISP

CONTINUE

DISP

CONTINUE

[例]在“RSDA”中查找40歲以下的副教授。

USERSDA

LOCATEFOR職稱="副教授"AND(YEAR(DATE。)-YEAR(出生年月))<40

DISP

CONTINUE

24

2、索引查詢

(1)FIND命令

FIND命令可以使用內(nèi)存變量,如果是C型內(nèi)存變量,必須宏代換:FIND&〈C型內(nèi)存變量》;

如果是N型內(nèi)存變量,則先用STR()函數(shù)將其轉(zhuǎn)換為C型內(nèi)存變量后,再用宏代換。

[例]在學(xué)生DBF中查找姓名為王小平的記錄。

USE學(xué)生

INDEXON姓名TAGXM

FIND王小平

DISP

[例]在學(xué)生DBF中查找男同學(xué)的記錄。

USE學(xué)生

INDEXON性別TAGXB

FIND男

LISTFOR性別="男”

[例]使用內(nèi)存變量示例。

TN=STR(595)

INDEXON入??偡諸AGRXZF

FIND&TN

DISPFIELDS

溫馨提示

  • 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)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。

評論

0/150

提交評論