數(shù)據(jù)庫(kù)原理與應(yīng)用FoxPro課件_第1頁(yè)
數(shù)據(jù)庫(kù)原理與應(yīng)用FoxPro課件_第2頁(yè)
數(shù)據(jù)庫(kù)原理與應(yīng)用FoxPro課件_第3頁(yè)
數(shù)據(jù)庫(kù)原理與應(yīng)用FoxPro課件_第4頁(yè)
數(shù)據(jù)庫(kù)原理與應(yīng)用FoxPro課件_第5頁(yè)
已閱讀5頁(yè),還剩623頁(yè)未讀, 繼續(xù)免費(fèi)閱讀

下載本文檔

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

文檔簡(jiǎn)介

資料庫(kù)系統(tǒng)概論

1.1現(xiàn)實(shí)世界的數(shù)據(jù)化過(guò)程

資訊世界也叫觀念世界,是現(xiàn)實(shí)世界在人腦中的反映。現(xiàn)實(shí)世界中的事物和事物特性在資訊世界中分別反映為實(shí)體和實(shí)體的屬性。人們用概念模型來(lái)描述資訊世界。數(shù)據(jù)世界是資訊世界數(shù)據(jù)化後的產(chǎn)物。資訊世界中的實(shí)體和屬性在數(shù)據(jù)世界中分別成為記錄和數(shù)據(jù)項(xiàng)。人們用數(shù)據(jù)模型來(lái)描述數(shù)據(jù)世界。現(xiàn)實(shí)世界、資訊世界和數(shù)據(jù)世界的關(guān)係如圖1-1所示。

圖1-1三個(gè)世界的關(guān)係

數(shù)據(jù)模型是資料庫(kù)系統(tǒng)的核心和基礎(chǔ)。但現(xiàn)實(shí)世界只有先抽象為資訊世界,才能進(jìn)一步轉(zhuǎn)換為數(shù)據(jù)世界。資訊世界的概念模型是不依賴於具體的電腦世界的。因此,概念模型是從現(xiàn)實(shí)世界到電腦世界的中間層次。

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

1.2.1人工管理階段在硬體方面,電腦的運(yùn)算速度低、記憶體容量小,外設(shè)還沒(méi)有磁片等直接存取的存儲(chǔ)設(shè)備;在軟體方面,還沒(méi)有操作系統(tǒng),沒(méi)有管理數(shù)據(jù)的軟體。這一階段的電腦主要用於科學(xué)計(jì)算,這個(gè)時(shí)期數(shù)據(jù)管理的特點(diǎn)是:

(1)數(shù)據(jù)不保存。

(2)沒(méi)有管理數(shù)據(jù)的軟體系統(tǒng)。

(3)基本上沒(méi)有檔概念。

(4)數(shù)據(jù)是面向應(yīng)用的。

在人工管理階段,上述數(shù)據(jù)與程式關(guān)係的特點(diǎn)如圖1-2所示。圖1-2人工管理階段數(shù)據(jù)與程式的關(guān)係1.2.2檔系統(tǒng)階段

檔系統(tǒng)管理階段有以下幾個(gè)特點(diǎn):(1)數(shù)據(jù)存在檔中,檔可長(zhǎng)期保存在外存。(2)程式和數(shù)據(jù)有了一定的獨(dú)立性。(3)檔已多樣化。(4)數(shù)據(jù)的存取基本上以記錄為單位。

在檔系統(tǒng)階段,用戶雖有了一定的方便,但仍有很多缺點(diǎn)。這主要表現(xiàn)在以下兩個(gè)方面:

(1)數(shù)據(jù)冗餘度大。

(2)數(shù)據(jù)和程式缺乏獨(dú)立性。檔之間是孤立的、不能反映現(xiàn)實(shí)世界中事物之間的內(nèi)在聯(lián)繫。在檔系統(tǒng)階段,數(shù)據(jù)與程式的關(guān)係如圖1-3所示。

圖1-3檔系統(tǒng)階段數(shù)據(jù)與程式的關(guān)係

1.2.3資料庫(kù)系統(tǒng)階段

20世紀(jì)60年代後期,電腦硬體、軟體有了進(jìn)一步的發(fā)展。資料庫(kù)系統(tǒng)(DataBaseSystem)指在電腦系統(tǒng)中引入資料庫(kù)後的系統(tǒng)構(gòu)成,由電腦硬體、操作系統(tǒng)、資料庫(kù)管理系統(tǒng)、資料庫(kù)、應(yīng)用程式和用戶、資料庫(kù)管理人員等組成。

1.資料庫(kù)(DataBase)

資料庫(kù)是存儲(chǔ)在電腦系統(tǒng)內(nèi)的、有結(jié)構(gòu)的數(shù)據(jù)的集合。2.資料庫(kù)管理系統(tǒng)(DBMS:DataBaseManagementSystem)

資料庫(kù)管理系統(tǒng)是資料庫(kù)系統(tǒng)中管理資料庫(kù)的系統(tǒng)軟體。它是在操作系統(tǒng)支持下進(jìn)行工作的,它為用戶提供了一整套命令。資料庫(kù)管理系統(tǒng)中,程式與數(shù)據(jù)的關(guān)係如圖1-4所示。圖1-4資料庫(kù)系統(tǒng)階段數(shù)據(jù)與程式的關(guān)係

1.3概念模型與數(shù)據(jù)模型

1.3.1概念模型概念模型中的基本內(nèi)容是實(shí)體(Entity)。實(shí)體是客觀事物的反映,既可以是實(shí)際存在的對(duì)象,也可以是某種概念。事物是有特性的。概念模型中,任一實(shí)體在任一屬性上的取值都是有限制的。

所有屬性名完全相同的實(shí)體往往集合在一起,稱為實(shí)體集(EntityUnit)。

1.3.2實(shí)體之間的關(guān)聯(lián)

1.一對(duì)一聯(lián)繫(1∶1)

對(duì)實(shí)體集A中的每一個(gè)實(shí)體,若實(shí)體集B中至多有一個(gè)實(shí)體與之聯(lián)繫,反之亦然,則稱實(shí)體集A與B是一對(duì)一聯(lián)繫的,見(jiàn)圖1-5(a)。圖1-5兩個(gè)實(shí)體型之間的聯(lián)繫

2.一對(duì)多聯(lián)繫(1∶n)

對(duì)A中的每一實(shí)體,若B中可有多個(gè)實(shí)體與之聯(lián)繫;但對(duì)B中的每一實(shí)體,A中最多有一個(gè)實(shí)體與之聯(lián)繫,則稱A與B是一對(duì)多聯(lián)繫的,見(jiàn)圖1-5(b)。

3.多對(duì)多聯(lián)繫(m∶n)

對(duì)A中的每一實(shí)體,若B中可有多個(gè)實(shí)體與之聯(lián)繫,反之亦然,則稱A與B是多對(duì)多聯(lián)繫的,見(jiàn)圖1-5(c)。同一實(shí)體集內(nèi)的各實(shí)體之間也可有某種聯(lián)繫。例如,場(chǎng)上隊(duì)長(zhǎng)與隊(duì)員之間為一對(duì)多的聯(lián)繫,可用圖1-6表示。圖1-6同一實(shí)體集內(nèi)一對(duì)多聯(lián)繫

1.3.3概念模型的表示方法——E-R圖概念模型的常用表示方法是實(shí)體—聯(lián)繫法(Entity-RelationshipApproach),即E-R圖。在E-R圖中,用長(zhǎng)方形表示實(shí)體,橢圓表示屬性,並用無(wú)向邊把實(shí)體與其屬性連接起來(lái)。形表示實(shí)體間的聯(lián)繫,用無(wú)向邊把菱形與有關(guān)實(shí)體連接起來(lái)並在無(wú)向邊旁標(biāo)上聯(lián)系的類型;若聯(lián)繫具有屬性,則也把屬性與菱形用無(wú)向邊相連。例如,教師和課程之間關(guān)係的E-R圖如圖1-7所示。圖1-7教師和課程關(guān)係的E-R圖E-R圖表示的概念模型既不涉及具體的數(shù)據(jù)模型,又是各種數(shù)據(jù)模型的基礎(chǔ)。E-R方法是抽象和描述現(xiàn)實(shí)世界的有力工具。圖1-8給出了學(xué)校教務(wù)管理的E-R圖。圖1-8教務(wù)管理E-R圖

