Visual FoxPro_.ppt_第1頁
Visual FoxPro_.ppt_第2頁
Visual FoxPro_.ppt_第3頁
Visual FoxPro_.ppt_第4頁
Visual FoxPro_.ppt_第5頁
已閱讀5頁,還剩235頁未讀, 繼續(xù)免費(fèi)閱讀

下載本文檔

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

文檔簡介

1、Visual FoxPro 數(shù)據(jù)庫應(yīng)用,朱莉萍,目 錄,第一章 數(shù)據(jù)庫基礎(chǔ),第二章Visual FoxPro 語法基礎(chǔ),第 三 章 表的創(chuàng)建與操作,第四章 SQL關(guān)系數(shù)據(jù)庫查詢,第五章數(shù)據(jù)庫的創(chuàng)建與操作,第六章程序設(shè)計(jì)基礎(chǔ),第七 章項(xiàng) 管 理 器,1.1.1 數(shù)據(jù)與數(shù)據(jù)處理 數(shù)據(jù)是描述客觀事物屬性的符號(hào)。從數(shù)據(jù)庫技術(shù)的角度來說,數(shù)據(jù)是指能被計(jì)算機(jī)識(shí)別和處理的符號(hào),它不僅包括文字、數(shù)字,而且還包括圖形、圖像、動(dòng)畫、影像、聲音等各種可以數(shù)字化的信息。 信息既是對客觀事物的變化和特征的反映,又是事物之間相互作用和聯(lián)系的表征。人們正是通過接受信息來認(rèn)識(shí)事物。,1.1 信息、數(shù)據(jù)及數(shù)據(jù)處理,第一章 數(shù)據(jù)

2、庫基礎(chǔ),返回目錄,信息和數(shù)據(jù)的概念是密切相關(guān)的,但又是不同的。數(shù)據(jù)是信息的載體,信息是數(shù)據(jù)的內(nèi)涵。數(shù)據(jù)只有經(jīng)過加工處理,能對人類計(jì)劃、決策、管理、行動(dòng)等客觀行為產(chǎn)生影響才成為信息。所以,數(shù)據(jù)反映信息,而信息依靠數(shù)據(jù)來表達(dá)。 數(shù)據(jù)處理 是將數(shù)據(jù)轉(zhuǎn)換為信息的過程,包括數(shù)據(jù)的采集、整理、存儲(chǔ)、分類、排序、檢索、維護(hù)、加工、統(tǒng)計(jì)和傳輸?shù)纫幌盗胁僮鬟^程。其目的是對大量的原始數(shù)據(jù)進(jìn)行分析、處理,獲得對人們更有意義、更有價(jià)值的信息,為行動(dòng)和決策提供依據(jù) 。,計(jì)算機(jī)數(shù)據(jù)管理經(jīng)歷了如下四個(gè)由低級到高級的發(fā)展過程: 人工管理階段 文件系統(tǒng)階段 數(shù)據(jù)庫系統(tǒng)階段 分布式數(shù)據(jù)庫系統(tǒng)階段,1.1.2 數(shù)據(jù)管理技術(shù)的產(chǎn)生和

3、發(fā)展,1.人工管理階段:,數(shù)據(jù)不保存在計(jì)算機(jī)中 系統(tǒng)中沒有對數(shù)據(jù)進(jìn)行管理的專門軟件 只有程序的概念,沒有文件的概念,數(shù)據(jù)是程序的組成部分 數(shù)據(jù)是面向應(yīng)用的,與程序不具有獨(dú)立性,數(shù)據(jù)冗余且不能共享,從50年代初開始,開始將計(jì)算機(jī)應(yīng)用于數(shù)據(jù)處理。,程序與程序之間存在著大量重復(fù)數(shù)據(jù),稱為數(shù)據(jù)冗余。 所謂數(shù)據(jù)獨(dú)立是指數(shù)據(jù)與應(yīng)用程序之間的彼此獨(dú)立, 它們之間不存在相互依賴的關(guān)系。,在人工管理階段,應(yīng)用程序與數(shù)據(jù)之間的關(guān)系如圖所示:,2. 文件管理階段:,特點(diǎn): 從50年代后期開始至60年代中期,程序與數(shù)據(jù)有了一定的獨(dú)立性,程序和數(shù)據(jù)分開存儲(chǔ),有了程序文件和數(shù)據(jù)文件的區(qū)別。 數(shù)據(jù)可長期保存在外存上 出現(xiàn)了

4、操作系統(tǒng)和高級語言,在文件系統(tǒng)的支持下,數(shù)據(jù)不再隸屬于某個(gè)程序,可重復(fù)使用。 缺點(diǎn): 數(shù)據(jù)冗余還是大 數(shù)據(jù)不一致 數(shù)據(jù)之間聯(lián)系弱,操作系統(tǒng),應(yīng)用程序n,應(yīng)用程序2,數(shù)據(jù)組2,數(shù)據(jù)組n,應(yīng)用程序1,數(shù)據(jù)組1,在文件管理階段,應(yīng)用程序與數(shù)據(jù)之間的關(guān)系如圖所示:,文件系統(tǒng),即對所有的數(shù)據(jù)實(shí)行統(tǒng)一規(guī)劃管理,形成一個(gè)數(shù)據(jù)中心,構(gòu)成一個(gè)數(shù)據(jù)“倉庫”。 20世紀(jì)70年代開始在文件管理基礎(chǔ)上發(fā)展起來的。,3. 數(shù)據(jù)庫系統(tǒng)管理階段:,數(shù)據(jù)庫技術(shù)的主要目的是有效地管理和存取大量的數(shù)據(jù)資源,以實(shí)現(xiàn)數(shù)據(jù)共享。 采用數(shù)據(jù)模型表示復(fù)雜的數(shù)據(jù)結(jié)構(gòu) 數(shù)據(jù)面向整個(gè)系統(tǒng),可實(shí)現(xiàn)數(shù)據(jù)共享,減少數(shù)據(jù)冗余 有較高的數(shù)據(jù)獨(dú)立性 統(tǒng)一的數(shù)

5、據(jù)管理功能-數(shù)據(jù)庫管理系統(tǒng)( DataBase Management System,DBMS) 為用戶提供了方便的用戶接口,在數(shù)據(jù)庫管理階段,應(yīng)用程序與數(shù)據(jù)之間的關(guān)系如圖所示:,應(yīng)用程序1,應(yīng)用程序2,.,應(yīng)用程序n,數(shù)據(jù)庫 管理 系統(tǒng),數(shù)據(jù)庫,數(shù)據(jù)1,數(shù)據(jù)2,數(shù)據(jù)n,4. 分布式數(shù)據(jù)庫系統(tǒng),20世紀(jì)80年代以來,隨著地理上分散的用戶對數(shù)據(jù)共享的要求日益增強(qiáng),以及計(jì)算機(jī)網(wǎng)絡(luò)技術(shù)的發(fā)展,在傳統(tǒng)的集中式數(shù)據(jù)庫系統(tǒng)的基礎(chǔ)上產(chǎn)生和發(fā)展了分布式數(shù)據(jù)庫系統(tǒng)。在分布式數(shù)據(jù)庫系統(tǒng)中,數(shù)據(jù)不是集中在一臺(tái)計(jì)算機(jī)上,而是分布于網(wǎng)絡(luò)中不同計(jì)算機(jī)結(jié)點(diǎn)上。雖然各數(shù)據(jù)在物理上是分開了,但在邏輯上是相互聯(lián)系的整體。對于使用數(shù)

