版權(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)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 二零二五年度高性能電子元器件購銷合同3篇
- 2025年度高新技術(shù)產(chǎn)品研發(fā)與貨物質(zhì)押合同范本4篇
- 2025年度房地產(chǎn)租賃合同書范本(含2025年度稅費(fèi)計(jì)算)2篇
- 個人食品加工廠租賃合同(2024版)
- 2025年度旅游度假區(qū)場地租賃分成合同模板4篇
- 二零二五年度房地產(chǎn)項(xiàng)目股權(quán)分配合同范本
- 2025年度立體車庫租賃權(quán)轉(zhuǎn)讓合同
- 二零二五年度足療養(yǎng)生店租賃合同范本(含財(cái)務(wù)結(jié)算支持)
- 二零二五年度解除房屋買賣合同及原購房款及裝修款退還協(xié)議
- 2025年度養(yǎng)老養(yǎng)生用地租賃與養(yǎng)老設(shè)施建設(shè)合同協(xié)議
- JTS-167-2-2009重力式碼頭設(shè)計(jì)與施工規(guī)范
- DBJ-T15-81-2022 建筑混凝土結(jié)構(gòu)耐火設(shè)計(jì)技術(shù)規(guī)程
- GB/T 22849-2024針織T恤衫
- 山東省淄博市2023-2024學(xué)年高二上學(xué)期教學(xué)質(zhì)量檢測化學(xué)試題
- 人工智能在電影與影視制作中的創(chuàng)新與效果提升
- 新生兒腸絞痛的課件
- 酒店民宿自媒體營銷策劃
- 消除母嬰傳播培訓(xùn)課件
- 包裝過程質(zhì)量控制
- 通用電子嘉賓禮薄
- 李毓佩數(shù)學(xué)歷險記
評論
0/150
提交評論