1.3.4三種主要的數(shù)據(jù)模型數(shù)據(jù)模型是資料庫(kù)系統(tǒng)的核心和基礎(chǔ),不同的資料庫(kù)管理系統(tǒng)支持不同類型的數(shù)據(jù)模型。當(dāng)前實(shí)際資料庫(kù)管理系統(tǒng)所支持的主要數(shù)據(jù)模型有:層次模型(HierarchicalModel)、網(wǎng)狀模型(NetworkModel)和關(guān)係模型(RelationalModel)。

1.基本層次聯(lián)繫非關(guān)係模型的數(shù)據(jù)結(jié)構(gòu)可以分解為基本層次聯(lián)繫。兩個(gè)記錄型及它們之間的一對(duì)多(一對(duì)一)的聯(lián)繫稱為基本層次聯(lián)繫,如圖1-9所示。圖中,R1稱為父記錄,R2稱為子記錄。

圖1-9基本層次結(jié)構(gòu)

2.層次模型若一個(gè)基本層次聯(lián)繫的集合滿足下列兩條件,則它是層次模型:

①有且僅有一個(gè)結(jié)點(diǎn)無(wú)父結(jié)點(diǎn),這樣的結(jié)點(diǎn)稱為根結(jié)點(diǎn)。

②非根結(jié)點(diǎn)都有且僅有一個(gè)父結(jié)點(diǎn)。層次模型是一棵樹(shù)。圖1-10是一個(gè)層次模型。在層次模型中,一個(gè)結(jié)點(diǎn)可以有幾個(gè)子結(jié)點(diǎn),也可以沒(méi)有子結(jié)點(diǎn)。前一種情況下,這幾個(gè)子結(jié)點(diǎn)稱為兄弟結(jié)點(diǎn);後一情況下,該結(jié)點(diǎn)稱為葉結(jié)點(diǎn)。

圖1-10一個(gè)層次模型

3.網(wǎng)狀模型若一個(gè)基本層次聯(lián)繫集合中,至少有一個(gè)結(jié)點(diǎn)有一個(gè)以上的父結(jié)點(diǎn),則這種數(shù)據(jù)模型是網(wǎng)狀模型。網(wǎng)狀模型還可能有的兩個(gè)特點(diǎn)是:

①可能有一個(gè)以上的結(jié)點(diǎn),無(wú)父結(jié)點(diǎn)。

②結(jié)點(diǎn)與其父結(jié)點(diǎn)之間的聯(lián)繫可能不止一個(gè)。圖1-11的(a)、(b)、(c)給出的數(shù)據(jù)模型都是網(wǎng)狀模型。

圖1-11網(wǎng)狀模型

4.關(guān)係模型關(guān)係模型是最遲出現(xiàn)的,也是最重要的數(shù)據(jù)模型。當(dāng)前廣泛應(yīng)用的資料庫(kù)管理系統(tǒng)幾乎都是支持關(guān)係模型的,被稱為關(guān)係型資料庫(kù)管理系統(tǒng)(RelationalDataBaseManagementSystem),即RDBMS。在關(guān)係模型中,用二維表表示實(shí)體及其相互聯(lián)繫。但對(duì)表的構(gòu)成形式是有一定限制的。圖1-12的表是一個(gè)關(guān)係模型。職工號(hào)姓名性別部門工資1002100410051010胡一民王愛(ài)民張小花宋文彬男男女男技術(shù)科車間設(shè)計(jì)所技術(shù)科75.00128.35112.2786.94

圖1-12一個(gè)關(guān)係模型:職工

關(guān)係模型對(duì)二維表的限制是:

①表中每一列都必須是不可分的基本項(xiàng)。如圖1-13的情況是不允許的。

②表中沒(méi)有完全相同的兩個(gè)元組。

③在一個(gè)關(guān)係模式中,不能有兩個(gè)屬性具有相同的屬性名。

④在一個(gè)關(guān)係模式中,屬性間的順序和元組間的順序都是無(wú)關(guān)緊要的。工資級(jí)別工資基本工資補(bǔ)貼工資………

圖1-13不允許的表

1.4數(shù)據(jù)庫(kù)系統(tǒng)

1.4.1資料庫(kù)系統(tǒng)的三級(jí)模式結(jié)構(gòu)實(shí)際的資料庫(kù)系統(tǒng)是多種多樣的,但一般都具有三級(jí)模式的結(jié)構(gòu)特徵。資料庫(kù)系統(tǒng)的三級(jí)模式結(jié)構(gòu)是外模式、模式和內(nèi)模式,如圖1-14所示。圖1-14資料庫(kù)系統(tǒng)的三級(jí)模式1.模式模式也稱概念模式,是資料庫(kù)中的數(shù)據(jù)在邏輯級(jí)上的視圖。安全性主要指保密性。完整性包括數(shù)據(jù)的正確性、有效性和相容性。模式不是資料庫(kù)本身,它僅僅描述資料庫(kù)結(jié)構(gòu)。資料庫(kù)管理系統(tǒng)提供模式描述語(yǔ)言(模式DDL)來(lái)定義模式。

2.外模式外模式也稱子模式,是個(gè)別用戶的數(shù)據(jù)視圖,即個(gè)別用戶涉及到的資料庫(kù)的局部邏輯結(jié)構(gòu)。外模式是模式的子集。不同用戶的外模式是不同的(可互相覆蓋)。一個(gè)應(yīng)用程式只能啟用一個(gè)外模式,一個(gè)外模式可被同一用戶的若干應(yīng)用程式使用。資料庫(kù)管理系統(tǒng)提供外模式描述語(yǔ)言(外模式DDL)描述外模式。用外模式DDL給出的,用以定義一個(gè)用戶數(shù)據(jù)視圖的全部語(yǔ)句稱為此用戶的外模式。

3.內(nèi)模式內(nèi)模式也稱存儲(chǔ)模式。它既定義了資料庫(kù)中全部數(shù)據(jù)的物理結(jié)構(gòu),還定義了數(shù)據(jù)的存儲(chǔ)方法、存取策略等。通常,用內(nèi)模式描述語(yǔ)言(內(nèi)模式DDL)來(lái)描述和定義內(nèi)模式。

4.二級(jí)映像在模式與內(nèi)模式之間通過(guò)模式/內(nèi)模式映像進(jìn)行轉(zhuǎn)換。當(dāng)資料庫(kù)的存儲(chǔ)結(jié)構(gòu)改變時(shí),只要相應(yīng)改變模式/內(nèi)模式映像,可使模式保持不變。

5.資料庫(kù)管理系統(tǒng)(DBMS)DBMS是資料庫(kù)系統(tǒng)的關(guān)鍵內(nèi)容。

DBMS的主要功能是:

(1)資料庫(kù)的定義、建立和維護(hù)功能。

(2)數(shù)據(jù)存取功能。

(3)資料庫(kù)運(yùn)行管理功能。

1.4.2用戶訪問(wèn)資料庫(kù)的過(guò)程

實(shí)際資料庫(kù)系統(tǒng)的情況是互不相同的;實(shí)際資料庫(kù)系統(tǒng)所使用的術(shù)語(yǔ)也是有差別的。在理論講述上,各種教材、各篇文章所使用的術(shù)語(yǔ)名稱也是不統(tǒng)一的,這需要讀者在使用時(shí)進(jìn)行比較理解。為使讀者對(duì)數(shù)據(jù)庫(kù)系統(tǒng)的工作有一個(gè)整體概念,我們介紹一下訪問(wèn)資料庫(kù)數(shù)據(jù)的主要步驟,該過(guò)程如圖1-15所示。

圖1-15訪問(wèn)資料庫(kù)的主要步驟

2.1FoxPro2.6基礎(chǔ)知識(shí)

2.1.1FoxPro2.6的系統(tǒng)組成

FoxPro本身是一個(gè)龐大的系統(tǒng)軟體,它包含有大量的檔,這些檔稱為FoxPro的系統(tǒng)檔。在使用FoxPro之前,必須把它的系統(tǒng)檔全部按規(guī)定安裝到硬碟上。用戶利用FoxPro可建立多種類型的用戶檔,從而構(gòu)成用戶的資料庫(kù)系統(tǒng)。

2.1.2FoxPro檔案名的一般形式

利用FoxPro建立的各類檔都是磁片檔,需要時(shí)才調(diào)入記憶體使用。FoxPro根據(jù)用戶提供的檔案名,對(duì)指定磁片上的指定檔進(jìn)行各種操作。