6、據(jù)庫的用戶來說,他不知道也不用知道數(shù)據(jù)存放的具體位置,邏輯上看起來好象是在集中使用。分布式數(shù)據(jù)庫系統(tǒng)提高了數(shù)據(jù)的使用效率,加快了數(shù)據(jù)的流通速度,更加符合今天人們對數(shù)據(jù)處理的需要。,1.2 數(shù)據(jù)庫系統(tǒng),1、數(shù)據(jù)庫 數(shù)據(jù)庫(DataBase,簡稱DB)是指按一定的結(jié)構(gòu)和組織方式存儲(chǔ)在計(jì)算機(jī)外部存儲(chǔ)介質(zhì)上的、有結(jié)構(gòu)的、可共享的相互關(guān)聯(lián)的數(shù)據(jù)集合。由此可見,數(shù)據(jù)庫不僅包含了描述事物的數(shù)據(jù),而且也反映了相關(guān)事物之間的聯(lián)系。 2、數(shù)據(jù)庫管理系統(tǒng) 數(shù)據(jù)庫管理系統(tǒng)(DataBase Management System,簡稱DBMS)是一個(gè)介于用戶和操作系統(tǒng)之間、用于對數(shù)據(jù)庫進(jìn)行集中管理的軟件系統(tǒng)。 建立、使用

7、和維護(hù)數(shù)據(jù)庫的軟件(數(shù)據(jù)庫系統(tǒng)的核心) 主要功能:數(shù)據(jù)庫定義、數(shù)據(jù)庫操作、數(shù)據(jù)運(yùn)行管理、數(shù)據(jù)庫維護(hù)、通信管理,3、數(shù)據(jù)庫系統(tǒng) 數(shù)據(jù)庫系統(tǒng)(DataBase System,簡稱DBS)是指在計(jì)算機(jī)系統(tǒng)中引入數(shù)據(jù)庫后的系統(tǒng)構(gòu)成。大量經(jīng)過加工整理而存儲(chǔ)在數(shù)據(jù)庫中的數(shù)據(jù),由數(shù)據(jù)庫管理系統(tǒng)管理,為多個(gè)不同的應(yīng)用共同使用的數(shù)據(jù)處理系統(tǒng),即成為數(shù)據(jù)庫系統(tǒng)。它主要由硬件系統(tǒng)、系統(tǒng)軟件(OS、DBMS)、數(shù)據(jù)庫應(yīng)用系統(tǒng)和用戶四部分構(gòu)成。,數(shù)據(jù)共享性高,冗余度低,易擴(kuò)充 數(shù)據(jù)獨(dú)立性高 數(shù)據(jù)結(jié)構(gòu)化(采用特定的數(shù)據(jù)模型) 有統(tǒng)一的數(shù)據(jù)控制功能 (并發(fā)訪問控制、數(shù)據(jù)安全控制和數(shù)據(jù)的完整性控制),數(shù)據(jù)庫系統(tǒng)的特點(diǎn):,1.

8、3 數(shù)據(jù)模型(Data Model),模型是現(xiàn)實(shí)世界特征的模擬和抽象。 現(xiàn)實(shí)世界中的具體事物往往比較復(fù)雜,把它轉(zhuǎn)換成計(jì)算機(jī)能夠處理的數(shù)據(jù)通常要先建立模型,用數(shù)據(jù)模型來抽象、表示和處理現(xiàn)實(shí)世界中的數(shù)據(jù)和信息,在此基礎(chǔ)上再對數(shù)據(jù)進(jìn)行處理。 數(shù)據(jù)模型是現(xiàn)實(shí)世界數(shù)據(jù)特征的抽象,是數(shù)據(jù)庫中用于提供信息表示和操作手段的形式框架 。,數(shù)據(jù)抽象過程通常經(jīng)過兩步:現(xiàn)實(shí)世界到概念世界,再到機(jī)器世界。因此,根據(jù)模型應(yīng)用的不同目的,數(shù)據(jù)模型分為兩個(gè)層次:概念模型和結(jié)構(gòu)數(shù)據(jù)模型(一般簡稱為數(shù)據(jù)模型)。 概念模型也稱為信息模型,是按用戶的觀點(diǎn)來對數(shù)據(jù)和信息建模,主要用于數(shù)據(jù)庫設(shè)計(jì)。 結(jié)構(gòu)數(shù)據(jù)模型是按計(jì)算機(jī)系統(tǒng)的觀點(diǎn)對數(shù)據(jù)

9、建模,包括層次模型、網(wǎng)狀模型、關(guān)系模型等,主要用于DBMS的實(shí)現(xiàn)。,(1)實(shí)體 客觀存在并可相互區(qū)別的事物。 實(shí)體可以是具體的事物。如:一個(gè)學(xué)生、一個(gè)老師、一門課程等;實(shí)體也可以是抽象的概念或關(guān)系。如:某學(xué)生的一次選課、某老師的教學(xué),某產(chǎn)品的銷售等。 (2)屬性 實(shí)體所具有的特性。 為了描述某一實(shí)體,我們可以通過若干屬性刻畫。如:學(xué)生的學(xué)號(hào)、姓名、性別等。,1. 基本概念,1.3.1 信息模型,(3)屬性域:屬性的取值范圍。 每個(gè)實(shí)體的屬性有對應(yīng)的值,屬性值的變化范圍稱為屬性域。如:性別的域?yàn)椋?,女)?(4)實(shí)體集:具有相同屬性的實(shí)體的集合。 如:學(xué)生(學(xué)號(hào),姓名,性別,出生日期)就是一個(gè)

10、實(shí)體集,它指的不只是某個(gè)學(xué)生,是全體學(xué)生的集合。 (5)關(guān)鍵字:一個(gè)實(shí)體的各屬性中,可以唯一標(biāo)識(shí)實(shí)體的屬性。關(guān)鍵字可以是一個(gè),也可以是多個(gè)。 如:學(xué)號(hào)是學(xué)生實(shí)體的關(guān)鍵字;學(xué)號(hào)與課程號(hào)加起來才是學(xué)生選課實(shí)體的關(guān)鍵字。,在現(xiàn)實(shí)世界中,事物內(nèi)部及事物間的聯(lián)系在信息世界里反映為實(shí)體內(nèi)部的聯(lián)系(如組成實(shí)體的屬性之間的聯(lián)系)和實(shí)體(集)之間的聯(lián)系。兩個(gè)實(shí)體(集)之間的聯(lián)系又可分為3類:,(6)實(shí)體聯(lián)系,2. 信息模型的表示方法 信息模型的表示方法很多,其中最著名的是E-R圖來描述現(xiàn)實(shí)世界的概念模型,這種方法直接從現(xiàn)實(shí)世界中抽象出實(shí)體類型及實(shí)體間的聯(lián)系,然后用E-R圖來描述。 E-R圖的主要成分是實(shí)體、聯(lián)系

11、和屬性,其具體表示方法為: 實(shí)體:用矩形表示,矩形框內(nèi)標(biāo)明實(shí)體名。 屬性:用橢圓形表示,并用無向邊將其與相應(yīng)實(shí)體連接起來。 聯(lián)系:用菱形表示,菱形框內(nèi)標(biāo)明聯(lián)系名,并用無向邊連接有關(guān)實(shí)體,同時(shí)在無向邊上標(biāo)明聯(lián)系類型。,(1)層次模型 層次模型(Hierarchical Model):用樹形結(jié)構(gòu)表示實(shí)體及其聯(lián)系的模型。數(shù)據(jù)間的從屬關(guān)系結(jié)構(gòu),是一種以記錄某一事物的類型為根結(jié)點(diǎn)的。 其主要特征如下: 僅有一個(gè)無雙親的根結(jié)點(diǎn)。 根結(jié)點(diǎn)以外的子結(jié)點(diǎn),向上僅有一個(gè)父結(jié)點(diǎn),向下有若干子結(jié)點(diǎn) 缺點(diǎn):不能直接表示多對多的聯(lián)系,1.3.2 基本數(shù)據(jù)模型類型,層次模型示意圖:,網(wǎng)狀模型(Network Model)是

