數(shù)據(jù)庫(kù)系統(tǒng)1-9章基礎(chǔ)知識(shí)_第1頁(yè)
數(shù)據(jù)庫(kù)系統(tǒng)1-9章基礎(chǔ)知識(shí)_第2頁(yè)
數(shù)據(jù)庫(kù)系統(tǒng)1-9章基礎(chǔ)知識(shí)_第3頁(yè)
數(shù)據(jù)庫(kù)系統(tǒng)1-9章基礎(chǔ)知識(shí)_第4頁(yè)
數(shù)據(jù)庫(kù)系統(tǒng)1-9章基礎(chǔ)知識(shí)_第5頁(yè)
已閱讀5頁(yè),還剩143頁(yè)未讀 繼續(xù)免費(fèi)閱讀

下載本文檔

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

文檔簡(jiǎn)介

第一章數(shù)據(jù)庫(kù)系統(tǒng)基礎(chǔ)知識(shí)

1.1數(shù)據(jù)庫(kù)系統(tǒng)概述

1.數(shù)據(jù)處理

數(shù)據(jù):

是對(duì)事實(shí)、概念或指令的一種特殊表達(dá)形式,可

以用人工的方式或自動(dòng)化的裝置進(jìn)行通信、翻譯

轉(zhuǎn)換或者進(jìn)行加工處理。它包括兩類(lèi):一類(lèi)是

能參與數(shù)字運(yùn)算的數(shù)值型數(shù)據(jù);一類(lèi)是不能參與

數(shù)字運(yùn)算的非數(shù)值型數(shù)據(jù),如文字、圖畫(huà)、聲音、

活動(dòng)圖象等。

數(shù)據(jù)處理:

是對(duì)各種類(lèi)型的數(shù)據(jù)進(jìn)行收集、存儲(chǔ)、分類(lèi)、計(jì)

算、加工、檢索與傳輸?shù)倪^(guò)程。

包括:收集原始數(shù)據(jù)、編碼轉(zhuǎn)換、數(shù)據(jù)輸入、數(shù)

據(jù)處理、數(shù)據(jù)輸出。

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

(1)數(shù)據(jù)庫(kù)(DataBase)

定義:是以一定的組織形式存放在計(jì)算機(jī)存儲(chǔ)介

質(zhì)上的相互關(guān)聯(lián)的數(shù)據(jù)的集合。

特點(diǎn):具有最小的冗余度、具有數(shù)據(jù)獨(dú)立性、實(shí)

現(xiàn)數(shù)據(jù)共享、安全可靠、保密性能好

(2)數(shù)據(jù)庫(kù)管理系統(tǒng)(DataBaseManagement

System)

定義:是操縱和管理數(shù)據(jù)庫(kù)的系統(tǒng)軟件。Visual

FoxPro屬于一種關(guān)系型數(shù)據(jù)庫(kù)管理系統(tǒng)。

數(shù)據(jù)語(yǔ)言:

數(shù)據(jù)定義語(yǔ)言(DDL):用來(lái)建立所需的數(shù)據(jù)

庫(kù)。

數(shù)據(jù)操作語(yǔ)言(DML):用來(lái)對(duì)數(shù)據(jù)庫(kù)進(jìn)行查

詢(xún)和維護(hù)操作。

關(guān)系型數(shù)據(jù)庫(kù)使用的標(biāo)準(zhǔn)語(yǔ)言是結(jié)構(gòu)化查詢(xún)語(yǔ)

言(StructuredQueryLanguage,SQL)。

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

定義:是以數(shù)據(jù)庫(kù)應(yīng)用為基礎(chǔ)的計(jì)算機(jī)系統(tǒng)。

組成:

數(shù)據(jù)庫(kù)

硬件(計(jì)算機(jī)硬件設(shè)備)

軟件(數(shù)據(jù)庫(kù)管理系統(tǒng)、操作系統(tǒng))

用戶(hù)(應(yīng)用程序設(shè)計(jì)員、終端用戶(hù)、數(shù)據(jù)庫(kù)管理

員)

分類(lèi):層次型數(shù)據(jù)庫(kù)、網(wǎng)狀型數(shù)據(jù)庫(kù)、關(guān)系型數(shù)

據(jù)庫(kù)

分代:第一代非關(guān)系型數(shù)據(jù)庫(kù)系統(tǒng),60年代末

問(wèn)世,包括層次型和網(wǎng)狀型。

第二代關(guān)系型數(shù)據(jù)庫(kù)系統(tǒng)(RDBS),70年代

中期問(wèn)世。

第三代對(duì)象-關(guān)系數(shù)據(jù)庫(kù)系統(tǒng)(ORDBS、

OOBDS),80年代中期至今。

上述三個(gè)概念之間的聯(lián)系:在數(shù)據(jù)庫(kù)系統(tǒng)中通過(guò)

數(shù)據(jù)庫(kù)管理系統(tǒng)來(lái)建立和使用數(shù)據(jù)庫(kù)。

3.關(guān)系模型

三個(gè)領(lǐng)域:

現(xiàn)實(shí)世界一事物(對(duì)象、性質(zhì))

觀念世界—實(shí)體(對(duì)象、屬性)

數(shù)據(jù)世界一數(shù)據(jù)(記錄、字段)

實(shí)體模型:即反映事物聯(lián)系的實(shí)體。

數(shù)據(jù)模型:即描述實(shí)體模型的數(shù)據(jù)。

數(shù)據(jù)模型的分類(lèi):

層次模型(采用樹(shù)型結(jié)構(gòu))

網(wǎng)絡(luò)模型(采用無(wú)向圖型結(jié)構(gòu))

關(guān)系模型(采用二維表結(jié)構(gòu))

關(guān)系模型的性質(zhì):

二維表的記錄數(shù)隨數(shù)據(jù)的增加而改變,但其字段

數(shù)是相對(duì)固定的;二維表中的每一列均有唯一的

字段名;二維表中不允許出現(xiàn)完全相同的兩行二

維表中行的順序、列的順序均可以任意交換。

二維表的主關(guān)鍵字:超關(guān)鍵字:能唯一確定記錄

的一列或幾列的組合

候選關(guān)鍵字:最簡(jiǎn)練的超關(guān)鍵字

主關(guān)鍵字:候選關(guān)鍵字中的一個(gè)

外部關(guān)鍵字:當(dāng)A表的主關(guān)鍵字被包含到B表

中時(shí),則稱(chēng)A表的主關(guān)鍵字為B表的外部關(guān)鍵

字。

4.微機(jī)關(guān)系型數(shù)據(jù)庫(kù)系統(tǒng)的發(fā)展

關(guān)系型數(shù)據(jù)庫(kù):即根據(jù)表、記錄和字段之間的關(guān)

系進(jìn)行組織和訪問(wèn)的一種數(shù)據(jù)庫(kù)。

發(fā)布時(shí)

名稱(chēng)運(yùn)行環(huán)境公司名稱(chēng)

dBASE,

dBASEII,

dBASE

DOSAshton-Tate

III,dBASElII

PLUS,

dBASE

Fox軟件公

FoxBASE1.0DOS1987.2

FoxBASE+DOSFox軟件公87.7/88.7

⑵00/2.10)司

Fox軟件公

FoxPro1.0DOS1989

Fox軟件公

FoxPro2.0DOS1991

DOS、

FoxPro2.5微軟公司1993.1

WINDOWS3.x

DOS、

FoxPro2.6微軟公司1994

Windows3.x

Visual

Windows3.X微軟公司1996.1

FoxPro3.0

Visual

Windows95微軟公司1997.2

FoxPro5.0

Visual

Windows98微軟公司1998.1

FoxPro6.0

1.2VisualFoxPro6.0概述

1.VFP6.0的特點(diǎn)

完善了關(guān)系型數(shù)據(jù)庫(kù)的概念,采用了Rushmore

技術(shù),引入了SQL命令;支持多種數(shù)據(jù)交換格

式;采用了可視化的面向?qū)ο蟮某绦蛟O(shè)計(jì)方式;

提供了功能完善的集成環(huán)境和豐富的開(kāi)發(fā)工具。

2.VFP6.0的用戶(hù)界面[圖例]

界面基本組成:標(biāo)題欄、主菜單欄、工具欄、主

窗口、命令窗口、狀態(tài)欄

系統(tǒng)工具一覽表

各種菜各種工各種窗各種設(shè)各種生各種向

單具欄口計(jì)器成器導(dǎo)

文件菜常用工命令窗數(shù)據(jù)庫(kù)文本框

表向?qū)?/p>

單具欄口設(shè)計(jì)器生成器

表單控

編輯菜瀏覽窗表設(shè)計(jì)組合框交叉表

制工具

單口器生成器向?qū)?/p>

顯示菜布局工代碼窗表單設(shè)命令組查詢(xún)向

單具欄口v\你r生成器導(dǎo)