1.檔案名

FoxPro是在操作系統(tǒng)支持下對(duì)檔進(jìn)行管理的,因此,對(duì)檔案名的規(guī)定與操作系統(tǒng)相同。在FoxPro中,一個(gè)檔案名由兩部分組成:一是檔案名本身;另一是擴(kuò)展名(也稱尾碼)。其一般形式為檔案名.擴(kuò)展名

2.對(duì)檔案名的一些規(guī)定

FoxPro規(guī)定,檔案名本身必須是以漢字或英文字母或數(shù)字開(kāi)頭的字串,且最多可由8個(gè)字元組成(一個(gè)漢字按兩個(gè)字元計(jì)算)。在這串字元中,可以有漢字、英文字母、十進(jìn)位數(shù)符和下劃線,但不能有空格等其他符號(hào)。擴(kuò)展名部分最多由3個(gè)字元組成。它不僅是檔案名的一部分,而且可用來(lái)區(qū)分檔的類型。2.2FoxPro資料庫(kù)檔(DatabaseFile)

在FoxPro的各類用戶檔中,資料庫(kù)檔是最基本的檔,簡(jiǎn)稱庫(kù)檔。庫(kù)檔存放的是關(guān)係,關(guān)係又稱為表(Table)。由於FoxPro的每個(gè)庫(kù)檔中只能存放一個(gè)表,因此庫(kù)檔案名即為表名,庫(kù)檔也稱為表。為了方便起見(jiàn),本書(shū)以後只採(cǎi)用庫(kù)檔這一稱呼。表

2—1是電腦輸出的一個(gè)實(shí)際庫(kù)檔,它的檔案名為“職工DBF”。2.2.1資料庫(kù)檔的檔案名;

在FoxPro中,系統(tǒng)提供的庫(kù)檔案名的格式為;

檔案名DBF

“DBF”是系統(tǒng)默認(rèn)的庫(kù)檔案名的擴(kuò)展名,是庫(kù)檔的標(biāo)誌。如果用戶不採(cǎi)用系統(tǒng)默認(rèn)的擴(kuò)展名,則必須明確聲明。;2.2.2記錄、字段、字段變數(shù)和字段值

1字段、字段名、字段值簡(jiǎn)介2記錄3字段變數(shù)、字段變數(shù)名和字段變數(shù)值4字段名5字段寬度6記錄號(hào)

2.23字段的六種基本類型

一個(gè)字段的類型就是指其字段值的類型。;

不同類型的數(shù)據(jù)在記憶體中的存儲(chǔ)方法是不同的,而且不同類型的數(shù)據(jù)所能進(jìn)行的運(yùn)算也是不同的。

FoxPro有六種基本的字段類型。它們是:數(shù)字型字段(N型),浮點(diǎn)型字段(F型),日期型字段(D型),邏輯型字段(L型),字元型字段(C型)和記憶型字段(M型)。

1數(shù)字型字段(NumericField);2浮點(diǎn)型字段(FloatField)3日期型字段(DateField);4邏輯型字段(LogicalField)5字元型字段(CharacterField);6記憶型字段(Memo)

2.24各類字段數(shù)據(jù)的存放形式

各類字段數(shù)據(jù)在庫(kù)檔中的存放形式如下:;

對(duì)於數(shù)字型字段,若數(shù)據(jù)的實(shí)際寬度不足字段定義寬度,則系統(tǒng)在數(shù)據(jù)左邊填以空格補(bǔ)齊。對(duì)於浮點(diǎn)型字段,其數(shù)據(jù)的存放形式與數(shù)字型字段是完全相同的。;

對(duì)於字元型字段,若實(shí)際數(shù)據(jù)寬度小於字段定義寬度,系統(tǒng)在該值右邊填以空格補(bǔ)齊。其他三種字段的寬度都是系統(tǒng)固定的,在列表時(shí),也都採(cǎi)取左對(duì)齊原則。其中的記憶型字段,若無(wú)特殊說(shuō)明,僅顯示“Memo”(無(wú)數(shù)據(jù)時(shí),僅顯示“memo”)。這些都在表2—1上得到了反映。;

2.3FoxPro的引導(dǎo)過(guò)程

FoxPro有兩個(gè)版本:FoxPro2.6forMS—DOS和FoxPro2.6forWindows。前者適用於MS—DOS操作系統(tǒng)環(huán)境,後者適用於Windows環(huán)境,互相不能替代。從功能上講,後者比前者豐富,但它們的基本功能是相同的。本節(jié)分別介紹兩者的引導(dǎo)過(guò)程。讀者可根據(jù)自己使用的版本學(xué)習(xí)相應(yīng)內(nèi)容。

2.3.1FoxPro2.6forMS—DOS的引導(dǎo)過(guò)程

FoxPro2.6forMS—DOS的整個(gè)引導(dǎo)過(guò)程可分為三步:

①啟動(dòng)操作系統(tǒng);

②使默認(rèn)盤為C盤,並使FoxPro系統(tǒng)在可調(diào)用子目錄下;

③鍵入F、O、X三鍵並按回車鍵,系統(tǒng)就開(kāi)始啟動(dòng)FoxPro。若啟動(dòng)成功,則螢?zāi)伙@示如圖2—1。

圖2—1FoxPro2.6forMS—DOS初始螢?zāi)?/p>

螢?zāi)恢校谝恍酗@示的是系統(tǒng)主菜單,中間是一個(gè)名為Command(命令)的命令窗口。用戶可在命令窗口中鍵入任何FoxPro命令。下麵介紹幾個(gè)有用的術(shù)語(yǔ):

(1)窗口(Window)。

(2)菜單(Menu)。

(3)桌面(Desktop)。

2.3.2FoxPro2.6forWindows的引導(dǎo)過(guò)程

FoxPro2.6forWindows的整個(gè)引導(dǎo)過(guò)程可分為四步:①啟動(dòng)DOS;

②在DOS命令提示符下,鍵入win,啟動(dòng)Windows;

③若程式管理器窗未打開(kāi),雙擊程式管理器圖符,打開(kāi)程式管理器窗。

④啟動(dòng)FoxPro2.6forWindows:在程式管理器窗內(nèi),有一個(gè)代表著FoxPro2.6forWindows程式組的小狐貍圖符,雙擊它就可啟動(dòng)該圖符,就可打開(kāi)FoxPro主窗口,表明啟動(dòng)成功,已進(jìn)入FoxPro2.6forWindows系統(tǒng)。此時(shí)螢?zāi)蝗鐖D2—2所示。

圖2—2FoxPro2.6forWindows初始螢?zāi)?/p>

3.1資料庫(kù)檔的建立3.1.1幾個(gè)常用符號(hào)的約定本書(shū)使用了幾個(gè)常用符號(hào),這些符號(hào)的含義約定如下:(1)〈〉:必選參數(shù)表示符。由這一對(duì)符號(hào)括起的部分是用戶必須要提供的參數(shù),但不要輸入這對(duì)表示符本身。

(2)[]:任選參數(shù)表示符。由這一對(duì)符號(hào)括起的部分由用戶決定是否選擇可以選,也可以不選。括起的部分也稱作選擇項(xiàng)或可選項(xiàng),但不包括這對(duì)表示符本身。(3)/:二選一表示符。表示用戶可從本符號(hào)左右兩項(xiàng)中選擇一項(xiàng)。

3.1.2改變默認(rèn)盤和當(dāng)前路徑命令—

—SETDEFAULTTO

剛引入FoxPro時(shí),F(xiàn)oxPro所在盤為默認(rèn)盤,所在目錄為當(dāng)前目錄。本命令可改變默認(rèn)盤和當(dāng)前目錄。命令格式:SETDEFAULTTO[〈字元運(yùn)算式〉]其中,〈字元運(yùn)算式〉可以是盤號(hào)、盤號(hào)與目錄名、子目錄名、DOS中路徑符\或。

3.1.3資料庫(kù)檔結(jié)構(gòu)的建立命令——CREATE

定義庫(kù)檔的檔案名和每個(gè)字段的字段名、字段類型、字段寬度的工作稱為建立庫(kù)檔的結(jié)構(gòu)。建立庫(kù)檔結(jié)構(gòu)的命令為CREATE。命令格式:CREATE[〈檔案名〉/?]