12、層次模型的擴(kuò)展,它表示多個(gè)從屬關(guān)系的層次結(jié)構(gòu),呈現(xiàn)一種交叉關(guān)系的網(wǎng)絡(luò)結(jié)構(gòu)。網(wǎng)狀模型是網(wǎng)狀結(jié)構(gòu)表示實(shí)體及其聯(lián)系的模型。 其主要特征如下: 有一個(gè)以上的結(jié)點(diǎn)無雙親。 至少有一個(gè)結(jié)點(diǎn)有多個(gè)雙親。 缺點(diǎn):結(jié)構(gòu)比較復(fù)雜,(2)網(wǎng)狀模型,網(wǎng)狀模型示意圖:,關(guān)系模型(Relational Model):用二維表結(jié)構(gòu)來表示實(shí)體及其聯(lián)系的模型。無論實(shí)體本身還是實(shí)體間的聯(lián)系均用“關(guān)系”表示。在關(guān)系模型中,數(shù)據(jù)的邏輯結(jié)構(gòu)是一張二維表格,即關(guān)系模型是用若干行與若干列數(shù)據(jù)構(gòu)成的表格來描述數(shù)據(jù)集合以及它們之間的聯(lián)系。每一個(gè)這樣的表格被稱為一個(gè)關(guān)系。 在關(guān)系模型中,操作的對象和結(jié)果都是二維表,這種二維表就是關(guān)系,同時(shí)每一個(gè)

13、關(guān)系都是一個(gè)二維表。,(3)關(guān)系模型,字段(域),記錄,字段值,1. 關(guān)系術(shù)語,(1)關(guān)系 一個(gè)關(guān)系就是一張二維表,每個(gè)關(guān)系有一個(gè)關(guān)系名。每個(gè)關(guān)系(數(shù)據(jù)庫表)用一個(gè)文件來存儲(chǔ),擴(kuò)展名為.DBF,關(guān)系模式:對關(guān)系的描述,一個(gè)關(guān)系模式對應(yīng)一個(gè)關(guān)系的結(jié)構(gòu)。 關(guān)系模式的格式:關(guān)系名(屬性1,屬性2,.屬性n) 對應(yīng)于VF中表結(jié)構(gòu):表名(字段1,字段2,.字段n),1.4 關(guān)系數(shù)據(jù)庫,1.4.1 關(guān)系數(shù)據(jù)庫術(shù)語及特點(diǎn),(2)元組 二維表的每一行在關(guān)系中稱為元組。在Visual FoxPro中,一個(gè)元組對應(yīng)表中一個(gè)記錄。 (3)屬性 二維表的每一列在關(guān)系中稱為屬性,每個(gè)屬性都有一個(gè)屬性名。每個(gè)屬性都有屬性

14、名,數(shù)據(jù)類型,長度。 在Visual FoxPro中,一個(gè)屬性對應(yīng)表中一個(gè)字段,屬性名對應(yīng)字段名。 (4)域 屬性的取值范圍稱為域。,關(guān)系中能唯一區(qū)分、確定(標(biāo)識(shí))不同元組(記錄)的屬性或?qū)傩越M合,稱為該關(guān)系的一個(gè)關(guān)鍵字。單個(gè)屬性組成的關(guān)鍵字稱為單關(guān)鍵字,多個(gè)屬性組合的關(guān)鍵字稱為組合關(guān)鍵字。需要強(qiáng)調(diào)的是,關(guān)鍵字的屬性值不能取“空值”,所謂空值就是“不知道”或“不確定”的值,因而無法唯一地區(qū)分、確定元組。 當(dāng)一個(gè)數(shù)據(jù)表有多個(gè)關(guān)鍵字時(shí),可從中選出一個(gè)作為主關(guān)鍵字(或主鍵)。,(5)關(guān)鍵字,(6)候選關(guān)鍵字 關(guān)系中能夠成為關(guān)鍵字的屬性或?qū)傩越M合可能不是惟一的。凡在關(guān)系中能夠唯一區(qū)分、確定不同元組的屬

15、性或?qū)傩越M合,稱為候選關(guān)鍵字。 (7)主關(guān)鍵字 在候選關(guān)鍵字中選定一個(gè)作為關(guān)鍵字,稱為該關(guān)系的主關(guān)鍵字。關(guān)系中主關(guān)鍵字是唯一的。 (8)外部關(guān)鍵字 關(guān)系中某個(gè)屬性或?qū)傩越M合并非關(guān)鍵字,但卻是另一個(gè)關(guān)系的主關(guān)鍵字,稱此屬性或?qū)傩越M合為本關(guān)系的外部關(guān)鍵字。關(guān)系之間的聯(lián)系是通過外部關(guān)鍵字實(shí)現(xiàn)的。,在關(guān)系模型中,關(guān)系具有以下基本特點(diǎn): (1)關(guān)系必須規(guī)范化,屬性不可再分割 規(guī)范化是指關(guān)系模型中每個(gè)關(guān)系模式都必須滿足一定的要求,最基本的要求是關(guān)系必須是一張二維表,每個(gè)屬性值必須是不可分割的最小數(shù)據(jù)單元,即表中不能再包含表。 (2)在同一關(guān)系中不允許出現(xiàn)相同的屬性名(字段) (3)關(guān)系中不允許有完全相同的

16、元組(記錄) (4)在同一關(guān)系中元組及屬性的順序可以任意 (5)任意交換兩個(gè)元組(或?qū)傩裕┑奈恢?,不?huì)改變關(guān)系模式。 以上是關(guān)系的基本性質(zhì),也是衡量一個(gè)二維表格是否構(gòu)成關(guān)系的基本要素。在這些基本要素中,有一點(diǎn)是關(guān)鍵,即屬性不可再分割,也即表中不能套表。,2關(guān)系的基本特點(diǎn),1.4.2 關(guān)系運(yùn)算,從一個(gè)關(guān)系中找出所需要的數(shù)據(jù),就要使用關(guān)系運(yùn)算。在關(guān)系數(shù)據(jù)庫中常用的基本關(guān)系運(yùn)算包括選擇、投影和連接等。 1) 選擇 從一個(gè)關(guān)系(表)中按照一定的條件選出若干記錄(行)生成一個(gè)新的關(guān)系(表)。 例如:從成績表中選出成績在60分以下的人員得到不及格人員成績表。 2) 投影 從一個(gè)關(guān)系(表)中選出若干列生成一

17、個(gè)新的關(guān)系(表)。 例如:從成績表(學(xué)號(hào)、姓名、數(shù)學(xué)、語文、物理、化學(xué))中抽出“學(xué)號(hào)”、“姓名” 、“化學(xué)”三列得到化學(xué)成績表。,3)聯(lián)接(合并) 將兩個(gè)同類關(guān)系(表)按照一定的條件進(jìn)行記錄重組生成一新關(guān)系(表),表1,表2,表3,合并條件: 表1.班級=表2.班級,本章小結(jié): 在學(xué)習(xí)VFP進(jìn)行程序設(shè)計(jì)的過程中,首先要建立一些有關(guān)數(shù)據(jù)庫系統(tǒng)的基本概念,了解有關(guān)的術(shù)語。計(jì)算機(jī)應(yīng)用人員只有掌握數(shù)據(jù)庫系統(tǒng)的基礎(chǔ)知識(shí),熟悉數(shù)據(jù)庫管理系統(tǒng)的特點(diǎn),才能開發(fā)出適用的數(shù)據(jù)庫系統(tǒng)。 關(guān)系數(shù)據(jù)庫系統(tǒng)是目前使用最廣泛的數(shù)據(jù)庫系統(tǒng)。20世紀(jì)70年代以后開發(fā)的數(shù)據(jù)庫管理系統(tǒng)產(chǎn)品幾乎都是基于關(guān)系的。關(guān)系數(shù)據(jù)庫系統(tǒng)與非關(guān)系

18、數(shù)據(jù)庫系統(tǒng)的區(qū)別是,關(guān)系數(shù)據(jù)庫系統(tǒng)只有“表”這一種數(shù)據(jù)結(jié)構(gòu);而非關(guān)系數(shù)據(jù)庫系統(tǒng)還有其他數(shù)據(jù)結(jié)構(gòu),對這些數(shù)據(jù)結(jié)構(gòu)有其他的操作。 本章主要介紹了數(shù)據(jù)庫的基本概念、發(fā)展歷程以及關(guān)系數(shù)據(jù)庫系統(tǒng)的一些基礎(chǔ)知識(shí),為后期的學(xué)習(xí)奠定了基礎(chǔ)。,1. 數(shù)據(jù)庫、數(shù)據(jù)庫系統(tǒng)和數(shù)據(jù)庫管理系統(tǒng)之間的關(guān)系是(A) A. DBMS包含DB和DBS B. DBS包含DB和DBMS C. DB包含DBS和DBMS D. DB、DBS和DBMS是平等的,2. 下列關(guān)于數(shù)據(jù)庫系統(tǒng)的敘述中,正確的是(C) A. 表的字段之間和記錄之間都存在聯(lián)系 B. 表的字段之間和記錄之間都不存在聯(lián)系 C. 表的字段之間不存在聯(lián)系,而記錄之間存在聯(lián)系