格式菜調(diào)色板調(diào)試窗菜單設(shè)編輯框本地視

單工具欄口生成器圖向?qū)?/p>

打印預(yù)

工具菜編輯窗報(bào)表設(shè)表達(dá)式表單向

覽工具

單口生成器導(dǎo)

報(bào)表控一對(duì)多

程序菜查看窗標(biāo)簽設(shè)表單生

制工具表單向

單口vr\福an"成器

欄導(dǎo)

查詢(xún)?cè)O(shè)

窗口菜跟蹤窗類(lèi)設(shè)計(jì)表格生報(bào)表向

計(jì)器工

單口器成器導(dǎo)

具欄

表單設(shè)一對(duì)多

幫助菜屬性窗連接設(shè)列表框

出工報(bào)表向

單□計(jì)器生成器

具欄導(dǎo)

報(bào)表設(shè)

菜單菜標(biāo)簽向

出工查詢(xún)和參照完

單通用字導(dǎo)

具欄視圖設(shè)整性生

段窗口

數(shù)據(jù)壞計(jì)器成器遠(yuǎn)程視

境菜單圖向?qū)?/p>

數(shù)據(jù)庫(kù)

表單菜郵件合

設(shè)計(jì)器項(xiàng)目管數(shù)據(jù)環(huán)自動(dòng)格

單并向?qū)?/p>

工具欄理器窗境設(shè)計(jì)式生成

項(xiàng)目菜導(dǎo)入向

口器器

單導(dǎo)

查詢(xún)菜選項(xiàng)組圖形向

單生成器導(dǎo)

報(bào)表菜數(shù)據(jù)透

(1)菜單操作方式

根據(jù)所需的操作從菜單中選擇相應(yīng)的命令(與

NORD類(lèi)似)。每執(zhí)行一次菜單命令,命令窗口

中一般都會(huì)顯示出與菜單對(duì)應(yīng)的命令內(nèi)容。

利用工具菜單中的向?qū)Э梢院芊奖愕赝瓿沙R?guī)

任務(wù)。

(2)命令交互方式

根據(jù)所要進(jìn)行的各項(xiàng)操作,采用人機(jī)對(duì)話方式在

命令窗口中按格式要求逐條輸入所需命令,按回

車(chē)后,機(jī)器逐條執(zhí)行。

(3)程序執(zhí)行方式

先在程序編輯窗口中編完程序,再?gòu)某绦虿藛沃?/p>

選擇執(zhí)行,或從命令窗口中輸入DO命令,讓

機(jī)器執(zhí)行。

4.VFP9.0常用文件類(lèi)型

VFP9.0常用的文件擴(kuò)展名及其關(guān)聯(lián)的文件類(lèi)型

擴(kuò)展

文件類(lèi)型擴(kuò)展名文件類(lèi)型

生成的應(yīng)用程

.app.frx報(bào)表

.exe可執(zhí)行程序.frt報(bào)表備注

.Pjx項(xiàng)目.Ibx標(biāo)簽

.PJt項(xiàng)目備注.Ibt標(biāo)簽備注

.dbc數(shù)據(jù)庫(kù)?prg程序

.det數(shù)據(jù)庫(kù)備注.fxp編譯后的程序

.dex數(shù)據(jù)庫(kù)索引.err編譯錯(cuò)誤

.dbf表.mnx菜單

.fpt表備注.mnt菜單備注

.cdx復(fù)合索引.mpr生成的菜單程序

編譯后的菜單程

.idx單索引.mpx

生成的查詢(xún)程

.qpr.vex可視類(lèi)庫(kù)

編譯后的查詢(xún)

?qpx.vet可視類(lèi)庫(kù)備注

程序

.sex表單.txt文本

.set表單備注.bak備份文件

5.創(chuàng)建文件

新建各種類(lèi)型的文件時(shí),可以利用系統(tǒng)提供的相

應(yīng)工具,以提高工作效率。新建文件時(shí)可用的設(shè)

計(jì)器和向?qū)А?/p>

1.3項(xiàng)目管理器

1.項(xiàng)目管理器簡(jiǎn)介

項(xiàng)目:

是一種文件,用于跟蹤創(chuàng)建應(yīng)用系統(tǒng)所需要的所

有程序、表單、菜單、庫(kù)、報(bào)表、標(biāo)簽、查詢(xún)和

一些其他類(lèi)型的文件。

項(xiàng)目管理器:[圖例]

是開(kāi)發(fā)VFP應(yīng)用系統(tǒng)的一個(gè)工具,它生成一個(gè)

項(xiàng)目文件,項(xiàng)目文件的擴(kuò)展名為.PJX,項(xiàng)目備注

的擴(kuò)展名為:.PJT。

項(xiàng)目管理器窗口的組成:

由6大類(lèi)數(shù)據(jù)項(xiàng)(全部、數(shù)據(jù)、文檔、類(lèi)、代碼、

其他)和10個(gè)命令按鈕(新建、添加、修改、

瀏覽、關(guān)閉、打開(kāi)、預(yù)覽、運(yùn)行、移去、連編)

組成。

注:粗斜體表示的命令按鈕根據(jù)用戶(hù)選擇的不同

對(duì)象相應(yīng)地出現(xiàn)。

項(xiàng)目菜單的組成:13個(gè)子菜單(其中一部分與

項(xiàng)目管理器中的命令按鈕功能相同)。

項(xiàng)目管理器的功能:組織和管理所有與應(yīng)用系統(tǒng)

有關(guān)的各種類(lèi)型的文件。

2.創(chuàng)建項(xiàng)目文件

用菜單方式:

打開(kāi)文件菜單一新建一項(xiàng)目一新文件->

給出合適的項(xiàng)目文件名及保存位置一進(jìn)入項(xiàng)

目管理器一開(kāi)發(fā)應(yīng)用系統(tǒng)一完成后關(guān)閉窗

口退出。

用命令方式:

語(yǔ)法:CREATEPROJECT<項(xiàng)目文件名〉

功能:打開(kāi)項(xiàng)目管理器窗口進(jìn)行應(yīng)用系統(tǒng)的開(kāi)

發(fā)。

3.修改項(xiàng)目文件

用菜單方式:

打開(kāi)文件菜單一打開(kāi)一找到所需的項(xiàng)目文

件并確定之一進(jìn)入項(xiàng)目管理器一修改應(yīng)用系

統(tǒng)一完成后關(guān)閉窗口退出。

用命令方式:

語(yǔ)法:MODIFYPROJECTv項(xiàng)月文殍名〉

功能:打開(kāi)項(xiàng)目管理器窗口進(jìn)行應(yīng)用系統(tǒng)的修

改。

4.項(xiàng)目管理器的使用

可以利用項(xiàng)目管理器來(lái)創(chuàng)建、打開(kāi)、瀏覽、修改

所有VFP文件并運(yùn)行其中的表單、報(bào)表、標(biāo)簽、

菜單、程序等。特別是可以利用它來(lái)連編項(xiàng)目(追

蹤這些文件的變化情況,包括它們之間的相關(guān)

性、引用和連接等,確保引用的完整,并加入自

上次連編之后更新了的一些組件)、應(yīng)用程序(擴(kuò)

展名為APP,在VFP環(huán)境下執(zhí)行)和可執(zhí)行文件(擴(kuò)

展名為.EXE,能脫離VFP環(huán)境執(zhí)行)。

1.4VFP9.0的一些規(guī)則

1.VFP9.0的命名規(guī)則:

?只能使用字母、下劃線和數(shù)字。

?使用字母或下劃線作為名稱(chēng)的開(kāi)頭。

?名稱(chēng)可以是1至128個(gè)字符,但自由表的字

段名和索引標(biāo)識(shí)最多只能有10個(gè)字符。

?避免使用VisualFoxPro的保留字。

?文件的命名遵循操作系統(tǒng)的約定。

2.命令和子句的書(shū)寫(xiě)規(guī)則

(1)以命令動(dòng)詞開(kāi)始;

(2)各部分之間要用空格隔開(kāi);

(3)命令、子句、函數(shù)名都可簡(jiǎn)寫(xiě)為前4個(gè)字符,

大、小寫(xiě)等效;

(4)一行只能寫(xiě)一條命令,總長(zhǎng)度不超過(guò)8192個(gè)

字符,超過(guò)屏幕寬度時(shí)用續(xù)行符七”;

(5)變量名、字段名和文件名應(yīng)避免與命令動(dòng)詞、

關(guān)鍵字或函數(shù)名同名,以免運(yùn)行時(shí)發(fā)生混亂。

(6)命令格式中的符號(hào)約定:

命令中的口、I、…、<>符號(hào)都不是命令本身

的語(yǔ)法成分,使用時(shí)不能照原樣輸入,

其中:口表示可選項(xiàng),根據(jù)具體情況決定是否

選用