CREATE命令的功能為:定義一個(gè)資料庫(kù)檔的結(jié)構(gòu),並把該檔存入到磁片目錄中去。所建檔的檔案名由命令給定:若缺省盤號(hào),所建庫(kù)檔將存入默認(rèn)盤若缺省擴(kuò)展名,系統(tǒng)默認(rèn)其擴(kuò)展名為DBF。下麵介紹建立庫(kù)檔“職工DBF”結(jié)構(gòu)的步驟:①啟動(dòng)電腦,使系統(tǒng)處?kù)禙oxPro命令狀態(tài)。②把數(shù)據(jù)盤插入A驅(qū)動(dòng)器。③設(shè)置A盤為默認(rèn)盤。鍵入命令:SETDEFAULTTOA④建立“職工DBF”庫(kù)檔,鍵入命令:CREATE職工系統(tǒng)開(kāi)始建立庫(kù)檔“職工DBF”。螢?zāi)伙@示如圖3—1所示。

圖3—1CREATE命令對(duì)應(yīng)的螢?zāi)?/p>

游標(biāo)在Name下,等待用戶輸入第一字段的字段名,我們鍵入“職工號(hào)”。按回車鍵後,游標(biāo)移至Type下,用戶可直接按表示所選類型的字母:N、F、D、L、C、M;也可按空格鍵。此時(shí),在類型下出現(xiàn)一個(gè)小菜單,內(nèi)容為各字段類型,用上、下箭頭鍵移動(dòng)游標(biāo)到所需類型,再按回車鍵即選中該類型。對(duì)於本字段來(lái)說(shuō),我們選擇數(shù)字型(Numeric),游標(biāo)自動(dòng)移到Width下,按計(jì)畫鍵入寬度值——6。按回車鍵後,游標(biāo)移到Dec下。由於該字段無(wú)小數(shù),直接按回車鍵(也可鍵入零後,再按回車鍵)。此時(shí),第一字段已定義完畢,游標(biāo)轉(zhuǎn)向第二字段,等待用戶定義。

以下各字段的定義步驟與定義第一字段相似,只是對(duì)於日期型、邏輯型和記憶型字段不要求用戶輸入寬度值對(duì)於非數(shù)字型字段,也不要求輸入小數(shù)寬度。

3.1.4打開(kāi)資料庫(kù)檔操作命令——USE

要使用一個(gè)庫(kù)檔,必須先打開(kāi)之。打開(kāi)庫(kù)檔的命令為USE。

USE命令基本格式:USE〈庫(kù)檔案名〉若缺省了庫(kù)檔案名的擴(kuò)展名,系統(tǒng)默認(rèn)為DBF。執(zhí)行了本命令後,命令中所指庫(kù)檔即被打開(kāi),同時(shí)也關(guān)閉掉原來(lái)打開(kāi)的庫(kù)檔。如果該庫(kù)檔有記憶型字段,則同時(shí)打開(kāi)與庫(kù)檔同名、擴(kuò)展名為.FPT的記憶檔。

3.1.5命令的注釋——&&子句

在命令的後面,可用&&〈注釋內(nèi)容〉子句為其注釋。系統(tǒng)不執(zhí)行&&子句,它僅供用戶閱讀用。&&與前面的內(nèi)容之間必須有空格分隔。

3.1.6記錄指針及其操作命令——GO、SKIP

打開(kāi)一個(gè)庫(kù)檔後,系統(tǒng)立即給這個(gè)庫(kù)檔提供一個(gè)記錄指針,簡(jiǎn)稱指針。指針裏存放的是一個(gè)十進(jìn)位數(shù),如5、81等。它是某個(gè)記錄的記錄號(hào),這時(shí)表明記錄指針指向了這個(gè)記錄,而這個(gè)記錄也被稱為當(dāng)前記錄。若記錄指針為52,則說(shuō)明記錄號(hào)為52的記錄為當(dāng)前記錄。在剛打開(kāi)一個(gè)庫(kù)檔時(shí),記錄指針指向首記錄。

對(duì)數(shù)據(jù)庫(kù)檔的操作是以當(dāng)前記錄為基準(zhǔn)的。在執(zhí)行某些命令時(shí),會(huì)自動(dòng)改變當(dāng)前記錄。在這裏,我們首先介紹專門用於改變當(dāng)前記錄的兩條命令,這就是移動(dòng)指針命令。

1.指針的絕對(duì)移動(dòng)命令——GO、GOTO2.指針的相對(duì)移動(dòng)命令——SKIP

3.1.7追加記錄操作命令——APPEND

命令格式:APPEND[BLANK]功能:在庫(kù)檔的尾部加入新記錄。當(dāng)庫(kù)檔中已有n個(gè)記錄時(shí),新記錄號(hào)為n+1。此命令執(zhí)行步驟如下:①令指針內(nèi)容為最大記錄號(hào)加1。

②若命令中有選擇項(xiàng)BLANK,則當(dāng)前記錄為空記錄,命令執(zhí)行完畢,增加了1個(gè)空記錄,系統(tǒng)回到FoxPro命令狀態(tài)(仍在命令窗口下)若命令中無(wú)選擇項(xiàng)BLANK,則繼續(xù)執(zhí)行步驟③。③在螢?zāi)簧洗蜷_(kāi)一個(gè)編輯窗口。在編輯窗口,豎式顯示庫(kù)檔的記錄結(jié)構(gòu),游標(biāo)停在第一字段處,等待用戶逐個(gè)字段地輸入本記錄內(nèi)容。以“職工DBF”庫(kù)檔為例,現(xiàn)欲對(duì)其追加新記錄,則在命令窗口中打入如下兩條命令:USE職工

APPEND

執(zhí)行後,在螢?zāi)恢虚_(kāi)出一編輯窗口,內(nèi)容如圖3—2,等待用戶為新記錄輸入內(nèi)容。

圖3—2執(zhí)行APPEND命令後的編輯窗口

當(dāng)輸入的某字段數(shù)據(jù)與該字段不符時(shí)(類型不符、超過(guò)記錄範(fàn)圍等),系統(tǒng)拒絕接受,並響鈴提醒用戶重新輸入。當(dāng)游標(biāo)在記憶型字段時(shí),若不想輸入數(shù)據(jù),按回車鍵把游標(biāo)下移一字段(按“↓”鍵也可)。若要輸入數(shù)據(jù),由於記憶型字段數(shù)據(jù)實(shí)際存儲(chǔ)在與庫(kù)檔同名、擴(kuò)展名為“FPT”的記憶檔中,因此,必須先按^PgDn控制鍵。按下^PgDn控制鍵後,系統(tǒng)立即在螢?zāi)簧细采w一個(gè)編輯記憶型字段的窗口。用戶在該窗口中為該記憶型字段輸入內(nèi)容。記憶型字段內(nèi)容輸入完畢後,用^W控制鍵結(jié)束之。系統(tǒng)把輸入的數(shù)據(jù)存入記憶檔,取消編輯記憶型字段窗口,恢復(fù)原編輯窗口。本記錄數(shù)據(jù)輸入完後,記錄指針

內(nèi)容自動(dòng)加1,在編輯窗口上又出現(xiàn)當(dāng)前記錄結(jié)構(gòu),等待用戶繼續(xù)追加下一記錄內(nèi)容。在追加記錄中,用戶可用PgUp、PgDn控制鍵上、下翻動(dòng)記錄。全部記錄追加完畢後,用^W或^End控制鍵結(jié)束APPEND命令。此時(shí),編輯窗口被撤銷,系統(tǒng)又回到命令窗口。(注意,必須執(zhí)行關(guān)閉庫(kù)檔操作,磁片上的該庫(kù)檔才包含新追加的內(nèi)容,見(jiàn)本章3.110節(jié)。)

對(duì)於C型和M型字段來(lái)說(shuō),輸入的英文大、小寫字母是不等價(jià)的。

3.1.8記錄的插入操作命令——INSERT

插入記錄操作可分為兩步:首先,把記錄指針移到所需位置然後,在此位置插入一記錄。這裏,只介紹插入記錄命令I(lǐng)NSERT。命令格式:INSERT[BLANK][BEFORE]當(dāng)無(wú)BEFORE任選項(xiàng)時(shí),在當(dāng)前記錄後插入新記錄若有BEFORE,則記錄插在當(dāng)前記錄前,且指針指向插入記錄。