19、 D. 表中只有字段之間存在聯(lián)系,3. 用二維表的形式來表示實(shí)體之間聯(lián)系的數(shù)據(jù)模型稱為關(guān)系模型。(數(shù)據(jù)模型可分為:層次數(shù)據(jù)模型、網(wǎng)絡(luò)數(shù)據(jù)模型、關(guān)系數(shù)據(jù)模型) 4. 二維表中的列稱為關(guān)系的(屬性);二維表中的行稱為關(guān)系的(元組) 5. 在關(guān)系數(shù)據(jù)庫的基本操作中,從表中取出滿足條件元組的操作稱為(選擇);把兩個(gè)關(guān)系中相同屬性的元組連接到一起,并去掉重復(fù)屬性形成新的二維表的操作稱為(聯(lián)接);從表中抽取屬性值滿足條件的列的操作稱為(投影),返回目錄,第二章Visual FoxPro 語法基礎(chǔ),返回目錄,Visual FoxPro 語言的數(shù)據(jù)組成,數(shù)據(jù)元素 數(shù)據(jù)類型 常量、變量 運(yùn)算符與表達(dá)式 常用函數(shù)

20、,數(shù)據(jù)元素,常量 變量 表達(dá)式 函數(shù),每一種數(shù)據(jù)元素都具有自己的屬性,即類型和值。,數(shù)據(jù)類型,數(shù)據(jù)類型決定了數(shù)據(jù)在計(jì)算機(jī)內(nèi)的存儲(chǔ)形式,并定義了它所支持的運(yùn)算。 VFP的數(shù)據(jù)類型: 字符型 數(shù)值型、貨幣型 邏輯型 日期型、日期時(shí)間型 備注型、通用型,1. 常量,常量是在程序或命令執(zhí)行過程中其值保持不變的數(shù)據(jù)。 常量的類型: 字符型 C 數(shù)值型 N 日期型 D、日期時(shí)間型 T 邏輯型 L 貨幣型 Y ,字符型常量,字符型數(shù)據(jù)是由ASCII字符集、漢字等組成的字符串,其中1個(gè)漢字占2個(gè)字節(jié)。 字符型常量須使用如下三種定界符之一: 雙引號(hào) ” ” 單引號(hào) 方括號(hào) 注意上述定界符必須成對出現(xiàn)。,數(shù)值型常

21、量,數(shù)值型常量包括整數(shù)、小數(shù),及使用科學(xué)計(jì)數(shù)法表達(dá)的數(shù)。 要區(qū)別數(shù)值型常量和由數(shù)字構(gòu)成的字符型常量,應(yīng)依據(jù)定界符的有無進(jìn)行判斷。 例如:123 與 “123”,日期型常量、日期時(shí)間型常量,日期型常量用來表示指定的日期,其定界符為 。 日期型數(shù)據(jù)格式有兩種: 通常日期格式 02/03/14 嚴(yán)格日期格式 2004-02-24,邏輯型常量,邏輯型數(shù)據(jù)用來表示邏輯判斷的結(jié)果,用真(.T.,.Y.)、假(.F.,.N.)表示。 邏輯型數(shù)據(jù)的長度固定為1。,貨幣型常量,貨幣型用來存儲(chǔ)與貨幣有關(guān)的數(shù)據(jù),以8個(gè)字節(jié)存儲(chǔ)。 貨幣型數(shù)據(jù)計(jì)算方法等同數(shù)值型數(shù)據(jù)。 貨幣型常量以$符號(hào)開頭,并四舍五入到小數(shù)點(diǎn)后4位。

22、,2. 變量,變量是在程序或命令執(zhí)行過程中其值允許發(fā)生變化的數(shù)據(jù)。 變量的類型: 內(nèi)存變量 簡單內(nèi)存變量 數(shù)組 字段變量,內(nèi)存變量(一),內(nèi)存變量用來存儲(chǔ)中間數(shù)據(jù),須先建立后使用。 內(nèi)存變量的命名規(guī)則: 以字母或漢字開頭,后跟字母、數(shù)字或下劃線; 長度不超過254個(gè)字符; 不可使用系統(tǒng)保留字。,內(nèi)存變量(二),內(nèi)存變量的建立方法: = STORE TO 舉例: x1=123 x2=234,STORE 1234 TO x3, x4,X3=1234 X4=1234,內(nèi)存變量的顯示: LIST | DISPLAY MEMORY LIKE 內(nèi)存變量的釋放: RELEASE ALL LIKE|EXCEP

23、T 舉例: LIST MEMORY LIKE X* RELEASE X1,內(nèi)存變量(三),數(shù)組(一) 特殊的內(nèi)存變量,數(shù)組是按一定順序排列的一組內(nèi)存變量,數(shù)組中的各個(gè)變量稱為數(shù)組元素。 數(shù)組必須先定義后使用。 數(shù)組定義: DIMENSION (下標(biāo)) 例如: DIMENSION X(2) DIMENSION Y(2,2),數(shù)組(二),數(shù)組的賦值 定義數(shù)組時(shí),各數(shù)組元素初值為.F.。 對同一數(shù)組不同元素賦值時(shí),允許取不同類型,且同一元素可任意改變其類型。 數(shù)組元素下標(biāo)的起點(diǎn)為1。 數(shù)組運(yùn)算按行存取,允許按一維方式表示二維數(shù)組。 數(shù)組賦值時(shí)如使用數(shù)組名,則為整體賦值。,數(shù)組(三),舉例: DIME

24、NSION X(5) DISPLAY MEMORY LIKE X* STORE 123 TO X X(1)=1 DISPLAY MEMORY LIKE X*,3. 表達(dá)式,表達(dá)式是常量、變量和函數(shù)通過特定的運(yùn)算符連接起來的式子。,123456 “123”+“456” 2004-03-01+7,表達(dá)式示例,輸出表達(dá)式的值,可使用 ? 或 ? 格式。,表達(dá)式分類,數(shù)值表達(dá)式 字符表達(dá)式 日期時(shí)間表達(dá)式 關(guān)系表達(dá)式 邏輯表達(dá)式,不同的表達(dá)式使用 不同的運(yùn)算符,表 達(dá)式的類型取決于 最終的結(jié)果值。,數(shù)值表達(dá)式,算術(shù)運(yùn)算符: ( ) 括號(hào) 或* 乘方 * 乘 / 除 % 取模/求余 + 加 - 減,舉例

25、: 53 2*4 16%3*2 (1+2)*3/4 注意運(yùn)算的 優(yōu)先順序!,字符表達(dá)式,字符運(yùn)算符: 完全連接 尾部空格轉(zhuǎn)移連接,舉例: “計(jì)算機(jī)”“組成原理”+”,” “計(jì)算機(jī)”“組成原理” +”,” “數(shù)據(jù)庫”“應(yīng)用系統(tǒng)”+”。” “數(shù)據(jù)庫”“應(yīng)用系統(tǒng)” +”?!?計(jì)算機(jī)組成原理, 計(jì)算機(jī)組成原理, 數(shù)據(jù)庫應(yīng)用系統(tǒng)。 數(shù)據(jù)庫應(yīng)用系統(tǒng) 。,日期與日期時(shí)間表達(dá)式,日期與日期時(shí)間運(yùn)算符: 數(shù)據(jù)相加 數(shù)據(jù)相減,舉例: 2004-3-1+10 2004-3-1 2003-3-1 date( ) - 2004-1-1,關(guān)系表達(dá)式,關(guān)系比較運(yùn)算符 , = 不等于 子串包含測試 $,舉例: 1+12 “F