I表示兩邊的部分只能選用其中的一個(gè)

...表示可以有任意個(gè)類(lèi)似參數(shù),各參數(shù)間用逗

號(hào)隔開(kāi)

<>表示其中內(nèi)容要以實(shí)際名稱(chēng)或參數(shù)代入

3.命令工作方式中的常見(jiàn)錯(cuò)誤

(1)命令動(dòng)詞寫(xiě)錯(cuò)

(2)格式不符合要求

?標(biāo)點(diǎn)符號(hào)不對(duì)(一定要用英文標(biāo)點(diǎn)符號(hào))

?缺少必需的空格或添加了不該有的空格

?數(shù)據(jù)類(lèi)型不一致,要注意字符型、數(shù)值型、日

期型、邏輯型數(shù)據(jù)的書(shū)寫(xiě)格式

(3)打不開(kāi)所需文件:沒(méi)有正確輸入盤(pán)符和路徑

或文件名輸錯(cuò)

第二章表的創(chuàng)建和使用

2.1VFP9.0表

1.表的概念

表(數(shù)據(jù)表):

是指存放在磁盤(pán)文件中的一張二維表。.dbf(招

FoxPro2.x版本中的數(shù)據(jù)庫(kù)}

自由表:不屬于任何數(shù)據(jù)庫(kù)的表。

數(shù)據(jù)庫(kù)表:包含在一個(gè)數(shù)據(jù)庫(kù)中的表。

表文件名:

表名可以由字母、數(shù)字或下劃線組成,系統(tǒng)自動(dòng)

給出的擴(kuò)展名為.DBFo

備注文件名:

當(dāng)表中有備注型或通用型字段時(shí),系統(tǒng)自動(dòng)生成

與所屬數(shù)據(jù)表的表名相同、擴(kuò)展名為:.FPT的

文件名。

表結(jié)構(gòu):存儲(chǔ)表記錄的公共結(jié)構(gòu)。(就是指一張

表的表頭結(jié)構(gòu),即字段的屬性}。

記錄:表中的一行。它是多個(gè)字段的集合,同一

張表的每個(gè)記錄都有相同的字段。

字段:表中的一列。它規(guī)定了數(shù)據(jù)的特征。

關(guān)系型數(shù)據(jù)表的特點(diǎn):

(1)每一個(gè)字段不可再分解,也不能有名字相

同的字段;

(2)每一列中的數(shù)據(jù)都有相同的數(shù)據(jù)類(lèi)型;

(3)表中沒(méi)有內(nèi)容完全相同的行(記錄)。

2.字段的基本屬性

字段的屬性:

包括:字段名、數(shù)據(jù)類(lèi)型、字段寬度、小數(shù)位數(shù)、

空值支持

字段名:

即每個(gè)字段的名字,必須以字母開(kāi)頭,可由字母、

數(shù)字、下劃線組合而成,字母大、小寫(xiě)無(wú)區(qū)別,

但其中不許有空格或其它字符。自由表的字段名

最多由10個(gè)字符組成,數(shù)據(jù)庫(kù)表的字段名支持

長(zhǎng)名,最多可達(dá)128個(gè)字符。如果從數(shù)據(jù)庫(kù)中移

去一個(gè)表,那么此表的長(zhǎng)字段名將被截短成10

個(gè)字符。

VFP允許長(zhǎng)字段名和長(zhǎng)表名,但使用長(zhǎng)名稱(chēng)對(duì)于

跨平臺(tái)的操作可能遇到難以預(yù)料的結(jié)果。

數(shù)據(jù)類(lèi)型:指該字段的數(shù)據(jù)特征。

字段寬度:指該字段所能容納數(shù)據(jù)的的最大字節(jié)

數(shù)。

小數(shù)位數(shù):指數(shù)值型數(shù)據(jù)將保留幾位小數(shù)。此時(shí)

的字段寬度=整數(shù)位數(shù)+1+小數(shù)位數(shù)。

NULL值(空值):

無(wú)明確的值。NULL值不等同于零或空格。一個(gè)

NULL值不能認(rèn)為比某個(gè)值(包括另一個(gè)

NULL值)大或小,相等或不同。

VFP9.0表中字段的數(shù)據(jù)類(lèi)型

字段類(lèi)代字段寬

說(shuō)明使用示例

型號(hào)度

每個(gè)字

符為1

字母、漢個(gè)字學(xué)生的學(xué)號(hào)或姓

字符型C字和數(shù)字節(jié),最名,“8199101〃

型文本多可有或‘李立‘

254個(gè)

字符

8個(gè)字

貨幣型Y貨幣單位-Hj-工資,$1246.89

包含有8個(gè)字

日期型D-Hj-出生日期,

年、月和

日的數(shù)據(jù)

{02/25/2000}

包含有

年、月、上班時(shí)間,

日期時(shí)8個(gè)字

T日、時(shí)、

間型節(jié){02/25/2000

分、秒的9:15:15AM}

數(shù)據(jù)

“真”或課程是否為必修

1個(gè)字課,

邏輯型L“假”的-PR

布爾值.T.或.F.

在內(nèi)存

中占8

個(gè)字

整數(shù)或小

數(shù)值型N節(jié);在考試成績(jī),83.5

數(shù)

表中占

1至20

個(gè)字節(jié)

雙精度雙精度浮8個(gè)字實(shí)驗(yàn)要求的高精

B

型點(diǎn)數(shù)T度數(shù)據(jù)

與數(shù)值型

浮點(diǎn)型F

一樣

整型I不帶小數(shù)4個(gè)字學(xué)生的數(shù)量

點(diǎn)的數(shù)值

在表中

通用型GOLE對(duì)象占4圖片或聲音

個(gè)字節(jié)

不定長(zhǎng)度在表中

備注型M的一段文占4學(xué)生簡(jiǎn)歷

字個(gè)字節(jié)

每個(gè)字

任意不經(jīng)符用1

字符型過(guò)代碼頁(yè)個(gè)字

(二進(jìn)C修改而維節(jié),最

制)護(hù)的字符多可有

數(shù)據(jù)254個(gè)

字符

任意不經(jīng)

備注型過(guò)代碼頁(yè)在表中

(二進(jìn)M修改而維占4

制)護(hù)的備注個(gè)字節(jié)

數(shù)據(jù)

3.表的基本操作

表的創(chuàng)建:設(shè)計(jì)表名和表結(jié)構(gòu)、輸入記錄、建立

索引

數(shù)據(jù)維護(hù):增加記錄、修改記錄、刪除記錄

創(chuàng)建表的主要步驟:設(shè)計(jì)表結(jié)構(gòu)T輸入記錄

一建立索引一數(shù)據(jù)維護(hù)

4.關(guān)于表操作的幾個(gè)基本命令

命令格式功能

CREATE表文件創(chuàng)建一個(gè)新的自由表的結(jié)構(gòu)

USE表文件名打開(kāi)指定的表文件

USE關(guān)閉當(dāng)前表文件

LISTALL顯示當(dāng)前表的全部記錄內(nèi)容(類(lèi)

似于DOS命令中的dir)

DISPLAYALL分屏式地顯示當(dāng)前表的全部記

錄內(nèi)容(類(lèi)似于DOS中的dir/p.

DISPLAY顯示當(dāng)前表的結(jié)構(gòu)(分屏顯示)

STRUCTURE

LIST顯示當(dāng)前表的結(jié)構(gòu)(不分屏顯

STRUCTURE示)

MODIFY調(diào)出表設(shè)計(jì)器,修改當(dāng)刖表的結(jié)

STRUCTURE構(gòu)。

CLEAR清除主窗口中的所有內(nèi)容

注思:

(1)必須先打開(kāi)所需的數(shù)據(jù)表才可進(jìn)行以上操

作;

(2)當(dāng)帶有命令子句時(shí),只對(duì)指定的記錄進(jìn)行

操作;

(3)LIST命令的默認(rèn)范圍是所有記錄,

DISPLAY命令的默認(rèn)范圍是當(dāng)前記錄。

2.2表結(jié)構(gòu)的創(chuàng)建和修改

1.表結(jié)構(gòu)的創(chuàng)建

創(chuàng)建表結(jié)構(gòu)其實(shí)就是設(shè)計(jì)字段的基本屬性??梢?/p>

使用表設(shè)計(jì)器、表向?qū)Щ騍QL命令來(lái)創(chuàng)建表結(jié)

構(gòu)。

(1)使用表設(shè)計(jì)器創(chuàng)建表[圖例]

步驟:

從文件菜單中單擊新建T在新建對(duì)話框中選

擇表并單擊新文件一在創(chuàng)建對(duì)話框中給出文

件名并確定所需的保存位置一在表設(shè)計(jì)器對(duì)

話框中逐個(gè)輸入所需字段(用[或鼠標(biāo)換行),

全部字段輸入完成后單擊確定。

(2)使用表向?qū)?chuàng)建表