當(dāng)有BLANK任選項(xiàng)時(shí),系統(tǒng)自動(dòng)在規(guī)定位置插入一空記錄,命令執(zhí)行完畢當(dāng)無(wú)BLANK時(shí),系統(tǒng)在螢?zāi)簧祥_(kāi)出編輯窗口(形式與APPEND的窗口相同),等待用戶輸入記錄內(nèi)容。

INSERT命令可以插入多條記錄,插入完畢後,用^W或^End控制鍵結(jié)束本次INSERT命令。

3.1.9給當(dāng)前打開(kāi)庫(kù)檔追加記錄命令

——APPENDFROM

本命令使系統(tǒng)自動(dòng)從一指定庫(kù)檔中讀出一些記錄,並追加到當(dāng)前打開(kāi)庫(kù)檔中。命令基本格式:APPENDFROM〈庫(kù)檔案名〉/?[FIELDS〈字段名清單][FOR〈條件〉]其中的〈庫(kù)檔案名〉為讀出數(shù)據(jù)的庫(kù)檔,也稱原始檔案,默認(rèn)擴(kuò)展名為DBF。被追加記錄的庫(kù)檔是當(dāng)前打開(kāi)庫(kù)檔,也稱目的庫(kù)檔。

其中,FOR〈條件〉項(xiàng),簡(jiǎn)稱條件項(xiàng),將在本章4.4節(jié)仲介紹。若目的庫(kù)檔中某字段的寬度小於源庫(kù)檔對(duì)應(yīng)字段的寬度,讀入數(shù)據(jù)時(shí),字符型字段超長(zhǎng)部分被截去,數(shù)字型字段只加入一串“*”。

FIELDS〈字段名清單〉項(xiàng),簡(jiǎn)稱字段名清單,將在本章4.4節(jié)仲介紹。

3.1.10關(guān)閉資料庫(kù)檔操作命令——USE

在內(nèi)存中的被打開(kāi)庫(kù)檔可能受到了各種修改,如用APPEND命令追加了記錄,用INSERT命令插入了記錄等,但磁片上的這個(gè)庫(kù)檔並未同時(shí)得到修改,關(guān)閉檔意味著用新修改過(guò)的檔去替換磁片上的原文件。因此,對(duì)打開(kāi)庫(kù)檔進(jìn)行了修改操作後,必須執(zhí)行關(guān)閉操作。關(guān)閉檔的命令也是USE。命令格式:USE

執(zhí)行了此命令後,打開(kāi)的庫(kù)檔將從記憶體中消失。注意,USE〈庫(kù)檔〉命令,在打開(kāi)命令中指定的庫(kù)檔時(shí),也關(guān)閉了原打開(kāi)庫(kù)檔。

3.1.11決定查詢技術(shù)命令——SETOPTIMIZE

命令格式:SETOPTIMIZEON/OFF

功能:此命令決定,在進(jìn)行數(shù)據(jù)查詢時(shí),是否使用Rushmore優(yōu)化技術(shù)。OPTIMIZE為ON時(shí),使用優(yōu)化技術(shù)為OFF時(shí),不使用。

Rushmore是FoxPro使用的一種優(yōu)化查詢技術(shù)。該技術(shù)大致為:執(zhí)行一使用Rushmore技術(shù)的命令時(shí),首先選出滿足FOR條件的所有記錄,然後再處理這些記錄,從而改善處理性能。在OPTIMIZE為ON情況下,若命令中選用NOOPITIMIZE項(xiàng),也不使用Rushmore技術(shù)。

可使用Rushmore技術(shù)改善性能的命令有:AVERAGECOUNTLABELSCANBROWSEDELETELISTSORTCALCULATEDISPLAYLOCATESUMCHANGEEDITRECALLTOTALCOPYTOEXPORTREPLACECOPYTOARRAYINDEXREPORT

3.2資料庫(kù)檔內(nèi)容的輸出

3.2.1列表輸出命令——LIST

利用LIST命令,可以輸出庫(kù)檔的結(jié)構(gòu)和記錄內(nèi)容。

1.輸出庫(kù)檔結(jié)構(gòu)命令格式:LISTSTRUCTURE[TOFILE〈檔案名〉/TOPRINTER][NOCONSOLE]此命令用來(lái)輸出打開(kāi)庫(kù)檔的結(jié)構(gòu)。有任選項(xiàng)“TOFILE〈檔案名〉”時(shí),庫(kù)檔結(jié)構(gòu)將輸出到對(duì)應(yīng)的磁片檔保存有任選項(xiàng)“TOPRINTER”時(shí),將輸出到印表機(jī)列印。有任選項(xiàng)“NOCONSOLE”時(shí),輸出內(nèi)容將不在螢?zāi)?/p>

桌面顯示否則,將在螢?zāi)蛔烂骘@示。例1

輸出“職工DBF”庫(kù)結(jié)構(gòu)。

USE職工

LISTSTRUCTURETOPRINTER

這個(gè)結(jié)果除列出了該庫(kù)檔結(jié)構(gòu)外,還在前部給出了:庫(kù)檔案名、已有記錄個(gè)數(shù)、最後更改日期及記憶檔的大小(需乘512)。在最後一行上給出記錄寬度。這個(gè)寬度比各字段寬度總和還多1。這個(gè)位元組是系統(tǒng)自動(dòng)在每個(gè)記錄的最前部增加的,用來(lái)存放刪除標(biāo)記“*”(見(jiàn)第4章4.2節(jié))。

2.輸出記錄內(nèi)容命令格式:LIST[OFF][〈範(fàn)圍〉][[FIELDS]〈字段名清單〉][FOR〈條件1〉][WHILE〈條件2〉][TOPRINTER/TOFILE〈檔案名〉][NOCONSOLE][NOOPTIMIZE]無(wú)OFF任選項(xiàng),則同時(shí)列出記錄號(hào)否則,不列出記錄號(hào)。範(fàn)圍任選項(xiàng)缺省時(shí),表示輸出全部記錄。字段名清單任選項(xiàng)缺省時(shí),輸出全部字段否則,輸出所列字段值。

條件任選項(xiàng)缺省時(shí),輸出範(fàn)圍內(nèi)的全部記錄。

NOOPTIMIZE任選項(xiàng):有此項(xiàng)時(shí),不使用優(yōu)化查詢技術(shù)否則,使用。

例2

鍵入以下兩條命令:USE職工

LIST

後,在顯示器桌面上的輸出如表2—1所示。

例3

鍵入以下兩條命令:USE職工

LIST職工號(hào),姓名,簡(jiǎn)歷在顯示器桌面上的輸出如表2—2,記憶型字段內(nèi)容也實(shí)際輸出。採(cǎi)用LIST命令輸出內(nèi)容時(shí),將把輸出內(nèi)容全部逐行輸出。

3.2.2分頁(yè)列表輸出命令——DISPLAY

與LIST命令相對(duì)應(yīng),DISPLAY也有兩種格式:(1)DISPLAYSTRUCTURE

[TOFILE〈檔案名〉/TOPRINTER][NOCONSOLE]

(2)DISPLAY[OFF][〈範(fàn)圍〉][[FIELDS]〈字段名清單〉][FOR〈條件1〉][WHILE〈條件2〉][TOPRINTER/TOFILE〈檔案名][NOCONSOLE][NOOPTIMIZE]DISPLAY命令與LIST命令的功能完全相同,在使用時(shí)僅有兩點(diǎn)差別:①DISPLAY命令分頁(yè)顯示整個(gè)內(nèi)容。用戶看清一頁(yè)後,按任一鍵,系統(tǒng)就顯示下一頁(yè)內(nèi)容,直至全部頁(yè)顯示完畢。

②當(dāng)命令中缺省“範(fàn)圍”和“條件”項(xiàng)時(shí),DISPLAY命令只輸出當(dāng)前記錄內(nèi)容。3.3FoxPro的有關(guān)語(yǔ)法規(guī)定

3.3.1命令的一般形式

FoxPro的命令很多,各有不同的功能和形式。但其中很多命令都具有一種類似的形式,稱為命令的一般形式。為了便於以後的講述,我們?cè)诖私榻B這種一般形式。以後在介紹具體命令時(shí),凡與一般形式意義相同的部分不再贅述。FoxPro命令的一般形式為:

命令字[〈範(fàn)圍〉][〈運(yùn)算式清單〉][FOR〈條件1〉][WHILE〈條件2〉]1.命令字所有的命令都有一個(gè)命令字,這個(gè)命令字決定了此命令的性質(zhì)。命令字是一個(gè)英文動(dòng)詞,它表達(dá)了該命令所要執(zhí)行的操作。我們已經(jīng)介紹過(guò)的命令字有:USE、CREATE、APPEND、LIST和DISPLAY等。

2.FOR〈條件〉和WHILE〈條件〉項(xiàng)〈條件〉是一個(gè)返回值為邏輯型的運(yùn)算式,如:工資<100,姓名=“王一民”。寫成條件項(xiàng)為:FOR工資<100,WHILE姓名=“王一民”等,用FOR或WHILE開(kāi)始均可。

條件項(xiàng)的含義為:只對(duì)那些使運(yùn)算式返回值為真(.T.)的記錄進(jìn)行命令規(guī)定的操作。

3.範(fàn)圍項(xiàng)範(fàn)圍任選項(xiàng)指出了命令所作用的記錄範(fàn)圍,其值可有如下五種選擇:ALL——範(fàn)圍為庫(kù)檔中所有記錄。

NEXTn——範(fàn)圍為從當(dāng)前記錄開(kāi)始的n個(gè)記錄,n是一個(gè)具體的十進(jìn)位數(shù)。

RECORDn——範(fàn)圍僅為第n號(hào)記錄。

REST——範(fàn)圍為從當(dāng)前記錄開(kāi)始直到檔結(jié)束的

所有記錄。缺省——若條件項(xiàng)同時(shí)缺省,不同命令有不同含義,或等價(jià)於ALL,或僅作用於當(dāng)前記錄。條件項(xiàng)以FOR開(kāi)始時(shí),將對(duì)範(fàn)圍內(nèi)符合條件的所有記錄進(jìn)行操作條件項(xiàng)以WHILE開(kāi)始時(shí),只要碰到一個(gè)不符合條件的記錄,不管剩下的範(fàn)圍內(nèi)是否還有符合條件的記錄,都停止繼續(xù)執(zhí)行命令。4.運(yùn)算式清單

命令字必須是一條命令的第一項(xiàng),而各任選項(xiàng)的順序可任意排列。一條命令的各部分之間必須有空格(FOR/WHILE與“條件”之間也必須有空格),但空格個(gè)數(shù)不限。一條命令的總長(zhǎng)度(包括命令中的所有空格)不能超過(guò)254個(gè)字元(一個(gè)漢字以兩個(gè)字元計(jì)算)。3.3.2記憶體變數(shù)與常量在FoxPro中,除了字段變數(shù)外,還有一種變數(shù),它存在於記憶體之中,獨(dú)立於資料庫(kù)檔,稱為記憶體變數(shù)。退出FoxPro時(shí),記憶體中的所有記憶體變數(shù)都將消失,不自動(dòng)保存到磁片上?;居洃涹w變數(shù)有字元型、數(shù)字型、日期型、邏輯型和螢?zāi)恍臀宸N,沒(méi)有記憶型記憶體變數(shù)。

FoxPro還可建立記憶體變數(shù)數(shù)組,詳見(jiàn)第6章。

FoxPro允許用戶最多定義3600個(gè)記憶體變數(shù)同時(shí)存放在記憶體中。

用戶可直接用記憶體變數(shù)名對(duì)內(nèi)存變數(shù)進(jìn)行訪問(wèn)。但若記憶體變數(shù)名與某字段變數(shù)名相同時(shí),必須用如下格式訪問(wèn):M->〈記憶體變數(shù)名〉或M〈記憶體變數(shù)名〉

1.定義記憶體變數(shù)的兩種基本方法記憶體變數(shù)必須先定義後使用。FoxPro中,有兩種最基本的定義記憶體變數(shù)法,它們是:(1)STORE〈運(yùn)算式〉TO〈記憶體變數(shù)名清單〉

(2)〈記憶體變數(shù)名〉=〈運(yùn)算式〉格式(1)的功能是把語(yǔ)句中表達(dá)式的值賦給〈記憶體

變數(shù)名清單〉中的所有記憶體變數(shù)格式(2)的功能是把等號(hào)右邊〈運(yùn)算式〉的值賦給等號(hào)左邊的一個(gè)記憶體變數(shù)。例1

STORE245TOA,B,C

執(zhí)行了這個(gè)命令,記憶體變數(shù)A、B、C中的值均是245。例2

X=10X=X+1

兩條命令執(zhí)行後,記憶體變數(shù)X的值為11。

2.常量的處理定義記憶體變數(shù)時(shí),如果把常量賦值給記憶體變數(shù),系統(tǒng)對(duì)常量的表示法有一些規(guī)定。

(1)數(shù)字型常量可直接使用。

例.3X=236(2)字元型常量必須用單引號(hào)、雙引號(hào)或方括號(hào)括起,這些符號(hào)總稱為字元括弧。在漢字FoxPro中,在其他地方使用字串常量時(shí),一般也都需要用字符括弧括起。

例.4Y=“工程師A”(3)邏輯型常量必須用英文句點(diǎn)括起。

例.5

Z=T(4)日期型常量用花括弧括起。

例.6STORE{12/25/92}TOXMAS

日期型常量也可用CTOD函數(shù),詳見(jiàn)3.34節(jié),這裏只給出形式:D=CTOD(“11/12/93”)

3.輸出記憶體變數(shù)的值最簡(jiǎn)單的輸出記憶體變數(shù)值的命令是?和???;久罡袷??/??〈運(yùn)算式〉[AT〈數(shù)字運(yùn)算式〉]此兩命令均為輸出命令,輸出命令中〈運(yùn)算式〉的值。用“?”命令時(shí),在輸出運(yùn)算式值前首先執(zhí)行一次回車換行使用“??”,則直接輸出。使用[AT〈數(shù)字運(yùn)算式〉]任選項(xiàng)時(shí),該數(shù)字運(yùn)算式的值決定輸出的起始列號(hào)。

3.3.3運(yùn)算式

任何一個(gè)字段變數(shù)、記憶體變數(shù)、常量或函數(shù)都是運(yùn)算式,用操作符把運(yùn)算式正確連接起來(lái)的式子也是運(yùn)算式。運(yùn)算式值的類型稱為運(yùn)算式的類型。運(yùn)算式的類型與所含變數(shù)的類型有關(guān),但還與所進(jìn)行的操作有關(guān)。變數(shù)的類型不同,所能進(jìn)行的操作也不同。

FoxPro提供數(shù)字型、關(guān)係型、邏輯型和字串型等四類運(yùn)算。

1.數(shù)字型運(yùn)算這類運(yùn)算共有以下七種操作:(1)加法:+(單目運(yùn)算時(shí)為“正”)

(2)減法:-(單目運(yùn)算時(shí)為“負(fù)”)(3)乘法:*

(4)除法:/(5)〖WB〗取模(餘數(shù)):%〖DW〗格式:〈數(shù)字運(yùn)算式1〉%〈數(shù)字運(yùn)算式2〉〈數(shù)字運(yùn)算式1〉為被除數(shù),〈數(shù)字運(yùn)算式2〉為除數(shù)。此操作結(jié)果為兩數(shù)相除的餘數(shù)。被除數(shù)的小數(shù)位數(shù)決定了結(jié)果中的小數(shù)位數(shù)。除數(shù)值為正,結(jié)果為正除數(shù)值為負(fù),結(jié)果為負(fù)。除數(shù)不能為零。(6)指數(shù):**或^

(7)括弧:()

數(shù)字型運(yùn)算的運(yùn)算順序:①括弧②單目運(yùn)算③指數(shù)運(yùn)算④乘除取模運(yùn)算⑤加減運(yùn)算。

2.關(guān)係型運(yùn)算關(guān)係型操作用於比較兩個(gè)同類運(yùn)算式(非邏輯型),結(jié)果是個(gè)邏輯值。這類運(yùn)算有以下六種操作:

(1)小於:<(2)大於:>(3)等於:=

(4)不等:<>或用#

(5)小於等於:<=

(6)大於等於:>=

3.邏輯型運(yùn)算這類運(yùn)算共有以下四種操作:

(1)邏輯與:AND

(2)邏輯或:OR(3)邏輯非:NOT

(4)括弧:()

邏輯型運(yùn)算的運(yùn)算結(jié)果是邏輯值。邏輯型運(yùn)算的運(yùn)算順序:①括?、诜沁\(yùn)算③與運(yùn)算④或運(yùn)算。4.字串型運(yùn)算字串型運(yùn)算包括兩類操作。