26、P”$”FoxPro” “Fox”$”FoxPro” .T. .F. 姓名=“張” 姓名=“張三”,邏輯表達(dá)式,運(yùn)算符 NOT 或 ! 邏輯非(求反) AND 邏輯與(求乘,交) OR 邏輯或(求和,并),舉例 LIST FOR 性別=“男” LIST FOR NOT 性別=“女” LIST FOR 性別=“男” AND 專業(yè)=“經(jīng)濟(jì)學(xué)” LIST FOR 性別=“男” OR 專業(yè)=“經(jīng)濟(jì)學(xué)”,4. 函數(shù),函數(shù)是用程序來實(shí)現(xiàn)的一種數(shù)據(jù)運(yùn)算或轉(zhuǎn)換。 函數(shù)的基本格式: (參數(shù)) 函數(shù)值是函數(shù)最終的運(yùn)算結(jié)果,函數(shù)類型等同函數(shù)值的類型。,DATE( ),SQRT(2),常用函數(shù),Visual FoxP

27、ro系統(tǒng)提供了非常豐富的標(biāo)準(zhǔn)函數(shù),供用戶直接調(diào)用。,數(shù)值處理函數(shù),ABS() 求絕對值 SIGN () 返回?cái)?shù)值符號(hào)(1、-1、0) SQRT() 求平方根 PI( ) INT() 直接取整 ROUND(, ) 求四舍五入 MOD(, ) 取模 ,字符處理函數(shù)(一),LEN()求串長 LOWER()轉(zhuǎn)換小寫 UPPER()轉(zhuǎn)換大寫 SPACE()生成空格 TRIM()去掉空格 LEFT(, )提取子串 RIGHT(, ) SUBSTR(, ,),字符處理函數(shù)(二),OCCURS(, ) 出現(xiàn)次數(shù) AT(, ,) 求位置 STUFF(,) 子串替換 CHRTRAN(, ,) 字符替換 LIKE(

28、, ) 匹配判斷,日期時(shí)間函數(shù),DATE(), TIME(), DATETIME() YEAR() MONTH() DAY() ,類型轉(zhuǎn)換函數(shù),STR(, ) 將數(shù)值型數(shù)據(jù)轉(zhuǎn)換為指定長度的字符型數(shù)據(jù) VAL() 將字符型數(shù)據(jù)轉(zhuǎn)換為數(shù)值型數(shù)據(jù) CTOD() CTOT() DTOC() TTOC(),宏替換函數(shù),格式: VALUES (011110,李建國,男,計(jì)0121,01,湖北武漢,2002/09/28,.T.),*用數(shù)組方式追加第二條記錄* DIMENSION DATA 8 DATA(1)=011103 DATA(2)=李寧 DATA(3)=女 DATA(4)=電0134 DATA(5)=

29、02 DATA(6)=江西九江 DATA(7)=1985/05/06 DATA(8)=.F. INSERT INTO STUD FROM ARRAY DATA,*用內(nèi)存變量方式追加第三條記錄* 學(xué)號(hào)=011202 姓名=趙娜 性別=女 班級名=英0112 系別代號(hào)=03 地址=廣西南寧 出生日期=1984/02/21 是否團(tuán)員=.F. INSERT INTO STUD FROM MEMVAR LIST,(二)更新記錄命令 【格式】UPDATE SET = ,= WHERE 【功能】更新指定表文件中滿足WHERE條件子句的數(shù)據(jù)。其中SET子句用于指定列和修改的值,WHERE用于指定更新的行,如果

30、省略WHERE子句,則表示表中所有行。 【說明】更新操作又稱為修改操作。 【例8】修改xsqk表中xh=“200401”的記錄數(shù)據(jù),xb改為“女”,顯示修改結(jié)果。 【練習(xí)】將xscj表中,xh為200304的成績各加5分。,(三)刪除記錄命令 【格式】DELETE FROM WHERE 【功能】從指定的表中刪除滿足WHERE子句條件的所有記錄。如果在DELETE語句中沒有WHERE子句,則該表中的所有記錄都將被刪除。 【說明】這里的刪除是邏輯刪除,即在刪除的記錄前加上一個(gè)刪除標(biāo)記“*”。 【例9】邏輯刪除xsqk表中xh=“200401”的記錄。 【練習(xí)】刪除STUD表中所有性別為女且為英語系

31、的學(xué)生記錄。,四、數(shù)據(jù)查詢,數(shù)據(jù)庫中的數(shù)據(jù)很多時(shí)侯是為了查詢的,因此,數(shù)據(jù)查詢是數(shù)據(jù)庫的核心操作。而在SQL語言中,查詢語言中有一條查詢命令,即SELECT語句。,(一) 基本查詢語句 【格式】SELECT ALL | DISTINCT FROM 【功能】無條件查詢。 【說明】ALL:表示顯示全部查詢記錄,包括重復(fù)記錄。 DISTINCT:表示顯示無重復(fù)結(jié)果的記錄。,【例10】顯示STUD(學(xué)生信息表)中的所有記錄。 SELECT * FROM STUD 命令中的*表示輸出顯示所有的字段,數(shù)據(jù)來源是STUD表,表中的內(nèi)容以瀏覽方式顯示。 【例11】顯示STUD(學(xué)生信息表)中的所有的學(xué)號(hào)及與之

32、對應(yīng)的姓名,同時(shí)能去除重名。 SELECT DISTINCT 學(xué)號(hào),姓名 FROM STUD 【例12】顯示xscj表中的所有記錄,并將yw(語文成績)一項(xiàng)乘以0.7。 SELECT xh,yw*0.7 AS yw FROM xscj,(二)帶條件(WHERE)的查詢語句 【格式】SELECT ALL | DISTINCT FROM WHERE 【功能】從一個(gè)表中查詢滿足條件的數(shù)據(jù)。 【說明】由一系列用AND 或 OR 連接的條件表達(dá)式組成,條件表達(dá)式的格式可以是以下幾種:,(1)。 (2)。 (3) ALL() (4) ANY | SOME () (5) NOT BETWEEN AND (6

33、)NOT EXISTS () (7) NOT IN (8) NOT IN () (9) NOT LINK ,SQL支持的關(guān)系運(yùn)算符如下: 、!、。 【例13】顯示STUD表中所有男生記錄的學(xué)號(hào),姓名和性別字段值。 SELECT 學(xué)號(hào),姓名,性別 ; FROM STUD WHERE 性別=男 【例14】顯示STUD表中出生日期在85年之間的學(xué)生的學(xué)號(hào),姓名,出生日期。 SELECT 學(xué)號(hào),姓名,出生日期 FROM STUD ; WHERE 出生日期 BETWEEN 1985/01/01 AND 1985/12/31,【練習(xí)】顯示STUD表中姓李的學(xué)生的學(xué)號(hào),姓名,出生日期。 SELECT 學(xué)號(hào),

34、姓名,出生日期 FROM STUD ; WHERE 姓名 LIKE “李%”,(三)SQL的復(fù)雜查詢,1連接查詢 【說明】在一個(gè)數(shù)據(jù)庫中的多個(gè)表之間一般都存在著某些聯(lián)系,在一個(gè)查詢語句中同時(shí)涉及到兩個(gè)或兩個(gè)以上的表時(shí),這種查詢稱之為連接查詢(也稱為多表查詢)。在多表之間查詢必須處理表與表之間的連接關(guān)系。 SELECT ALL | DISTINCT FROM ,表2. WHERE ,【例15】查詢并顯示各個(gè)學(xué)生的學(xué)號(hào),姓名,各科成績及課程名。 SELECT a.學(xué)號(hào),a.姓名,b.課程名,c.成績 ; FROM STUD a,COURSE b,SC c ; WHERE a.學(xué)號(hào)=c.學(xué)號(hào) AND