步驟:

從文件菜單中單擊新建一在新建對(duì)話框中選

擇表并單擊向?qū)б辉诒硐驅(qū)е凶龅?步:選取字

段,完成后單擊下一步一在表向?qū)е凶龅趌a

步:選擇數(shù)據(jù)庫(kù),完成后單擊下一步一在表向

導(dǎo)中做第2步:修改字段設(shè)置,完成后單擊下一

步一在表向?qū)е凶龅?步:為表建索引,完成

后單擊下一步T在表向?qū)е凶龅?步:完成,

選擇表的保存方法,完成后單擊完成T在另存

為對(duì)話框中給出文件名并確定所需的保存位置o

注意:

先選擇一個(gè)與待建數(shù)據(jù)表類(lèi)似的樣表,再?gòu)闹刑?/p>

選出所需的部分字段,然后在下一步根據(jù)實(shí)際需

要修改或直接采用原字段的寬度。

(3)使用CREATETABLE-SQL命令

該命令的一般格式為:

CREATETABLEldbf<<^件名〉(字段名1字

段類(lèi)型[(字段寬度[,小數(shù)位數(shù)])][,輪名2字

段類(lèi)型[(字段寬度[,小數(shù)位數(shù)])]]……)

例:CREATETABLExscj(xhc(8),xmc(6),xb

c(2),;cjn(5,l),ksrqd)

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

(1)用表設(shè)計(jì)器修改

用菜單調(diào)出表設(shè)計(jì)器:

打開(kāi)所需的表文件一單擊顯示菜單中

的表設(shè)計(jì)器-在表設(shè)計(jì)器對(duì)話框中對(duì)字

段進(jìn)行修改一修改完畢單擊確定并在消

息框中選擇是。

用命令調(diào)出表設(shè)計(jì)器:

USE〈表文件名〉

MODIFYSTRUCTURE

(2)使用ALTERTABLE-SQL命令

命令格式示例

ALTERTABLExscjADDCOLUMNkcmcC(14)

名ALTERTABLExscjRENAMECOLUMNkcmcTOkc

ALTERTABLExscjDROPCOLUMNkc

2.3表記錄的處理

1.記錄的輸入

(1)立即輸入方式:

設(shè)計(jì)好表的結(jié)構(gòu)后,系統(tǒng)會(huì)提示是否直接進(jìn)入數(shù)

據(jù)輸入狀態(tài)。若選是,則進(jìn)入編輯窗口,輸完后

單擊“X”按鈕退出,系統(tǒng)自動(dòng)存盤(pán)。需輸入備注

型或通用型字段的數(shù)據(jù)時(shí),雙擊“memo”或

“gen”,在新打開(kāi)的編輯窗口中輸入所需內(nèi)容,

輸完后單擊“X”按鈕系統(tǒng)自動(dòng)存盤(pán),退回到原窗

口,此時(shí)字段中的“memo”或“gerT變成“Memo”

或“Gen”。

(2)追加方式:

若設(shè)計(jì)好表的結(jié)構(gòu)后并沒(méi)有及時(shí)輸入數(shù)據(jù),則可

以用追加方式:

從文件菜單中(或從命令窗口中輸入:USE表

文件名)打開(kāi)所需表文件-從顯示菜單中選

擇瀏覽一再?gòu)娘@示菜單中選擇追加方式一

在瀏覽窗口中輸入所需記錄。

不同追加方式適用的場(chǎng)合

追加記錄的方式適用的場(chǎng)合

顯示菜單中的追在現(xiàn)有數(shù)據(jù)表的尾部添加一個(gè)

加方式或多個(gè)新記錄

表菜單中的追加在現(xiàn)有數(shù)據(jù)表的尾部添加一個(gè)

新記錄新記錄

從其它數(shù)據(jù)表中將符合要求

表菜單中的追加

(字段名和字段類(lèi)型相同)的

記錄…

記錄添加在當(dāng)前數(shù)據(jù)表的尾部

在當(dāng)前表的末尾自動(dòng)添加一個(gè)

或多個(gè)新記錄。相當(dāng)于顯示菜

APPEND[BLANK]單中的追加方式。有BLANK時(shí)

添加個(gè)空記錄,相當(dāng)于表菜

單中的追加新記錄。

APPENDFROM表從其它數(shù)據(jù)表中將符合要求

文件名[FIELDS(字段名和字段類(lèi)型相同)的

字段名1,輟名記錄添加在當(dāng)前數(shù)據(jù)表的尾

2???][FOR條部。相當(dāng)于表菜單中的追加記

件]錄…。

將符合要求的文本文件全部追

APPENDFROM文加在當(dāng)前數(shù)據(jù)表的尾部。

本文件名SDF注意:文本內(nèi)容要與表中的字

段結(jié)構(gòu)相適應(yīng)。

文件菜單中的導(dǎo)將其它類(lèi)型的文件轉(zhuǎn)換成一個(gè)

入完整的VFP數(shù)據(jù)表。

(3)使用INSERTSQL命令

該命令的一般格式為:

INSERTINTO<表名乂(字段名1[,字段名

2...])]VALUES(表達(dá)式1],表達(dá)式2...])

:INSERTINTOxscj(xh,xm,cj)VALUES

(”81991001”,“張良”,85.5)

2.記錄的瀏覽

(1)通過(guò)瀏覽窗口

⑵通過(guò)BROWSE命令

BROWSE命令用來(lái)打開(kāi)表的瀏覽窗口,可通過(guò)

不同的子句來(lái)實(shí)現(xiàn)對(duì)特定記錄的瀏覽。

VFP命令中的常用子句

1)范圍子句

子句格式功能

ALL表示對(duì)表文件的全部記錄進(jìn)行操作

表示對(duì)從當(dāng)刖記錄開(kāi)始的共n個(gè)記錄

NEXTn

進(jìn)行操作,n為正整數(shù)

RECORDn指明操作對(duì)象是表文件的第D號(hào)記錄

對(duì)從當(dāng)刖記錄起到文件結(jié)尾的全部記

REST

錄進(jìn)行操作

2)FOR子句

用于指明進(jìn)行操作的條件。

格式:FORv條件〉

指明只對(duì)指定范圍中那些符合給定條件的進(jìn)行

當(dāng)前操作。

例如:listNEXT6FORcj<85

3)WHILE子句

也用于指明進(jìn)行操作的條件。

格式:WHILEv條件〉

例如:listNEXT6WHILEcj<85

4)FIELDS子句

用于指明當(dāng)前的操作涉及到表文件的哪些字段。

格式:BROWSE[FIELDS字段名1,字段名

2……]

例如:BROWSEFIELDSxh,xm,cj

3.記錄的定位

(1)系統(tǒng)對(duì)記錄的三個(gè)控制標(biāo)志

記錄開(kāi)始標(biāo)志:位于第一個(gè)記錄之前。其值用函

數(shù)BOF()進(jìn)行測(cè)試。

記錄指針標(biāo)志:指向當(dāng)前記錄。其值用函數(shù)

RECNO()進(jìn)行測(cè)試。

記錄結(jié)束標(biāo)志:位于最后一個(gè)記錄之后。其值用

函數(shù)EOF()進(jìn)行測(cè)試。

記錄指針可以理解為保存當(dāng)前記錄號(hào)的變量,它

的初始值總是1,不可能為?;蜇?fù)數(shù),最大值是

表中記錄總數(shù)+1。

剛打開(kāi)表時(shí)記錄指針的情況

表中記錄BOF()的RECNO()EOF()的

情況值的值值

無(wú)記錄.T.1.T.

有記錄.F.1.F.

(2)記錄的定位方式

絕對(duì)定位:是指把指針移到指定的位置。

相對(duì)定位:

是指把指針從當(dāng)前位置開(kāi)始,相對(duì)于當(dāng)前記錄向

前或向后移動(dòng)若干個(gè)記錄位置。

條件定位:

是指按一定的條件在整張表或表的某個(gè)指定范

圍中查找符合該條件的記錄。

通過(guò)菜單進(jìn)行定位

從表菜單中選擇轉(zhuǎn)到記錄:

記錄號(hào)——實(shí)現(xiàn)絕對(duì)定位

定位…——實(shí)現(xiàn)條件定位

通過(guò)命令進(jìn)行定位

記錄的定位

命令格式功能備注

將記錄指針

絕對(duì)定

GOTOP定位到表文或GOTOTOP

件之首

將記錄指針

GOBOTTOM定位到表文或GOTOBOTTOM

件之尾

將記錄指針

GO<n>定位到指定

的n號(hào)記錄

n為正值則向

下移動(dòng)

將記錄指針

相對(duì)定從當(dāng)前記錄n為負(fù)值則向

SKIP<n>

位向上或向下上移動(dòng)

移動(dòng)n個(gè)