(1)字串連接運(yùn)算:+、-+運(yùn)算是把兩個(gè)字串串接起來(lái),形成一個(gè)新的字串。-運(yùn)算也是把兩個(gè)字串串接起來(lái),形成一個(gè)新的字串。但在-(減)運(yùn)算時(shí),前一字串若有尾部空格,則把尾部空格移到新字串的尾部。如:“最後”+“結(jié)果”得:“最後結(jié)果”“最後”-“結(jié)果”得:“最後結(jié)果”

3.3.4基本函數(shù)

FoxPro提供了很多函數(shù)。本節(jié)只介紹一些基本函數(shù),其他見(jiàn)本書(shū)參考文獻(xiàn)[3]。

1.算術(shù)運(yùn)算函數(shù)

(1)ABS——絕對(duì)值函數(shù)格式:ABS(〈數(shù)字運(yùn)算式〉)ABS函數(shù)給出〈數(shù)字運(yùn)算式〉值的絕對(duì)值。

(2)FV——零存整取函數(shù)

(3)INT——取整函數(shù)

(4)MAX——最大值函數(shù)(5)MIN——最小值函數(shù)

(6)MOD()——求模(餘數(shù))函數(shù)

(7)PI——π函數(shù)

(8)RAND——亂數(shù)函數(shù)

(9)ROUND——四捨五入函數(shù)

(10)SIGN——符號(hào)函數(shù)

(11)SQRT——平方根函數(shù)

2.字元運(yùn)算函數(shù)

(1)&——宏代換函數(shù)

(2)AT——子串尋找函數(shù)(3)LEFT——左子串函數(shù)(4)LEN——字串長(zhǎng)度函數(shù)(5)LOWER——變小寫函數(shù)(6)LTRIM——?jiǎng)h除頭部空格函數(shù)(7)PROPER——首字元大寫函數(shù)(8)RIGHT——尾子串函數(shù)(9)SPACE——空格函數(shù)(10)SUBSTR——子串函數(shù)(11)TRIM——去尾部空格函數(shù)(12)UPPER——變大寫函數(shù)3.日期和時(shí)間函數(shù)(1)DATE——系統(tǒng)日期函數(shù)(2)CMONTH——月份名函數(shù)(3)MONTH——月份函數(shù)(4)CDOW/DOW——星期幾函數(shù)(5)DAY——日期函數(shù)(6)YEAR——年函數(shù)4.轉(zhuǎn)換函數(shù)(1)ASC——求ASCII碼函數(shù)(2)CHR——求字元函數(shù)(3)CTOD——字元型轉(zhuǎn)換成日期型函數(shù)(4)DTOC——日期型轉(zhuǎn)換成字元型函數(shù)(5)STR——數(shù)字型轉(zhuǎn)換成字元型函數(shù)(6)VAL——字元型轉(zhuǎn)換成數(shù)字型函數(shù)5.狀態(tài)檢驗(yàn)函數(shù)(1)BOF——檔起始函數(shù)(2)EOF——檔結(jié)束函數(shù)(3)FSIZE——求字段寬度函數(shù)(4)FOUND——查找成功否函數(shù)(5)RECNO——當(dāng)前記錄號(hào)函數(shù)(6)COL——螢?zāi)涣凶鶚?biāo)函數(shù)(7)ROW——螢?zāi)恍凶鶚?biāo)函數(shù)(8)PCOL——印表機(jī)列座標(biāo)函數(shù)4.1編輯控制鍵的功能

FoxPro在執(zhí)行許多命令時(shí),都使系統(tǒng)進(jìn)入窗口編輯狀態(tài)。例如,在執(zhí)行建立庫(kù)檔結(jié)構(gòu)命令CREATE、追加記錄命令A(yù)PPEND、插入記錄命令I(lǐng)NSERT時(shí),都要進(jìn)入窗口編輯狀態(tài)。在這一狀態(tài)下,系統(tǒng)不再執(zhí)行命令,所輸入的各種數(shù)據(jù)都只是暫存在記憶體中,各數(shù)據(jù)間的相對(duì)位置由它們?cè)陲@示幕幕上的相對(duì)位置來(lái)確定。在這種狀態(tài)下,系統(tǒng)向用戶提供了很多控制鍵。4.2資料庫(kù)檔的編輯

4.2.1對(duì)記錄的編輯命令——EDIT

1.命令的基本格式

EDIT[[RECORD]〈數(shù)字運(yùn)算式〉][〈範(fàn)圍〉][FIELDS〈字段名清單〉][FOR〈條件1〉][WHILE〈條件2〉][FREEZE〈字段名〉]若缺省〈範(fàn)圍〉和條件,則從當(dāng)前記錄開(kāi)始編輯。2.EDIT命令的常用格式

與基本格式相比,常用格式中增加了如下的選擇項(xiàng):

[NOAPPEND][NODELETE][NOEDIT/NOMODIFY][TITLET〈字元運(yùn)算式〉][VALID[:F]〈條件運(yùn)算式〉[ERROR〈出錯(cuò)資訊〉]][WHEN〈條件運(yùn)算式〉]

4.2.2庫(kù)檔翻閱命令——BROWSE

BROWSE命令是FoxPro最有用的命令之一。BROWSE命令將打開(kāi)一個(gè)窗口(Browse窗),在窗中顯示一個(gè)打開(kāi)庫(kù)檔的記錄。用戶可方便地進(jìn)行編輯或追加記錄。

1.BROWSE命令的基本格式

BROWSE[FIELDS〈字段名清單〉][FOR〈條件運(yùn)算式〉][FREEZE〈字段名〉]該命令在Browse窗中分頁(yè)橫式顯示從當(dāng)前記錄開(kāi)始所有符合條件的記錄。

無(wú)FIELDS選擇項(xiàng)時(shí),顯示全部字段;有FIELDS選項(xiàng)時(shí)(先把〈字段名清單〉理解為用“,”分隔的字段名),按〈字段名清單〉的次序,顯示〈字段名清單〉中給出字段的內(nèi)容。無(wú)FOR選擇項(xiàng)時(shí),顯示全部記錄;否則,只顯示使〈條件運(yùn)算式〉為T的記錄。無(wú)FREEZE選擇項(xiàng)時(shí),可編輯所有字段;否則,只能編輯FREEZE中給出的字段。

2.BROWSE命令的常用格式與基本格式相比,常用格式中增加了如下選擇項(xiàng):

[LOCK〈數(shù)字運(yùn)算式〉][NOAPPEND][NODELETE][NOEDIT/NOMODIFY][TITLE〈字元運(yùn)算式〉][VALID[:F]〈邏輯運(yùn)算式〉[ERROR〈字元運(yùn)算式〉]][WHEN〈邏輯運(yùn)算式〉]

無(wú)LOCK子句時(shí),當(dāng)用戶用^←和^→控制鍵時(shí),整個(gè)Browse窗中的顯示內(nèi)容都將左右移動(dòng),有些字段將從窗中移走,有些字段將移入窗中。有了LOCK子句,〈數(shù)字運(yùn)算式〉將給出一個(gè)數(shù)字n,當(dāng)左右移動(dòng)窗口內(nèi)容時(shí),在最左邊顯示的n個(gè)字段的內(nèi)容始終留在窗中不動(dòng)。

BROWSE常用格式中增加的其他選擇項(xiàng)都與EDIT命令常用格式中的選擇項(xiàng)相同:形式相同,功能也相同。因此,在此不再贅述了。

4.2.3修改命令——CHANGE

在FoxPro26中,CHANGE命令無(wú)論在命令格式上還是在功能上都與EDIT命令全相同,只是命令名不同而已。請(qǐng)讀者查閱EDIT命令。

4.2.4替換命令——REPLACE

對(duì)字段值進(jìn)行有規(guī)則的修改時(shí),可以利用REPLACE命令來(lái)自動(dòng)完成修改任務(wù)。命令格式:REPLACE〈字段名1〉WITH〈運(yùn)算式1〉[ADDITIVE][,〈字段名2〉WITH〈運(yùn)算式2〉[ADDITIVE]...][〈範(fàn)圍〉][FOR〈條件1〉][WHILE〈條件2〉][NOOPTIMIZE]若缺省了範(fàn)圍和兩個(gè)條件項(xiàng),則僅對(duì)當(dāng)前記錄進(jìn)行操作。功能:對(duì)所有符合要求的記錄,系統(tǒng)自動(dòng)地用每個(gè)WITH後的運(yùn)算式值來(lái)修改WITH前的字段值。