35、 b.課程號(hào)=c.課程號(hào) 【例16】查詢并顯示各個(gè)學(xué)生所學(xué)課程的情況。 SELECT STUD.學(xué)號(hào),STUD.姓名,COURSE.課程名 ; FROM STUD,SC,COURSE ; WHERE STUD.學(xué)號(hào)=SC.學(xué)號(hào) AND SC.課程號(hào)=COURSE.課程號(hào),2連接問題 在SQL語句中,在FROM子句中提供了一種稱之為連接的子句,連接分為內(nèi)連接和外連接,外連接又可分為左外連接、右外連接和全外連接。 (1)內(nèi)連接 內(nèi)連接是指包括符合條件的每個(gè)表的記錄,也稱之為全記錄操作。 【例17】查詢并顯示各個(gè)學(xué)生的學(xué)號(hào),所學(xué)課程及課程成績。 SELECT SC.學(xué)號(hào),COURSE.課程名,SC.

36、成績 ; FROM SC,COURSE ; WHERE SC.課程號(hào)=COURSE.課程號(hào),如果采用內(nèi)連接方式,則命令如下: SELECT a.學(xué)號(hào),b.課程名,成績 ; FROM SC a INNER JOIN COURSE b ON a.課程號(hào)=b.課程號(hào) 將會(huì)得到完全相同的結(jié)果。 (2)外連接 外連接是指把兩個(gè)表分為左右兩個(gè)表。右外連接是指連接滿足條件右側(cè)表的全部記錄。左外連接是指連接滿足條件左側(cè)表的全部記錄。全外連接是指連接滿足條件表的全部記錄。,3嵌套查詢 在SQL語句中,一個(gè)SELECTFROMWHERE語句稱為一個(gè)查詢塊。將一個(gè)查詢塊嵌套在另一個(gè)查詢塊的WHERE子句或HAVIN

37、G短語的條件中的查詢稱為嵌套查詢或子查詢。 【例18】顯示“李寧”所在班級的學(xué)生名單。 SELECT 學(xué)號(hào),姓名,班級名 ; FROM STUD ; WHERE 班級名=(SELECT 班級名 FROM STUD WHERE 姓名=李寧),4分組與計(jì)算查詢 【格式】SELECT ALL | DISTINCT FROM WHERE GROUP BY HAVING ORDER BY ASC | DESC 【功能】包括有排序、函數(shù)運(yùn)算和謂詞演算,【例19】按出生日期降序顯示STUD表中的學(xué)號(hào),姓名,出生日期。 SELECT 學(xué)號(hào),姓名,出生日期 ; FROM STUD ; ORDER BY 出生日期

38、 DESC 【例20】按成績升序顯示SC表中的學(xué)號(hào),課程號(hào),成績。 SELECT 學(xué)號(hào),課程號(hào),成績 ; FROM SC ; ORDER BY 成績,【例21】按班級分類顯示學(xué)生的姓名,課程名,成績,同一班級按分?jǐn)?shù)排序。 SELECT a.姓名,a.班級名,c.課程名,b.成績 ; FROM STUD a,SC b,COURSE c ; WHERE a.學(xué)號(hào)=b.學(xué)號(hào) AND b.課程號(hào)=c.課程號(hào); ORDER BY a.班級名,b.成績; 【例22】顯示成績在80至90之間的學(xué)號(hào),姓名,課程名和成績。 SELECT a.姓名,c.課程名,b.成績 FROM STUD a,SC b,COUR

39、SE c WHERE a.學(xué)號(hào)=b.學(xué)號(hào) AND b.課程號(hào)=c.課程號(hào) AND b.成績 BETWEEN 80 AND 90,【例23】顯示計(jì)算機(jī)系學(xué)生的成績。 SELECT a.姓名,a.系別代號(hào),c.課程名,b.成績 ; FROM STUD a,SC b,COURSE c ; WHERE a.學(xué)號(hào)=b.學(xué)號(hào) AND b.課程號(hào)=c.課程號(hào) AND a.系別代號(hào)=“01” 【例24】顯示各班總?cè)藬?shù)。 SELECT 班級名,COUNT(班級名) AS 總?cè)藬?shù) ; FROM STUD ; GROUP BY 班級名,【例25】顯示計(jì)算機(jī)系的學(xué)生及所有男學(xué)生。 SELECT 學(xué)號(hào),姓名,系別代號(hào),

40、性別 ; FROM STUD ; WHERE 系別代號(hào)=01 UNION ; SELECT 學(xué)號(hào),姓名,系別代號(hào),性別 ; FROM STUD ; WHERE 性別=男 【例26】顯示選修了英語或數(shù)學(xué)科目的學(xué)生學(xué)號(hào)。 SELECT 學(xué)號(hào),課程號(hào) FROM SC ; WHERE 課程號(hào)=“01” UNION ; SELECT 學(xué)號(hào),課程號(hào) ; FROM SC ; WHERE 課程號(hào)=“02”,【例27】顯示計(jì)算機(jī)系男生的名單。 SELECT 學(xué)號(hào),姓名,系別代號(hào),性別 ; FROM STUD ; WHERE 系別代號(hào)=“01” AND 性別=“男” 【例28】顯示既選修了01課程又選修了02課程

41、學(xué)生的名單。 SELECT 學(xué)號(hào) ; FROM SC ; WHERE 課程號(hào)=“01” AND 學(xué)號(hào) IN ; (SELECT 學(xué)號(hào) FROM SC WHERE 課程號(hào)=“02”),【例29】顯示計(jì)算機(jī)系非男生的名單。 SELECT 學(xué)號(hào),姓名,系別代號(hào),性別 ; FROM STUD ; WHERE 系別代號(hào)=“01” AND 性別=“女” 【例30】顯示選修了01課程而沒有選修02課程學(xué)生的名單。 SELECT 學(xué)號(hào) ; FROM SC ; WHERE 課程號(hào)=“01” AND 學(xué)號(hào) NOT IN ; (SELECT 學(xué)號(hào) FROM SC WHERE 課程號(hào)=“02”),5查詢?nèi)ハ?默認(rèn)情況

42、下,查詢輸出到一個(gè)瀏覽窗口,用戶在“SELECT”語句中可使用INTO|TO FILE|TO SCREEN| TO PRINTER子句選擇查詢?nèi)ハ颍?INTO ARRAY 數(shù)組名:將查詢結(jié)果保存到一個(gè)數(shù)組中。 CURSOR:將查詢結(jié)果保存到一個(gè)臨時(shí)表中。 DBF | TABLE :將查詢結(jié)果保存到一個(gè)永久表中。,TO FILEADDITIVE:將查詢結(jié)果保存到文本文件中。如果帶“ADDITIVE”關(guān)鍵字,查詢結(jié)果以追加方式添加到指定的文件,否則,以新建或覆蓋方式添加到指定的文件。 TO SCREEN:將查詢結(jié)果保在屏幕上顯示。 TO PRINTER:將查詢結(jié)果送打印機(jī)打印。,返回目錄,第 五

43、章,數(shù)據(jù)庫的 創(chuàng)建與操作,返回目錄,本章要點(diǎn) 創(chuàng)建數(shù)據(jù)庫 建立和編輯表間關(guān)聯(lián),1. 數(shù)據(jù)庫的基本組成 2. 數(shù)據(jù)庫創(chuàng)建 3. 數(shù)據(jù)庫的基本操作,一、創(chuàng)建數(shù)據(jù)庫,數(shù)據(jù)庫是以一定的組織形式存放在計(jì)算機(jī)存儲(chǔ)介質(zhì)上的相互關(guān)聯(lián)的數(shù)據(jù)的集合。它不僅存放數(shù)據(jù),而且還存放數(shù)據(jù)之間的聯(lián)系。 由數(shù)據(jù)庫的定義可以知道,數(shù)據(jù)庫的基本組成是由許多相關(guān)的表、表間關(guān)系、視圖、到遠(yuǎn)程數(shù)據(jù)源的連接和存儲(chǔ)等等。,1. 數(shù)據(jù)庫的基本組成,創(chuàng)建數(shù)據(jù)庫(.DBC) 使用菜單命令創(chuàng)建 “文件”“新建”或“新建”按鈕 使用鍵盤命令創(chuàng)建 CREATE DATABASE 數(shù)據(jù)庫名|? 打開“數(shù)據(jù)庫設(shè)計(jì)器”窗口 MODIFY DATABASE