無(wú)n向下移動(dòng)

1個(gè)

按順序搜索

LOCATE

表,直到找

條件定FOR〈條默認(rèn)范圍是所

到滿足指定

位件》[范有記錄

條件的第一

圍]

個(gè)記錄

4.記錄的修改和刪除

一張表用非只讀方式打開(kāi)后,即可通過(guò)菜單在瀏

覽窗口(或編輯窗口)中或從命令窗口中用命令

直接對(duì)其記錄進(jìn)行編輯、修改和刪除。

(1)菜單方式

修改記錄:

從表菜單中選擇替換字段…一在替換字段對(duì)

話框中選擇待替換的字段并構(gòu)造出替換表達(dá)式

及替換條件一替換。

刪除記錄:

從表菜單中選擇刪除記錄一在刪除對(duì)話框中

選擇刪除范圍和刪除條件一單擊刪除按鈕一

從表菜單中選擇徹底刪除一在消息框中單擊

是。

刪除記錄包括兩步:標(biāo)記要?jiǎng)h除的記錄和徹

底刪除帶刪除標(biāo)記的記錄

恢復(fù)帶刪除標(biāo)記的記錄:

從表菜單中選擇恢復(fù)記錄T在恢復(fù)記錄對(duì)話

框中選擇作用范圍和條件一單擊恢復(fù)記錄按

鈕。

(2)SQL命令方式(表事先可以不打開(kāi),適用于

編程工作方式)

修改記錄:用UPDATE-SQL命令。

命令格式:UPDATE〈表名,SET字段1=表

達(dá)式1[,字段2=表達(dá)式2…];

WHERE條件表達(dá)式

例:UPDATExscjSETcj=cj*1.05WHERE

cj>80

刪除記錄:用DELETE-SQL命令。

命令格式:DELETEFROM〈表名>[WHERE

條件表達(dá)式]

例:DELETEFROMxscjWHEREcj<60

(3)在命令窗口中用VFP命令:

命令格式功能備注

BLANK:楂前

在當(dāng)前表記錄后插入一

的指定位個(gè)空記錄

插INSERT置上插入

BEFORE:在

入[BLANK][BEFORE]一個(gè)空記

錄或若干當(dāng)前記錄之前

新記錄插入若干新記

CHANGE[FIELDS字在編輯窗LEDIT:調(diào)出編

修段名1,…][FOR條口顯示要輯窗口

改件][LEDIT]修改的字REDIT:調(diào)B瀏

[REDIT]段覽窗口

把字段值默認(rèn)范圍是當(dāng)

REPLACE字段名1用指定的前記錄

WITH表達(dá)式1表達(dá)式進(jìn)

替[ADDITIVE][,字段行替換。ADDITIVE:把

換名2WITH表達(dá)式如:工資備注字段的替

2[ADDITIVE]…]單中給某換內(nèi)容添加在

[范圍][FOR條件]些人長(zhǎng)工原備注內(nèi)容的

資后面

刪DELETE[范對(duì)當(dāng)前表默認(rèn)范圍是當(dāng)

除圍][FOR條件]中指定范前記錄

圍內(nèi)滿足

條件的記

錄加上刪

除標(biāo)記*

將所有帶DBF:不影響備

刪除標(biāo)記注文件

的記錄從

PACK[MEMO][DBF]

表中抹去MEMO:從備

(不能再注文件中刪除

恢復(fù))未使用空間

刪除當(dāng)前

表中所有相當(dāng)于

ZAP記錄,只DELETEALL

留下表的+PACK

結(jié)構(gòu)

取消當(dāng)前

恢RECALL[范圍]表中指定默認(rèn)范圍是當(dāng)

復(fù)[FOR條件]記錄上的前記錄

刪除標(biāo)記

第三章數(shù)據(jù)庫(kù)的創(chuàng)建和使用

3.1VFP數(shù)據(jù)庫(kù)

1.數(shù)據(jù)庫(kù)的基本組成

數(shù)據(jù)庫(kù)由一個(gè)以上相互關(guān)聯(lián)的數(shù)據(jù)表組成,可以

包含一個(gè)或多個(gè)表、視圖、到遠(yuǎn)程數(shù)據(jù)源的連接

和存儲(chǔ)過(guò)程。

視圖(view):

一個(gè)保存在數(shù)據(jù)庫(kù)中的、由引用一個(gè)或多個(gè)表、

或其他視圖的相關(guān)數(shù)據(jù)組成的虛擬表,可以是本

地的、遠(yuǎn)程的或帶參數(shù)的。

存儲(chǔ)過(guò)程(storedprocedure):

是保存在數(shù)據(jù)庫(kù)中的一個(gè)過(guò)程。該過(guò)程能包含一

個(gè)用戶(hù)自定義函數(shù)中的任何命令和函數(shù)。

創(chuàng)建數(shù)據(jù)庫(kù)時(shí)系統(tǒng)自動(dòng)生成3個(gè)文件:

數(shù)據(jù)庫(kù)文件:擴(kuò)展名為.DBC

數(shù)據(jù)庫(kù)備注文件:擴(kuò)展名為.DCT

數(shù)據(jù)庫(kù)索引文件:擴(kuò)展名為.DCX

2.數(shù)據(jù)庫(kù)的設(shè)計(jì)過(guò)程

1)明確建立數(shù)據(jù)庫(kù)的目的和使用方式

2)設(shè)計(jì)所需的數(shù)據(jù)表(包括表結(jié)構(gòu)和表記錄)

3)建立表之間的關(guān)系

4)改進(jìn)設(shè)計(jì)

3.2數(shù)據(jù)庫(kù)的創(chuàng)建[圖例]

1.數(shù)據(jù)庫(kù)的創(chuàng)建過(guò)程

數(shù)據(jù)庫(kù)的創(chuàng)建過(guò)程中一般會(huì)涉及下面一些常用

操作:

1)創(chuàng)建新表一用表設(shè)計(jì)器(設(shè)置字段屬性和

表屬性)

2)添加表一用數(shù)據(jù)庫(kù)設(shè)計(jì)器按鈕或數(shù)據(jù)庫(kù)菜

3)創(chuàng)建視圖一用視圖向?qū)А⒁晥D設(shè)計(jì)器

4)建立關(guān)系—用鼠標(biāo)將父表的索引拖到子表

的相關(guān)索引上

5)編輯關(guān)系T用數(shù)據(jù)庫(kù)菜單或快捷菜單T

參照完整性生成器

6)移去關(guān)系T用快捷菜單或按delete鍵

7)修改表一用表設(shè)計(jì)器

8)刪除表或視圖一用數(shù)據(jù)庫(kù)設(shè)計(jì)器按鈕或數(shù)

據(jù)庫(kù)菜單

2.數(shù)據(jù)庫(kù)的新建、打開(kāi)、關(guān)閉

(1)新建數(shù)據(jù)庫(kù):

從文件菜單中單擊新建一在新建對(duì)話框中選

擇數(shù)據(jù)庫(kù)并單擊新文件一在創(chuàng)建對(duì)話框中給

出庫(kù)文件名和保存位置一在數(shù)據(jù)庫(kù)設(shè)計(jì)器中

建立所需的數(shù)據(jù)庫(kù)。

或從命令窗口中輸入命令:createdatabase數(shù)

據(jù)庫(kù)名

(2)打開(kāi)數(shù)據(jù)庫(kù):

從文件菜單中單擊打開(kāi)一在打開(kāi)對(duì)話框中給

出庫(kù)文件名和保存位置并確定之。

或從命令窗口中輸入命令:opendatabase數(shù)

據(jù)庫(kù)名

(3)關(guān)閉數(shù)據(jù)庫(kù):

從命令窗口中輸入命令:

closedatabase&&關(guān)閉當(dāng)前數(shù)據(jù)庫(kù)

或closeall&&關(guān)閉所有被打開(kāi)的數(shù)據(jù)庫(kù)

注意:1)關(guān)閉了數(shù)據(jù)庫(kù)表不等于關(guān)閉了數(shù)據(jù)庫(kù),

但關(guān)閉了數(shù)據(jù)庫(kù)則其中的數(shù)據(jù)表被同時(shí)關(guān)閉;

2)用鼠標(biāo)關(guān)閉了數(shù)據(jù)庫(kù)設(shè)計(jì)器窗口并不能代表

關(guān)閉數(shù)據(jù)庫(kù)。

3.用數(shù)據(jù)庫(kù)設(shè)計(jì)器設(shè)計(jì)數(shù)據(jù)庫(kù)

(1)調(diào)出表設(shè)計(jì)器,建立一個(gè)新數(shù)據(jù)表[圖例]

方法1:從數(shù)據(jù)庫(kù)菜單中選擇新表。

方法2:右擊數(shù)據(jù)庫(kù)設(shè)計(jì)器窗口,從快捷菜單中

選擇新表。