無(wú)ADDITIVE時(shí),則進(jìn)行替換;有ADDITIVE時(shí)(ADDITIVE只能用於修改記憶型字段),〈運(yùn)算式〉值追加在原數(shù)據(jù)後。若被修改的數(shù)字型字段寬度小於對(duì)應(yīng)運(yùn)算式寬度,則系統(tǒng)自動(dòng)作如下處理:

首先,截去多餘小數(shù)位,剩下的小數(shù)位四捨五入。若無(wú)法完成,則用科學(xué)計(jì)數(shù)法表示該數(shù)。若仍不行,則用一串“*”替代該字段內(nèi)容。

對(duì)於字元型字段來(lái)說(shuō),若〈運(yùn)算式〉內(nèi)容超寬,則截去尾部超寬部分。

NOOPTIMIZE項(xiàng):該項(xiàng)將禁止對(duì)REPLACE命令進(jìn)行優(yōu)化操作,詳見(jiàn)SETOPTIMIZE命令。

4.2.5修改庫(kù)檔結(jié)構(gòu)命令——MODIFYSTRUCTURE

命令格式:MODIFYSTRUCTURE

功能:對(duì)當(dāng)前打開(kāi)庫(kù)檔進(jìn)行修改結(jié)構(gòu)工作。若無(wú)當(dāng)前打開(kāi)庫(kù)檔,系統(tǒng)將提示用戶選擇一個(gè)庫(kù)檔。此命令執(zhí)行過(guò)程如下:①系統(tǒng)自動(dòng)在磁片上建立一與當(dāng)前打開(kāi)庫(kù)檔同名,但擴(kuò)展名為BAK的後備檔。

②在螢?zāi)蛔烂嫔祥_(kāi)出一矩形區(qū)域,並在其中顯示庫(kù)檔結(jié)構(gòu),格式與CREATE命令相同。③修改結(jié)束後,系統(tǒng)自動(dòng)把同名後備檔內(nèi)容讀回庫(kù)檔。還有類似的其他情況發(fā)生,即修改後的庫(kù)檔數(shù)據(jù)失去了一些原有數(shù)據(jù)。不管發(fā)生什麼情況,只要是使用MODIFYSTRUCTURE產(chǎn)生了問(wèn)題,都可用下法恢復(fù)原樣:①刪去被修改了結(jié)構(gòu)的庫(kù)檔及記憶檔。

②把BAK和TBK後備檔改名為同名DBF、FPT檔。

4.2.6刪除庫(kù)檔記錄

對(duì)記錄的刪除應(yīng)持謹(jǐn)慎態(tài)度。FoxPro把刪除記錄的操作分為兩步:刪除操作和打包操作。刪除操作不刪除記錄,只在準(zhǔn)備刪除的記錄上打上刪除標(biāo)記“*”,這種標(biāo)記是可以取消的。打包操作才真正刪除記錄。

1.給記錄打刪除標(biāo)記命令——DELETE

DELETE命令用於給記錄打刪除標(biāo)記“*”。命令格式:DELETE[〈範(fàn)圍〉][FOR〈條件1〉][WHILE〈條件2〉][NOOPTIMIZE]在缺省〈範(fàn)圍〉和兩條件項(xiàng)時(shí),僅給當(dāng)前記錄打刪除標(biāo)記;否則,對(duì)範(fàn)圍內(nèi)符合條件的記錄打刪除標(biāo)記。

在執(zhí)行BROWSE、EDIT、CHANGE命令時(shí)也可給記錄打刪除標(biāo)記,這些命令在前面已介紹過(guò)。

NOOPTIMIZE項(xiàng):見(jiàn)SETOPTIMIZE命令。

例1

USE職工

DELETENEXT3

執(zhí)行上述命令後,職工DBF庫(kù)檔中,記錄號(hào)為1、2、3的三條記錄打上了刪除標(biāo)記。

2.恢復(fù)記錄命令——RECALL

已經(jīng)打上的刪除標(biāo)記,可以用RECALL命令撤銷。命令格式:RECALL[〈範(fàn)圍〉][FOR〈條件1〉][WHILE〈條件2〉][NOOPTIMIZE]在缺省〈範(fàn)圍〉和兩個(gè)條件項(xiàng)時(shí),僅給當(dāng)前記錄撤銷刪除標(biāo)記;否則,範(fàn)圍內(nèi)符合條件記錄的刪除標(biāo)記(若有)都被撤銷。

NOOPTIMIZE項(xiàng):禁止對(duì)RECALL語(yǔ)句進(jìn)行優(yōu)化處理,詳見(jiàn)SETOPTIMIZE命令。

例2

USE職工

RECALLNEXT5

執(zhí)行上述兩條命令後,記錄號(hào)為1、2、3、4、5記錄的刪除標(biāo)記(若有)都被撤銷。

3.壓縮命令——PACK

格式:PACK[MEMO][DBF]在無(wú)選擇項(xiàng)時(shí),PACK命令把當(dāng)前打開(kāi)庫(kù)檔中所有打上了刪除標(biāo)記的記錄,真正地從庫(kù)檔中刪除掉;同時(shí),也壓縮了與庫(kù)檔同名、擴(kuò)展名為FPT的記憶檔。歸納成一句話,就是把庫(kù)檔和記憶檔同時(shí)壓縮掉。在執(zhí)行PACK命令的過(guò)程中,若磁片空間不夠的話,源庫(kù)檔也將被覆蓋掉。

MEMO子句:選擇MEMO子句,將不壓縮當(dāng)前打開(kāi)庫(kù)檔,而只壓縮記憶檔。也即,並不刪除庫(kù)檔中打有刪除標(biāo)記的記錄,僅把記憶檔中無(wú)用空間壓縮掉。

4.決定刪除標(biāo)記影響的命令——SETDELETED

刪除標(biāo)記對(duì)執(zhí)行命令有否影響,SETDELETED命令可以決定這個(gè)問(wèn)題。命令格式:SETDELETEDOFF/ON

執(zhí)行SETDELETEDOFF命令後,刪除標(biāo)記對(duì)任何命令均無(wú)影響。而執(zhí)行SETDELETEDON命令後,系統(tǒng)在執(zhí)行命令時(shí),一般都不包括打有刪除標(biāo)記的記錄。例外情況有:①命令中有RECORD〈運(yùn)算式〉或NEXT〈運(yùn)算式〉範(fàn)圍項(xiàng),且範(fàn)圍內(nèi)第一個(gè)記錄是打上了刪除標(biāo)記的。②本章後面講到的INDEX和REINDEX命令不受SETDELETED命令的影響。

DELETED的初始默認(rèn)值為OFF。

5.清除庫(kù)檔中所有記錄命令ZAP和保護(hù)命令——SETSAFETY(1)ZAP命令命令格式:ZAP

功能:清除已打開(kāi)庫(kù)檔中全部記錄,但庫(kù)檔還存在,庫(kù)檔結(jié)構(gòu)也不變。為慎重起見(jiàn),漢字FoxPro還為ZAP命令加了一個(gè)。

保護(hù)級(jí),這就是SETSAFETY命令

(2)SETSAFETY命令命令格式:SETSAFETYON/OFF

執(zhí)行SETSAFETYON命令後,當(dāng)要求系統(tǒng)執(zhí)行ZAP命令時(shí),系統(tǒng)首先在螢?zāi)簧巷@示:ZAP檔案名?(Y/N)

若用戶用Y鍵回答,系統(tǒng)立即執(zhí)行ZAP命令(清除庫(kù)中所有記錄);若以N鍵回答,系統(tǒng)不執(zhí)行ZAP命令,返回到命令狀態(tài)。

執(zhí)行SETSAFETYOFF命令後,若要求系統(tǒng)執(zhí)行ZAP命令,則系統(tǒng)立即執(zhí)行之,而不顯示任何提示資訊。系統(tǒng)的初始狀態(tài)是SAFETYON狀態(tài)。其實(shí),當(dāng)SAFETY為ON,在發(fā)出任何重寫檔命令時(shí),系統(tǒng)都要向用戶顯示上述提示,用戶確認(rèn)後,才真

溫馨提示

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

評(píng)論

0/150

提交評(píng)論