44、打開數(shù)據(jù)庫 OPEN DATABASE 數(shù)據(jù)庫名|? 關(guān)閉數(shù)據(jù)庫 CLOSE DATABASE:關(guān)閉當(dāng)前數(shù)據(jù)庫 CLOSE DATABASE ALL:關(guān)閉所有數(shù)據(jù)庫 CLOSE ALL:關(guān)閉所有數(shù)據(jù)庫、表、索引及設(shè)計(jì)器,2. 數(shù)據(jù)庫的創(chuàng)建與基本操作,在數(shù)據(jù)庫中添加、刪除、查找表 (1)向數(shù)據(jù)庫中添加已有表(自由表) add table 表名 將前面建立的表加入到數(shù)據(jù)庫中的具體步驟如下: 從“數(shù)據(jù)庫”菜單中選擇“添加表”或單擊“數(shù)據(jù)庫設(shè)計(jì)器”工具欄上的“添加表”按鈕。 在“打開”對話框中選定所要添加的表,然后單擊確定(所選的表必須是自由表)。 (2)向數(shù)據(jù)庫中添加新表 add table (3)

45、數(shù)據(jù)庫中移去表 remove table 表名 (4)刪除數(shù)據(jù)庫中的表 remove table 表名 delete (5)數(shù)據(jù)庫表的瀏覽 (6)在數(shù)據(jù)庫中查找表,3. 在數(shù)據(jù)庫中操作表,二、建立和編輯表間關(guān)聯(lián),表之間的關(guān)系: 永久關(guān)系 永久關(guān)系是保存在數(shù)據(jù)庫中的 是數(shù)據(jù)庫表之間的一種關(guān)系 不論庫表是否打開,此關(guān)系都存在 臨時(shí)關(guān)系 又叫表之間的關(guān)聯(lián) 臨時(shí)關(guān)系存在于任何表之間 用SET RELATION 命令建立 表關(guān)閉后臨時(shí)關(guān)系消失,通常,表與表之間主要存在兩種關(guān)系 一對一關(guān)系:一個(gè)表的一條記錄對應(yīng)另一個(gè)表的一條記錄; 一對多關(guān)系:一個(gè)表的一條記錄對應(yīng)另一個(gè)表的多條記錄。 第一個(gè)表為父表,另一

46、個(gè)表為子表,1. 數(shù)據(jù)庫表之間的永久關(guān)系,永久關(guān)系是使用索引建立的 父表必須為主索引或候選索引 子表使用主索引、候選索引(一對一) 子表使用普通索引(一對多) 永久關(guān)系的作用 在“查詢設(shè)計(jì)器”和“視圖設(shè)計(jì)器”中,自動(dòng)作為默認(rèn)聯(lián)接條件 作為表單和報(bào)表的默認(rèn)的臨時(shí)關(guān)系,在“數(shù)據(jù)環(huán)境設(shè)計(jì)器”中顯示 用來存儲(chǔ)參照完整性信息,永久關(guān)系的建立和編輯,建立 首先分別設(shè)置父表和子表的索引 然后在“數(shù)據(jù)庫設(shè)計(jì)器”中拖動(dòng)索引標(biāo)識(shí) 編輯 在“數(shù)據(jù)庫設(shè)計(jì)器”中雙擊關(guān)系連線 單擊連線數(shù)據(jù)庫編輯關(guān)系 刪除 單擊連線,按DEL鍵 右擊連線刪除關(guān)系,域完整性與約束規(guī)則,以前我們所熟知的數(shù)據(jù)類型的定義都是域完整性的范疇。我們還

47、可以用一些域約束規(guī)則來進(jìn)一步保證域完整性。 域約束規(guī)則也稱作字段有效性規(guī)則,在插入或修改字段值時(shí)被激活,主要用于數(shù)據(jù)輸入正確性的檢驗(yàn)。 在表設(shè)計(jì)器的“字段”選項(xiàng)卡中,有一組定義字段有效性規(guī)則的項(xiàng)目,它們是規(guī)則(字段有效性規(guī)則)、信息(違背字段有效性規(guī)則時(shí)提示信息)、默認(rèn)值(字段的默認(rèn)值)三項(xiàng)。 注意:“規(guī)則”是邏輯表達(dá)式,“信息”是字符串表達(dá)式,“默認(rèn)值”的類型則視字段的類型而定。,參照完整性,用來控制數(shù)據(jù)庫相關(guān)表之間的主關(guān)鍵字和外部關(guān)鍵字之間數(shù)據(jù)一致性的規(guī)則。 參照完整性建立在庫表之間永久關(guān)系基礎(chǔ)之上,(1)首先從“數(shù)據(jù)庫”菜單項(xiàng)中選擇“清理數(shù)據(jù)庫”命令 (2)選擇以下三種方法之一進(jìn)入“參照

48、完整性生成器”對話框: 在“編輯關(guān)系”對話框中單擊“參照完整性”按鈕; 在“數(shù)據(jù)庫設(shè)計(jì)器”中右擊; 選擇“數(shù)據(jù)庫”菜單項(xiàng)中的命令。,設(shè)置參照完整性規(guī)則,2. 建立表之間的臨時(shí)關(guān)系,要素: 不同工作區(qū) 關(guān)聯(lián)字段 子表要有主控索引 一對一、一對多 (多對一) 建立: 窗口數(shù)據(jù)工作期關(guān)系 SET RELATION TO 關(guān)系表達(dá)式 INTO 工作區(qū)號(hào)|工作區(qū)別名,解除表之間的臨時(shí)關(guān)系,窗口數(shù)據(jù)工作期關(guān)系雙擊關(guān)系連線,刪除表達(dá)式 SET RELATION TO必須在父表工作區(qū)中執(zhí)行 SET RELATION OFF INTO 必須在父表工作區(qū)中執(zhí)行 關(guān)閉父表或子表,3. 表的連接,Join with

49、| to for fields,4. 用非當(dāng)前表文件修改當(dāng)前表文件,update,返回目錄,第 6 章,程序設(shè)計(jì)基礎(chǔ),返回目錄,Visual FoxPro的工作方式 程序文件的建立與編輯 程序的基本結(jié)構(gòu) 分支結(jié)構(gòu) 循環(huán)結(jié)構(gòu) 過程,主 要 內(nèi) 容,一、Visual FoxPro的工作方式,Visual FoxPro系統(tǒng)提供有三種工作方式:即單命令方式、菜單方式及程序文件方式。 1.單命令方式 Visual FoxPro單命令方式是利用 Command 窗口來實(shí)現(xiàn)的。用戶通過 Command 窗口輸入命令,并執(zhí)行操作。在Command 窗口中,可以輸入單個(gè)的操作命令和系統(tǒng)命令,完成對數(shù)據(jù)庫的操作管

50、理和系統(tǒng)環(huán)境的設(shè)置;也可以建立命令文件及運(yùn)行命令文件。 Command 窗口不僅是Visual FoxPro命令的執(zhí)行窗口,也是Visual FoxPro命令文件的編輯窗口。 所謂單命令方式,即輸入一條命令,完成一個(gè)操作的工作方式。,2.菜單方式 在Visual FoxPro 環(huán)境下,也可以通過系統(tǒng)提供的菜單選項(xiàng),對數(shù)據(jù)庫資源進(jìn)行操作管理和對系統(tǒng)環(huán)境進(jìn)行設(shè)置;并通過菜單建立命令文件及運(yùn)行命令文件。所謂菜單方式,即通過打開不同的菜單選擇并完成不同的操作。我們在以前各章所講的內(nèi)容其實(shí)都可說是菜單方式。 3.程序文件方式 程序文件(簡稱程序)也叫做命令文件。運(yùn)用程序文件方式進(jìn)行數(shù)據(jù)庫管理,是通過程序