方法3:?jiǎn)螕魯?shù)據(jù)庫(kù)設(shè)計(jì)器工具欄的新表按鈕。

方法4:從文件菜單中單擊新建,在對(duì)話框中選

擇表。

注意:

數(shù)據(jù)庫(kù)表的表設(shè)計(jì)器中內(nèi)容比自由表的多,增加

了字段屬性和表屬性的設(shè)置。設(shè)置驗(yàn)證規(guī)則目的

是為了使輸入的數(shù)據(jù)符合要求,在有矛盾時(shí)發(fā)出

錯(cuò)誤提示信息。

(2)數(shù)據(jù)庫(kù)表的高級(jí)屬性

屬性名

屬性類(lèi)別作用

稱(chēng)

確定字段內(nèi)容在被顯示時(shí)

格式

的樣式

指定字段中輸入數(shù)據(jù)的格

字段顯示輸入掩

式(即所輸入的任何內(nèi)容

屬性碼

均顯示成此符號(hào))

在瀏覽表時(shí)用此名稱(chēng)代替

標(biāo)題

段意義不夠直觀的字段名

使所輸數(shù)據(jù)符合設(shè)定的條

屬規(guī)則

字段驗(yàn)證當(dāng)所輸數(shù)據(jù)違反規(guī)則時(shí),

信息

規(guī)則系統(tǒng)提示錯(cuò)在哪里

減少輸入重復(fù)性數(shù)據(jù)時(shí)的

默認(rèn)值

工作量

字段注釋使字段具有更好的可讀性

與表文件名不同,設(shè)置了

長(zhǎng)表名

長(zhǎng)表名可以一目了然

使所輸記錄符合設(shè)定的條

規(guī)則

記錄驗(yàn)證件

規(guī)則當(dāng)所輸記錄違反規(guī)則時(shí),

表信息

系統(tǒng)提示錯(cuò)在哪里

屬插入觸當(dāng)所插記錄符合此規(guī)則

發(fā)器時(shí),才可以插入到表中

更新觸當(dāng)修改后的記錄符合此規(guī)

觸發(fā)器

發(fā)器則時(shí),才可以進(jìn)行修改

刪除觸當(dāng)待刪記錄符合此規(guī)則

發(fā)器時(shí),才可以被刪除掉

表注釋使表具有更好的可讀性

字段級(jí)規(guī)則:

一種與字段相關(guān)的有效性規(guī)則,在插入或修改字

段值時(shí)被激活,多用于數(shù)據(jù)輸入正確性的檢驗(yàn)。

為字段設(shè)置驗(yàn)證規(guī)則的方法:

.在表設(shè)計(jì)器中選定要建立規(guī)則的字段名。

.在“規(guī)則”方框旁邊選擇“…”按鈕。

.在表達(dá)式生成器中設(shè)置有效性表達(dá)式,并選擇

“確定”。

.在“信息”框中,鍵入用引號(hào)括起的錯(cuò)誤信息。

.在“默認(rèn)值”框中,鍵入合理的初值。

.注意不同類(lèi)型數(shù)據(jù)的表示方法。

.選擇“確定”

記錄級(jí)規(guī)則:

一種與記錄相關(guān)的有效性規(guī)則,當(dāng)插入或修改記

錄時(shí)激活,常用來(lái)檢驗(yàn)數(shù)據(jù)輸入和正確性。記錄

被刪除時(shí)不使用有效性規(guī)則。記錄級(jí)規(guī)則在字段

級(jí)規(guī)則之后和觸發(fā)器之前激活,在緩沖更新時(shí)工

作。

觸發(fā)器:

在一個(gè)插入、更新或刪除操作之后運(yùn)行的記錄級(jí)

事件代碼。不同的事件可以對(duì)應(yīng)不同的動(dòng)作。它

們常用于交叉表的完整性。

(3)在數(shù)據(jù)庫(kù)中添加表

方法1:從數(shù)據(jù)庫(kù)菜單中選擇添加表,從打開(kāi)對(duì)

話框中選擇所需的表并確定之。

方法2:右擊數(shù)據(jù)庫(kù)設(shè)計(jì)器窗口,從快捷菜單中

選擇添加表。

方法3:?jiǎn)螕魯?shù)據(jù)庫(kù)設(shè)計(jì)器工具欄的添加按鈕。

注意:

一個(gè)數(shù)據(jù)表在同一時(shí)間內(nèi)只能屬于一個(gè)數(shù)據(jù)庫(kù),

已隸屬于其它數(shù)據(jù)庫(kù)的表不能直接被添加進(jìn)來(lái),

需先將其移出數(shù)據(jù)庫(kù)還原成自由表。

(4)創(chuàng)建并添加視圖

視圖用于顯示一個(gè)或多個(gè)表中的記錄,并能夠更

新源表中的數(shù)據(jù),視圖只有在數(shù)據(jù)庫(kù)中才能存

在。

方法1:從數(shù)據(jù)庫(kù)菜單中選擇新遠(yuǎn)程視圖或新本

地視圖

方法2:右擊數(shù)據(jù)庫(kù)設(shè)計(jì)器窗口,從快捷菜單中

選擇新遠(yuǎn)程視圖或新本地視圖

方法3:?jiǎn)螕魯?shù)據(jù)庫(kù)設(shè)計(jì)器工具欄的新遠(yuǎn)程視圖

或新本地視圖按鈕

(5)在數(shù)據(jù)庫(kù)中操作表和視圖

可以利用數(shù)據(jù)庫(kù)設(shè)計(jì)器工具欄很方便地進(jìn)行下

列操作:

瀏覽:在瀏覽窗口中顯示表或視圖的內(nèi)容。

修改:調(diào)出表設(shè)計(jì)器或視圖設(shè)計(jì)器對(duì)表或視圖

進(jìn)行修改。

移去:使表從數(shù)據(jù)庫(kù)中還原成自由表。對(duì)視圖移

去相當(dāng)于刪除。

刪除:從磁盤(pán)上徹底刪除數(shù)據(jù)表和視圖,并且無(wú)

法回收。

(6)在表之間建立永久性關(guān)系

永久關(guān)系:

是數(shù)據(jù)庫(kù)表之間的一種關(guān)系,不僅運(yùn)行時(shí)存在,

而且一直保留。表之間的永久關(guān)系是通過(guò)索引建

立的。

一對(duì)多關(guān)系:

表之間的一種關(guān)系,在這種關(guān)系中,主表中的每

一個(gè)記錄與相關(guān)表中的多個(gè)記錄相關(guān)聯(lián)(每一個(gè)

主關(guān)鍵字值在相關(guān)表中可出現(xiàn)多次)。

一對(duì)一關(guān)系:

表之間的一種關(guān)系,在這種關(guān)系中,主表中的每

一個(gè)記錄只與相關(guān)表中的一個(gè)記錄相關(guān)聯(lián)。

創(chuàng)建表間的永久關(guān)系:

在數(shù)據(jù)庫(kù)設(shè)計(jì)器中,選擇想要關(guān)聯(lián)的索引名,然

后把它拖到相關(guān)表的索引名上,所拖動(dòng)的父表索

引必須是一個(gè)主索引或候選索引。建立好關(guān)系

后,這種關(guān)系在數(shù)據(jù)庫(kù)設(shè)計(jì)器中會(huì)顯示為一條連

接兩個(gè)表的直線。

注意:需先建立索引然后才能建立關(guān)系。

刪除表間的永久關(guān)系:

在數(shù)據(jù)庫(kù)設(shè)計(jì)器中,單擊兩表間的關(guān)系線。關(guān)系

線變粗,表明已選擇了該關(guān)系,按下delete鍵。

編輯關(guān)系:

單擊所需關(guān)系線,右擊鼠標(biāo),從快捷菜單中選擇

編輯關(guān)系,在編輯關(guān)系對(duì)話框中改選其它相關(guān)表

索引名或修改參照完整性規(guī)則。

參照完整性(RI):

控制數(shù)據(jù)一致性,尤其是不同表的主關(guān)鍵字和外

部關(guān)鍵字之間關(guān)系的規(guī)則。VisualFoxPro使用

用戶(hù)自定義的字段級(jí)和記錄級(jí)規(guī)則完成參照完

成性規(guī)則。

(7)在表之間建立臨時(shí)關(guān)系

臨時(shí)關(guān)系:

是在打開(kāi)的數(shù)據(jù)表之間用setrelation命令建立

的臨時(shí)關(guān)系,或是在數(shù)據(jù)工作期窗口建立。建立

了臨時(shí)關(guān)系后,子表的指針會(huì)隨主表記錄指針的

移動(dòng)。表被關(guān)閉后,關(guān)系自動(dòng)解除。

臨時(shí)關(guān)系與永久關(guān)系的聯(lián)系與區(qū)別:

聯(lián)系:

(1)都必須明確建立關(guān)系的兩張表之間確實(shí)在

客觀上存在著一種關(guān)系(一對(duì)多或一對(duì)一關(guān)系)。

(2)永久關(guān)系在許多場(chǎng)合可以作為默認(rèn)的臨時(shí)關(guān)

系。

區(qū)別:

(1)臨時(shí)關(guān)系是用來(lái)在打開(kāi)的兩張表之間控制

相關(guān)表之間記錄的訪問(wèn);而永久關(guān)系主要是用來(lái)

存儲(chǔ)相關(guān)表之間的參照完整性,附帶地可以作為

默認(rèn)的臨時(shí)關(guān)系或查詢(xún)中默認(rèn)的聯(lián)接條件。

(2)臨時(shí)關(guān)系在表打開(kāi)之后使用setrelation命

令建立,隨表的關(guān)閉而解除;永久關(guān)系永久地保

存在數(shù)據(jù)庫(kù)中而不必在每次使用表時(shí)重新創(chuàng)建。

(3)臨時(shí)關(guān)系可以在自由表之間、庫(kù)表之間或

自由表與庫(kù)表之間建立,而永久關(guān)系只能在庫(kù)表

之間建立。

(4)臨時(shí)關(guān)系中一張表不能有兩張主表(除非這

兩張主表是通過(guò)子表的同一個(gè)主控索引建立的

臨時(shí)關(guān)系),永久關(guān)系則不然。

4.用命令方式操作數(shù)據(jù)庫(kù)

常用命令一覽表

命令格式功能

createdatabase

創(chuàng)建新的數(shù)據(jù)庫(kù)文件

庫(kù)文件名

opendatabase庫(kù)打開(kāi)指定的庫(kù)文件

文件名

closedatabase關(guān)閉當(dāng)前的數(shù)據(jù)庫(kù)和數(shù)據(jù)表

關(guān)閉所有的數(shù)據(jù)庫(kù)和數(shù)據(jù)

表,并把工作區(qū)1置為當(dāng)前

closeall

工作區(qū),同時(shí)還關(guān)閉一些窗

modifydatabase修改當(dāng)前庫(kù)文件結(jié)構(gòu)

deletedatabase

刪除指定的庫(kù)文件

庫(kù)文件名

opendatabase庫(kù)

文件名在數(shù)據(jù)庫(kù)中添加表

addtable表名

opendatabase庫(kù)

文件名將表從數(shù)據(jù)庫(kù)中移去

removetable表名

opendatabase庫(kù)

文件名將表從數(shù)據(jù)庫(kù)中移去并從盤(pán)

removetable表文上刪除

件名delete

use庫(kù)文件名!表“!”表示引用個(gè)不在當(dāng)

名前數(shù)據(jù)庫(kù)中的表

browse

Setrelationto關(guān)系表達(dá)式建立表之間的

into區(qū)號(hào)|別名臨時(shí)關(guān)系

刪除表之間的

Setrelationto

臨時(shí)關(guān)系

altertable子表名add

foreignkey索引關(guān)鍵子tag

創(chuàng)建永久關(guān)系

索引標(biāo)識(shí)references父表名

[tag索引標(biāo)識(shí)]

altertable了?表名drop

刪除永久關(guān)系

foreignkeytag索引標(biāo)識(shí)

5.用CREATETABLE-SQL命令創(chuàng)建數(shù)據(jù)庫(kù)

命令一般格式:

Createtable表名1[free](字段名1字段類(lèi)型

代號(hào)[(字段寬度[,小數(shù)位數(shù)])][nullInotnull]

[check字段規(guī)則1[error"信息1"]][default

默認(rèn)值][primarykeyIunique][references表名

2[tag索引標(biāo)識(shí)1]][,字段名2字段類(lèi)型代號(hào)

[(字段寬度[,小數(shù)位數(shù)])][nullInot

null]][check字段規(guī)則2[error"信息2"]]

[default默認(rèn)值])Ifromarray數(shù)組名

使用示例:

creatdataxscjgl&&創(chuàng)建學(xué)生成績(jī)管理數(shù)據(jù)

庫(kù)

createtabIexs(;

xhc(4)defau11"1201"primarykey,;

xmc(6),;

xbc(2)checkxb二〃男〃orxb二〃女〃error”性

別只能是男或女〃default〃女〃,;

nIn(2)null;

)&&創(chuàng)建學(xué)生表

createtabIekc(;

kchc(3)unique,;

kcmc(10),;

xfn(3,1),;

bxkI;

)&&創(chuàng)建課程表

createtabIecj(;

xhc(4)default^1201^referencexstagxh,:

kchc(8),;

ksrqd,;

cjn(5,1);

)&&創(chuàng)建成績(jī)表

modidata

aItertabIecjaddprimarykey

xh+kch+str(cj,4,1)tagdh&&為成績(jī)表添加

一個(gè)主索引

6.查看和設(shè)置數(shù)據(jù)庫(kù)的屬性

(1)用dbgetprop()函數(shù)查看數(shù)據(jù)庫(kù)屬性:

命令格式:

dbgetprop(cName,cType,eProperty)

(2)用dbsetprop。函數(shù)設(shè)置數(shù)據(jù)庫(kù)屬性:

命令格式:

dbsetprop(cName,cType,eProperty,eProperty

VaIue)

(3)用dbsetpropO函數(shù)給表中字段添加標(biāo)題

和說(shuō)明

一般格式:dbsetprop。表名.字段名

'fieId','caption|comment','標(biāo)題|說(shuō)明')

例:dbsetprop('xs.xh','field','caption','學(xué)號(hào)')

dbsetprop('cj.xh','field','comment?本表學(xué)號(hào)應(yīng)與

學(xué)生表中的學(xué)號(hào)對(duì)應(yīng))

7.數(shù)據(jù)庫(kù)表的約束機(jī)制

約束機(jī)制級(jí)別激活時(shí)機(jī)

當(dāng)從瀏覽中禺開(kāi)字段,或執(zhí)行

NULL值字段INSERT或REPLEASE更改字段值

時(shí)

當(dāng)從瀏覽中離開(kāi)字段,或執(zhí)行

字段級(jí)規(guī)

字段INSERT或REPLEASE更改字段值

時(shí)

主索引/

記錄發(fā)生記錄更新時(shí)

候選索引

記錄級(jí)規(guī)

記錄發(fā)生記錄更新時(shí)

在INSERT>UPDATE或DELETE事

觸發(fā)器表

件中,表中值改變時(shí)

VALID子

表單移出記錄時(shí)

第四章創(chuàng)建查詢(xún)和視圖

4.1創(chuàng)建查詢(xún)

1.查詢(xún)的概念

查詢(xún):就是向一個(gè)數(shù)據(jù)庫(kù)發(fā)出檢索信息的請(qǐng)求,

從中提取符合特定條件的記錄。

查詢(xún)文件:

即保存實(shí)現(xiàn)查詢(xún)的SELECT-SQL命令的文件。

查詢(xún)文件保存時(shí),系統(tǒng)自動(dòng)給出擴(kuò)展名.qpr;

查詢(xún)被運(yùn)行后,系統(tǒng)還會(huì)生成一個(gè)編譯后的查詢(xún)

文件,擴(kuò)展名為.qpxo

查詢(xún)結(jié)果:

通過(guò)運(yùn)行查詢(xún)文件得到的一個(gè)基于表和視圖的

動(dòng)態(tài)的數(shù)據(jù)集合。查詢(xún)結(jié)果可以用不同的形式來(lái)

保存。查詢(xún)中的數(shù)據(jù)是只讀的。

查詢(xún)的數(shù)據(jù)源:可以是一張或多張相關(guān)的自由

表、數(shù)據(jù)庫(kù)表、視圖。

2.用查詢(xún)?cè)O(shè)計(jì)器創(chuàng)建查詢(xún)[圖例]

基本步驟:

打開(kāi)查詢(xún)?cè)O(shè)計(jì)器一添加創(chuàng)建查詢(xún)所基于的數(shù)

據(jù)表一定義輸出內(nèi)容一設(shè)置聯(lián)接、篩選、排

序、分組條件一選擇查詢(xún)結(jié)果的輸出形式一

保存查詢(xún)文件一運(yùn)行查詢(xún)。

(1)打開(kāi)查詢(xún)?cè)O(shè)計(jì)器

方法1:

從文件菜單或工具欄上單擊新建一查詢(xún)一

新建文件一進(jìn)入查詢(xún)?cè)O(shè)計(jì)器

方法2:

當(dāng)所用到的數(shù)據(jù)表已在項(xiàng)目中時(shí),從項(xiàng)目管理器

窗口中單擊數(shù)據(jù)一查詢(xún)T新建T新建查

詢(xún)一進(jìn)入查詢(xún)?cè)O(shè)計(jì)器

方法3:從命令窗口中輸入命令:

createquery查詢(xún)文件名&創(chuàng)建新查詢(xún)

modifyquery查詢(xún)文件名&修改已存在的查詢(xún)

(2)定義查詢(xún)的輸出內(nèi)容

單擊字段選項(xiàng)卡-從可用字段列表框中單擊

所需字段(當(dāng)輸出的列不是直接來(lái)源于表中的字

段時(shí),單擊函數(shù)和表達(dá)式框邊的...按鈕,打開(kāi)

表達(dá)式生成器,構(gòu)造出所需的表達(dá)式)一單擊

添加按鈕一所需字段自動(dòng)出現(xiàn)在選定字段框

中。

(3)設(shè)置查詢(xún)的篩選條件

篩選條件決定將哪些記錄顯示出來(lái)。

在篩選框中構(gòu)造篩選條件表達(dá)式時(shí),要注意在實(shí)

例框中輸入不同數(shù)據(jù)類(lèi)型時(shí)的格式:

1)字符串可以不帶引號(hào)(當(dāng)與源表中的字段名

相同時(shí)才用引號(hào));

2)日期型數(shù)值要用{}括起來(lái);

3)邏輯型數(shù)據(jù)兩側(cè)要帶.號(hào),如

(4)設(shè)置查詢(xún)結(jié)果的排序依據(jù)

排序決定查詢(xún)輸出結(jié)果中記錄顯示的順序。

設(shè)置方法:

單擊排序依據(jù)一從選定字段框選中字段一

選擇升序或降序一單擊添加。

(5)設(shè)置查詢(xún)結(jié)果的分組依據(jù)

分組是指將一組類(lèi)似的記錄壓縮成一個(gè)結(jié)果記

錄,目的是為了完成基于該組記錄的計(jì)算,比如:

求平均值、總和、統(tǒng)計(jì)個(gè)數(shù)、其中的最大值、最

小值等。

幾個(gè)常用的統(tǒng)計(jì)函數(shù)

功求平均求最大求最小統(tǒng)計(jì)個(gè)

求總和

能值值值數(shù)

名COUNT

AVG()SUM()MAXOMIN()

稱(chēng)()

用于分組的字段不一定是選定輸出的字段,但分

組字段不能是一個(gè)計(jì)算字段。

可以用滿足條件…來(lái)對(duì)分組結(jié)果進(jìn)行進(jìn)一步

篩選。

(6)對(duì)查詢(xún)結(jié)果的其他設(shè)置

可以排除查詢(xún)結(jié)果中所有重復(fù)的行,并設(shè)置結(jié)果

的記錄范圍。

(7)選擇查詢(xún)結(jié)果的輸出類(lèi)型

默認(rèn)情況下,查詢(xún)結(jié)果將輸出在瀏覽窗口中,且

其中的數(shù)據(jù)是只讀的。

設(shè)置其他輸出類(lèi)型的方法:

打開(kāi)查詢(xún)菜單T選擇查詢(xún)?nèi)ハ蛞辉诓樵?xún)?nèi)?/p>

向?qū)υ捒蛑羞x擇一種。一般多選擇表或報(bào)表。

(8)運(yùn)行查詢(xún)

在查詢(xún)?cè)O(shè)計(jì)器打開(kāi)的狀態(tài)下,單擊常用工具欄上

的!按鈕或從查詢(xún)菜單中選擇運(yùn)行查詢(xún)。其他

情況下,可從項(xiàng)目管理器中選中查詢(xún)文件并單擊

運(yùn)行按鈕,或從程序菜單中選擇執(zhí)行命令,或從

命令窗口中輸入:DO查詢(xún)文件名。

(9)創(chuàng)建多表查詢(xún)

打開(kāi)查詢(xún)?cè)O(shè)計(jì)器一將所需的多個(gè)相關(guān)表添加

進(jìn)來(lái)f設(shè)置聯(lián)接條件T按上面(2)至(8)

步進(jìn)行。

3.用查詢(xún)向?qū)?chuàng)建查詢(xún)

(1)創(chuàng)建標(biāo)準(zhǔn)查詢(xún):

打開(kāi)待查詢(xún)的數(shù)據(jù)表7從文件菜單中單擊新

建一在新建對(duì)話框中選擇查詢(xún)并單擊向?qū)б?/p>

選擇查詢(xún)向?qū)б粡膯螐埢蚨鄰埾嚓P(guān)的表中進(jìn)

行字段選取一設(shè)置篩選條件-設(shè)置排序次

序一選擇查詢(xún)結(jié)果的保存方式-給出查詢(xún)

文件名并選擇保存位置一查詢(xún)結(jié)果顯示在查

詢(xún)窗口中。

注意:查詢(xún)此時(shí)得到的數(shù)據(jù)是只讀的,不可以更

新。

(2)交叉表查詢(xún)

打開(kāi)待查詢(xún)的數(shù)據(jù)表-從文件菜單中單擊新

建一在新建對(duì)話框中選擇查詢(xún)并單擊向?qū)б?/p>

選擇交叉表向?qū)б粡膯螐埍碇羞x取字段一

設(shè)計(jì)布局一加入總和信息一選擇查詢(xún)結(jié)果

的保存方式一給出查詢(xún)文件名并選擇保存位

置一查詢(xún)結(jié)果顯示在查詢(xún)窗口中。

注意:不是任何表都適宜采用交叉表的形式。

(3)用SELECT-SQL命令創(chuàng)建查詢(xún)

常用的格式:

SELECT表名1.字段名1[AS標(biāo)題名1],表名

1.字段名2[AS標(biāo)題名2],…

FROM數(shù)據(jù)庫(kù)名!表名1[,數(shù)據(jù)庫(kù)名!表名2]

[,數(shù)據(jù)庫(kù)名!表名3]

[TOFILE文本文件名IintotableIintocursor

表文件名]

[WHERE選定條件]

[GROUPBY分組字段名]

[HAVING分組中的滿足條件]

[ORDERBY排序字段名1[ASCIDESC][,排

序字段名2[ASCIDESC]...]]

示例:

瀏覽學(xué)生中的查詢(xún)學(xué)生student.qpr:

SELECT表xs.xhas學(xué)號(hào),表xs.xmas姓名,表

xs.xbas性別,;

表xs.csrqas出生日期,表xs.bjas班級(jí)名稱(chēng);

FROM數(shù)據(jù)test!表xs;

WHERE表xs.bj=csl;

ORDERBY表xs.xh;

INTOTABLExs

瀏覽成績(jī)中的按課程查詢(xún)sub_cj.qpr:

SELECT表xs.bjas班級(jí)名稱(chēng),COUNT(表xs.xh)

as班級(jí)人數(shù),AVG(表cj.cj)as平均分,;

MAX(表cj.cj)as最高分,MIN(表cj.cj)as最低

分;

FROM數(shù)據(jù)test!表xs,數(shù)據(jù)test!表cj,數(shù)據(jù)test!

表kc;

WHERE表cj.xh=表xs.xh;

AND表kc.kcm=表cj.kcm;

AND表cj.kcm二scl;

GROUPBY表xs.bj;

ORDERBY表xs.bj;

INTOTABLEsub_cj

4.2創(chuàng)建視圖

1.視圖的特點(diǎn)

1)視圖是存在于數(shù)據(jù)庫(kù)中的一個(gè)虛表,不以獨(dú)

立的文件形式保存;

2)視圖中的數(shù)據(jù)是可以更改的,它不僅具有查

詢(xún)的功能,且可以把更新結(jié)果反映到源數(shù)據(jù)表

中;

3)視圖打開(kāi)時(shí),其基表自動(dòng)打開(kāi),但視圖關(guān)閉

時(shí),其基表并不隨之自動(dòng)關(guān)閉;

4)視圖的數(shù)據(jù)源可以是自由表、數(shù)據(jù)庫(kù)表或另

一個(gè)視圖。

2.用視圖設(shè)計(jì)器創(chuàng)建本地視圖[圖例]

從項(xiàng)目管理器中選擇一個(gè)數(shù)據(jù)庫(kù)一選擇本地

視圖T單擊新建按鈕一選擇新視圖T添

加所需的數(shù)據(jù)表一在視圖設(shè)計(jì)器中按照與創(chuàng)

建查詢(xún)相同的步驟(2)?(6)建立視圖T設(shè)

置更新條件一保

溫馨提示

  • 1. 本站所有資源如無(wú)特殊說(shuō)明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請(qǐng)下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請(qǐng)聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶(hù)所有。
  • 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ì)用戶(hù)上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對(duì)用戶(hù)上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對(duì)任何下載內(nèi)容負(fù)責(zé)。
  • 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請(qǐng)與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時(shí)也不承擔(dān)用戶(hù)因使用這些下載資源對(duì)自己和他人造成任何形式的傷害或損失。

評(píng)論

0/150

提交評(píng)論