51、文件編輯工具,將對數(shù)據(jù)庫資源進(jìn)行操作管理的命令和對系統(tǒng)環(huán)境進(jìn)行設(shè)置的命令,集中在一個(gè)以(.PRG)為擴(kuò)展名的命令文件中,然后再通過菜單方式或命令方式運(yùn)行該命令文件。所謂命令方式,即通過程序文件中的命令完成不同的操作。,有關(guān)Visual FoxPro程序的幾點(diǎn)說明 :,1注釋語句 【格式1】NOTE 【格式2】* 【格式3】 DEFAULT 【功能】在屏幕的指定行列輸出say子句的表達(dá)式值,并可修改GET子句的變量值。 【說明】 表示數(shù)據(jù)在窗口中顯示的位置 Say子句用來輸出數(shù)據(jù),GET子句用來輸入及編輯數(shù)據(jù) Get子句中的變量必須具有初值,或用DEFAULT子句的指定初值。初值一旦指定,該變量

52、的類型在編輯期間就不能改變,字符型變量的寬度與數(shù)值型變量的小數(shù)位數(shù)也無法再變。 Get子句的變量必須用read命令來激活,即必須遇到read命令才能編輯get變量。在連續(xù)的多個(gè)GET語句后面可以只使用一個(gè)READ命令來激活GET命令組 Get子句的變量可以是字段變量,也可以是內(nèi)存變量。而前面介紹的交互輸入輸出語句只針對內(nèi)存變量。,三、程序的基本結(jié)構(gòu),Visual FoxPro系統(tǒng)提供的命令豐富,且功能強(qiáng)大,把這些命令和程序設(shè)計(jì)語句有效地組織在一起,就形成了實(shí)現(xiàn)某一特定功能的程序。 Visual FoxPro系統(tǒng)的程序有兩個(gè)特點(diǎn):一是程序控制流模式,由順序、分支、循環(huán)三種基本結(jié)構(gòu)構(gòu)成。二是面向?qū)?/p>

53、象可視化的結(jié)構(gòu)程序模塊,在每個(gè)模塊的內(nèi)部也是由程序控制流組成。常見的控制結(jié)構(gòu)如下: 1順序結(jié)構(gòu) 順序結(jié)構(gòu)是在程序執(zhí)行時(shí),根據(jù)程序中語句的書寫順序依次執(zhí)行的命令序列。Visual FoxPro系統(tǒng)中的大多數(shù)命令都可以作為順序結(jié)構(gòu)中的語句。 2分支結(jié)構(gòu) 分支結(jié)構(gòu)是在程序執(zhí)行時(shí),根據(jù)不同的條件,選擇執(zhí)行不同的程序語句,用來解決有選擇、有轉(zhuǎn)移的諸多問題。,3循環(huán)結(jié)構(gòu) 循環(huán)結(jié)構(gòu)則能夠使某些語句或程序段重復(fù)執(zhí)行若干次。如果某些語句或程序段需要在一個(gè)固定的位置上重復(fù)操作,使用循環(huán)是最好的選擇。 4過程結(jié)構(gòu) 在許多應(yīng)用程序中,有一些程序段需要反復(fù)執(zhí)行多次,這些程序段不在一個(gè)固定的位置上,而是分散在程序的許多位

54、置上重復(fù)執(zhí)行,可將其與嵌入它的程序分開,形成獨(dú)立的程序序列,待使用時(shí)再調(diào)入程序中,以實(shí)現(xiàn)不同位置上的重復(fù)操作。這樣做增強(qiáng)了程序的可讀性和模塊化。我們稱這種具有獨(dú)立功能而且可以被其它程序調(diào)用的程序序列為過程。,分支結(jié)構(gòu)形式有如下三種: 1單向分支 單向分支語句,即根據(jù)用戶設(shè)置的條件表達(dá)式的值,決定某一操作是否執(zhí)行。 (1)語句格式: IF條件表達(dá)式 命令行序列 ENDIF (2)語句功能: 該語句首先計(jì)算條件表達(dá)式的值,當(dāng)條件表達(dá)式的值為真時(shí),執(zhí)行命令行序列;否則,執(zhí)行ENDIF后面的第一條命令。,四、分支結(jié)構(gòu),【例5-4】求一元二次方程AX2BXC0的實(shí)根。程序文件名為PROG4.PRG。 S

55、ET TALK OFF CLEAR INPUT TO A INPUT TO B INPUT TO C ZB2-4*A*C IF Z=0 X1=(-B+SQRT(Z)/(2*A) X2=(-B-SQRT(Z)/(2*A) ? X1,X2 ENDIF SET TALK ON RETURN,2雙向分支 雙向分支語句,即根據(jù)用戶設(shè)置的條件表達(dá)式的值,選擇兩個(gè)操作中的一個(gè)來執(zhí)行。 (1)語句格式: IF條件表達(dá)式 命令行序列1 ELSE 命令行序列2 ENDIF (2)語句功能: 該語句首先計(jì)算條件表達(dá)式的值,當(dāng)條件表達(dá)式的值為真時(shí),執(zhí)行命令行序列1中的命令;否則,執(zhí)行命令行序列2中的命令;執(zhí)行完命令行

56、序列1或命令行序列2后都將執(zhí)行ENDIF后面的第一條命令。,【例5-5】編寫一密碼校驗(yàn)程序(假設(shè)密碼為ABC)。程序文件名為PROG5.PRG。 SET TALK OFF CLEAR ACCEPT “請輸入您的密碼:” TO AAA IF AAA=”ABC” CLEAR ? ”歡迎使用本系統(tǒng)!” ELSE ? ”密碼錯(cuò)誤!” WAIT QUIT ENDIF SET TALK ON,3多向分支 多向分支語句,即根據(jù)多個(gè)條件表達(dá)式的值,選擇執(zhí)行多個(gè)操作中的一個(gè)對應(yīng)執(zhí)行。 (1)語句格式: DO CASE CASE條件表達(dá)式1 命令行序列1 CASE條件表達(dá)式2 命令行序列2 CASE條件表達(dá)式N

57、命令行序列N OTHERWISE 命令行序列N+1 ENDCASE,(2)語句功能: 系統(tǒng)依次判斷邏輯表達(dá)式是否為真,若某個(gè)邏輯表達(dá)式值為真,則執(zhí)行該CASE段的語句序列,然后執(zhí)行ENDCASE后面的語句。當(dāng)所有CASE中條件表達(dá)式的值都是假時(shí),如果有OTHERWISE項(xiàng),則執(zhí)行命令行序列N+1,再執(zhí)行ENDCASE后面的語句;否則,直接執(zhí)行ENDCASE后面的語句。,【例5-6】假設(shè)收入(P)與稅率(R)的關(guān)系如下表,編程求稅金。程序文件名為PROG6.PRG。 0 P800 R= 0.05 800 P2000 0.08 2000P5000 0.1 P5000 SET TALK OFF CL

58、EAR INPUT “請輸入收入:” TO P DO CASE CASE P800 R=0 CASE P2000 R=0.05,CASE P5000 R=0.08 OTHERWISE R=0.1 ENDCASE TAX=P*R ? ”稅金為:”,TAX SET TALK ON RETURN,【練習(xí)】計(jì)算分段函數(shù)值:,4使用分支語句應(yīng)注意的幾點(diǎn) (1)IF ENDIF和DO CASE ENDCASE 必須配對使用,DO CASE與第一個(gè)CASE條件表達(dá)式之間不應(yīng)有任何命令。 (2)條件表達(dá)式可以是各種表達(dá)式或函數(shù)的組合,其值必須是邏輯值。 (3)命令行序列可以由一個(gè)或多個(gè)命令組成,可以是條件控制語句組成的嵌套結(jié)構(gòu)。 (4)DO CASE ENDCASE 命令,每次最多只能執(zhí)行一個(gè)命令行序列。在多個(gè)CASE項(xiàng)的條件表達(dá)式值為真時(shí),只執(zhí)行第一個(gè)條件表達(dá)式值為真的命令行序列,然后執(zhí)行ENDCASE的后面的第一條命令。,五、循環(huán)結(jié)構(gòu),1DO WHILE循環(huán)語句(當(dāng)型循環(huán)) 【格式1】DO WHILE ENDDO,一個(gè)循環(huán)結(jié)構(gòu)一般應(yīng)具備如下的條件: (1)循環(huán)的初始條件:一般為給循環(huán)控制變量賦初值;

溫馨提示

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

最新文檔

評論

0/150

提交評論