




版權(quán)說(shuō)明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)
文檔簡(jiǎn)介
1第一章
資料庫(kù)系統(tǒng)基礎(chǔ)知識(shí)
2第一節(jié)數(shù)據(jù)管理技術(shù)的發(fā)展
一、數(shù)據(jù)與數(shù)據(jù)處理
數(shù)據(jù)是指存儲(chǔ)在某一種媒體上能夠被識(shí)別的物理符號(hào)。數(shù)據(jù)有數(shù)字、文字、圖形、圖象、聲音等多種表現(xiàn)形式。
資訊是一種已經(jīng)被加工為特定形式的數(shù)據(jù),資訊是以某種數(shù)據(jù)形式表現(xiàn)的。在電腦中,通過電腦軟體來(lái)管理數(shù)據(jù),通過應(yīng)用程式來(lái)對(duì)數(shù)據(jù)進(jìn)行加工處理。用外存儲(chǔ)器來(lái)存儲(chǔ)數(shù)據(jù)。數(shù)據(jù)處理是指將數(shù)據(jù)轉(zhuǎn)換成資訊的過程。數(shù)據(jù)處理的內(nèi)容主要包括:數(shù)據(jù)的收集、整理、存儲(chǔ)、加工、分類、維護(hù)、排序、檢索和傳輸?shù)纫幌盗谢顒?dòng)的總和。數(shù)據(jù)處理的目的是從大量的數(shù)據(jù)中,根據(jù)數(shù)據(jù)自身的規(guī)律和及其相互聯(lián)繫,通過分析、歸納、3
推理等科學(xué)方法,利用電腦技術(shù)、資料庫(kù)管理等技術(shù)手段,提取有效的資訊資源,為進(jìn)一步分析、管理、決策提供依據(jù)。數(shù)據(jù)處理也稱資訊處理。二、電腦數(shù)據(jù)處理技術(shù)的發(fā)展
電腦對(duì)數(shù)據(jù)的管理是指對(duì)數(shù)據(jù)的組織、分類、編碼、存儲(chǔ)、檢索和維護(hù)提供操作手段。電腦數(shù)據(jù)管理經(jīng)歷了:人工管理、檔系統(tǒng)、資料庫(kù)系統(tǒng)、分佈式資料庫(kù)系統(tǒng)和麵向?qū)ο筚Y料庫(kù)系統(tǒng)等幾個(gè)階段。4
1.人工管理階段
早期的電腦主要用於科學(xué)計(jì)算,計(jì)算處理的數(shù)據(jù)量很小,基本上不存在數(shù)據(jù)管理的問題。從50年代初開始,開始將電腦應(yīng)用於數(shù)據(jù)處理。當(dāng)時(shí)的電腦沒有專門管理數(shù)據(jù)的軟體,也沒有像磁片這樣可隨機(jī)存取的外部存儲(chǔ)設(shè)備,對(duì)數(shù)據(jù)的管理沒有一定的格式,數(shù)據(jù)依附於處理它的應(yīng)用程式,使數(shù)據(jù)和應(yīng)用程式一一對(duì)應(yīng),互為依賴。由於數(shù)據(jù)與應(yīng)用程式的對(duì)應(yīng)、依賴關(guān)係,應(yīng)用程式中的數(shù)據(jù)無(wú)法被其他程式利用,程式與程式之間存在著大量重複數(shù)據(jù),稱為數(shù)據(jù)冗餘;同時(shí),由於數(shù)據(jù)是對(duì)應(yīng)某一應(yīng)用程式的,使得數(shù)據(jù)的獨(dú)立性很差,如果數(shù)據(jù)的類型、結(jié)構(gòu)、存取方式或輸入輸出方式發(fā)生變化,處理它的程式必須相應(yīng)改變,數(shù)據(jù)結(jié)構(gòu)性差,而且數(shù)據(jù)不能長(zhǎng)期保存。
5
在人工管理階段,應(yīng)用程式與數(shù)據(jù)之間的關(guān)係如圖1-1所示。
應(yīng)用程式1應(yīng)用程式2應(yīng)用程式n數(shù)據(jù)組1數(shù)據(jù)組2數(shù)據(jù)組n……
圖1-16
2.檔管理階段
從50年代後期開始至60年代末為檔管理階段,應(yīng)用程式通過專門管理數(shù)據(jù)的軟體即檔系統(tǒng)管理來(lái)使用數(shù)據(jù)。由於電腦存儲(chǔ)技術(shù)的發(fā)展和操作系統(tǒng)的出現(xiàn),同時(shí)電腦硬體也已經(jīng)具有可直接存取的磁片、磁帶及磁鼓等外部存儲(chǔ)設(shè)備,軟體則出現(xiàn)了高級(jí)語(yǔ)言和操作系統(tǒng),而操作系統(tǒng)的一項(xiàng)主要功能是檔管理,因此,數(shù)據(jù)處理應(yīng)用程式利用操作系統(tǒng)的檔管理功能,將相關(guān)數(shù)據(jù)按一定的規(guī)則構(gòu)成檔,通過檔系統(tǒng)對(duì)檔中的數(shù)據(jù)進(jìn)行存取、管理,實(shí)現(xiàn)數(shù)據(jù)的檔管理方式。7
檔管理階段中,檔系統(tǒng)為程式與數(shù)據(jù)之間提供了一個(gè)公共介面,使應(yīng)用程式採(cǎi)用統(tǒng)一的存取方法來(lái)存取、運(yùn)算元據(jù),程式與數(shù)據(jù)之間不再是直接的對(duì)應(yīng)關(guān)係,因而程式和數(shù)據(jù)有了一定的獨(dú)立性。程式和數(shù)據(jù)分開存儲(chǔ),有了程式檔和數(shù)據(jù)檔的區(qū)別。數(shù)據(jù)檔可以長(zhǎng)期保存在外記憶體上被多次存取。數(shù)據(jù)和程式相互依賴。同一資料項(xiàng)目可能重複出現(xiàn)在同一個(gè)檔中,這就導(dǎo)致了數(shù)據(jù)冗餘度大。造成數(shù)據(jù)的不一致性。
8
在檔管理階段,應(yīng)用程式與數(shù)據(jù)之間的關(guān)係如圖1-2所示。
操作系統(tǒng)應(yīng)用程式n應(yīng)用程式2數(shù)據(jù)組2數(shù)據(jù)組n應(yīng)用程式1數(shù)據(jù)組1圖1-29
3.資料庫(kù)系統(tǒng)
資料庫(kù)管理階段是20世紀(jì)60年代後期開始在檔管理基礎(chǔ)上發(fā)展起來(lái)的。為了實(shí)現(xiàn)電腦對(duì)數(shù)據(jù)的統(tǒng)一管理,達(dá)到數(shù)據(jù)共用的目的,發(fā)展了資料庫(kù)技術(shù)。資料庫(kù)技術(shù)的主要目的是有效地管理和存取大量的數(shù)據(jù)資源。資料庫(kù)管理系統(tǒng)(DataBaseManagementSystem,DBMS)資料庫(kù)管理系統(tǒng)利用了操作系統(tǒng)提供的輸入/輸出控制和文件訪問功能。Vf就是一種在操作系統(tǒng)上運(yùn)行的資料庫(kù)管理系統(tǒng)軟體。
資料庫(kù)技術(shù)使數(shù)據(jù)有了統(tǒng)一的結(jié)構(gòu),對(duì)所有的數(shù)據(jù)實(shí)行統(tǒng)一、集中、獨(dú)立的管理,以實(shí)現(xiàn)數(shù)據(jù)的共用,保證數(shù)據(jù)的完整性和安全性,提高了數(shù)據(jù)管理效率。資料庫(kù)也是以檔方式存儲(chǔ)數(shù)據(jù)的,但它是數(shù)據(jù)的一種高級(jí)組織形式。在應(yīng)用程式和數(shù)據(jù)庫(kù)之間,由10
資料庫(kù)管理軟體DBMS把所有應(yīng)用程式中使用的相關(guān)數(shù)據(jù)彙集起來(lái),按統(tǒng)一的數(shù)據(jù)模型,以記錄為單位存儲(chǔ)在資料庫(kù)中,為各個(gè)應(yīng)用程式提供方便、快捷的查詢、使用。在資料庫(kù)管理階段,應(yīng)用程式與數(shù)據(jù)之間的關(guān)係如圖1-3所示。
┆
資料庫(kù)管理系統(tǒng)資料庫(kù)應(yīng)用程式2應(yīng)用程式1應(yīng)用程式n圖1-311
1)分佈式資料庫(kù)
分佈式資料庫(kù)系統(tǒng)(DistributedDataBaseSystem,DDBS)是在集中式資料庫(kù)基礎(chǔ)上發(fā)展起來(lái)的,是資料庫(kù)技術(shù)與電腦網(wǎng)絡(luò)技術(shù)、分佈處理技術(shù)相結(jié)合的產(chǎn)物。分佈式資料庫(kù)系統(tǒng)是地理上分佈在電腦網(wǎng)絡(luò)不同結(jié)點(diǎn),邏輯上屬於同一系統(tǒng)的資料庫(kù)系統(tǒng),能支持全局應(yīng)用,同時(shí)存取兩個(gè)或兩個(gè)以上結(jié)點(diǎn)的數(shù)據(jù)。分佈式資料庫(kù)系統(tǒng)的主要特點(diǎn)是:(1)數(shù)據(jù)是分佈的。資料庫(kù)中的數(shù)據(jù)分佈在電腦網(wǎng)絡(luò)的不同結(jié)點(diǎn)上,而不是集中在一個(gè)結(jié)點(diǎn),區(qū)別於數(shù)據(jù)存放在伺服器上由各用戶共用的網(wǎng)路資料庫(kù)系統(tǒng)。(2)數(shù)據(jù)是邏輯相關(guān)的。分佈在不同結(jié)點(diǎn)的數(shù)據(jù),邏輯上屬於同一個(gè)數(shù)據(jù)庫(kù)系統(tǒng),數(shù)據(jù)間存在相互關(guān)聯(lián),區(qū)別於由電腦網(wǎng)絡(luò)連接的多個(gè)獨(dú)立資料庫(kù)系統(tǒng)。
12(3)結(jié)點(diǎn)的自治性。每個(gè)結(jié)點(diǎn)都有自己的電腦軟、硬體資源、資料庫(kù)、資料庫(kù)管理系統(tǒng)(即LocalDataBaseManagementSystem,LDBMS局部資料庫(kù)管理系統(tǒng)),因而能夠獨(dú)立地管理局部資料庫(kù)。13
2)面向?qū)ο筚Y料庫(kù)
面向?qū)ο筚Y料庫(kù)系統(tǒng)(Object-OrientedDataBaseSystem,OODBS)是將面向?qū)ο蟮哪P汀⒎椒ê蜋C(jī)制,與先進(jìn)的資料庫(kù)技術(shù)有機(jī)地結(jié)合而形成的新型資料庫(kù)系統(tǒng)。它從關(guān)係模型中脫離出來(lái),強(qiáng)調(diào)在資料庫(kù)框架中發(fā)展類型、數(shù)據(jù)抽象、繼承和持久性;它的基本設(shè)計(jì)思想是,一方面把面向?qū)ο笳Z(yǔ)言向資料庫(kù)方向擴(kuò)展,使應(yīng)用程式能夠存取並處理對(duì)象,另一方面擴(kuò)展資料庫(kù)系統(tǒng),使其具有面向?qū)ο蟮奶蒯?,提供一種綜合的語(yǔ)義數(shù)據(jù)建模概念集,以便對(duì)現(xiàn)實(shí)世界中複雜應(yīng)用的實(shí)體和聯(lián)繫建模。因此,面向?qū)ο筚Y料庫(kù)系統(tǒng)首先是一個(gè)資料庫(kù)系統(tǒng),具備資料庫(kù)系統(tǒng)的基本功能,其次是一個(gè)面向?qū)ο蟮南到y(tǒng),針對(duì)面向?qū)ο蟮某淌皆O(shè)計(jì)語(yǔ)言的永久性對(duì)象存儲(chǔ)管理而設(shè)計(jì)的,充分支持完整的面向?qū)ο蟾拍詈蜋C(jī)制。
14
資料庫(kù)新技術(shù)
資料庫(kù)技術(shù)發(fā)展之快、應(yīng)用之廣是電腦科學(xué)其他領(lǐng)域技術(shù)無(wú)可比擬的。隨著資料庫(kù)應(yīng)用領(lǐng)域的不斷擴(kuò)大和資訊量的急劇增長(zhǎng),占主導(dǎo)地位的關(guān)係資料庫(kù)系統(tǒng)已不能滿足新的應(yīng)用領(lǐng)域的需求,如:CAD(電腦輔助設(shè)計(jì))/CAM(電腦輔助製造)、CIMS(電腦集成製造系統(tǒng))、CASE(電腦輔助軟體工程)、OA(辦公自動(dòng)化)、GIS(地理資訊系統(tǒng))、MIS(管理資訊系統(tǒng))、KBS(知識(shí)庫(kù)系統(tǒng))等,都需要資料庫(kù)新技術(shù)的支持。這些新應(yīng)用領(lǐng)域的特點(diǎn)是:存儲(chǔ)和處理的對(duì)象複雜,對(duì)象間的聯(lián)繫具有複雜的語(yǔ)義資訊;需要複雜的數(shù)據(jù)類型支持,包括抽象數(shù)據(jù)類型、無(wú)結(jié)構(gòu)的超長(zhǎng)數(shù)據(jù)、時(shí)間和版本數(shù)據(jù)等;需要常駐記憶體的對(duì)象管理以及支持對(duì)大量對(duì)象的存取和計(jì)算;支持長(zhǎng)事務(wù)和嵌套事務(wù)的處理。這些需求是傳統(tǒng)關(guān)係資料庫(kù)系統(tǒng)難以滿足的。
15
一、幾個(gè)概念
1.資料庫(kù)
資料庫(kù)(DataBase,DB)是指存儲(chǔ)在電腦存儲(chǔ)設(shè)備上結(jié)構(gòu)化的相關(guān)數(shù)據(jù)集合。它不僅包括描述事物的數(shù)據(jù)本身,而且還包括相關(guān)事物之間的聯(lián)繫??梢员欢鄠€(gè)用戶共用的、與應(yīng)用程式相互獨(dú)立。資料庫(kù)中的數(shù)據(jù)也是以檔的形式存儲(chǔ)在存儲(chǔ)介質(zhì)上的,它是資料庫(kù)系統(tǒng)操作的對(duì)象和結(jié)果。資料庫(kù)中的數(shù)據(jù)具有集中性和共用性。所謂集中性是指把資料庫(kù)看成性質(zhì)不同的數(shù)據(jù)檔的集合,其中的數(shù)據(jù)冗餘很小。所謂共用性是指多個(gè)不同用戶使用不同語(yǔ)言,為了不同應(yīng)用目的可同時(shí)存取資料庫(kù)中的數(shù)據(jù)。資料庫(kù)中數(shù)據(jù)由
第二節(jié)資料庫(kù)系統(tǒng)
16
DBMS進(jìn)行統(tǒng)一管理和控制,用戶對(duì)數(shù)據(jù)庫(kù)進(jìn)行各種數(shù)據(jù)操作都是通過DBMS實(shí)現(xiàn)的。
2.資料庫(kù)管理系統(tǒng)
資料庫(kù)管理系統(tǒng)(DataBaseManagementSystem,DBMS)是指負(fù)責(zé)資料庫(kù)存取、維護(hù)、管理的系統(tǒng)軟體。DBMS提供對(duì)數(shù)據(jù)庫(kù)中數(shù)據(jù)資源進(jìn)行統(tǒng)一管理和控制的功能,將用戶應(yīng)用程式與資料庫(kù)數(shù)據(jù)相互隔離。它是資料庫(kù)系統(tǒng)的核心,其功能的強(qiáng)弱是衡量資料庫(kù)系統(tǒng)性能優(yōu)劣的主要指標(biāo)。
DBMS必須運(yùn)行在相應(yīng)的系統(tǒng)平臺(tái)上,在操作系統(tǒng)和相關(guān)的系統(tǒng)軟體支持下,才能有效地運(yùn)行。較流行的微機(jī)中小型資料庫(kù)管理系統(tǒng)有Foxbase、FoxPro、VisualFoxPro、Access等。173.資料庫(kù)系統(tǒng)的組成
資料庫(kù)應(yīng)用系統(tǒng)簡(jiǎn)稱為數(shù)據(jù)庫(kù)系統(tǒng)(DataBaseSystem,DBS),是一個(gè)電腦應(yīng)用系統(tǒng)。它由電腦硬體、資料庫(kù)管理系統(tǒng)、資料庫(kù)、應(yīng)用程式和用戶等部分組成。
應(yīng)用程式硬體語(yǔ)言編譯DBMSOS最終用戶開發(fā)人員資料庫(kù)管理人員18資料庫(kù)系統(tǒng)的組成
資料庫(kù)系統(tǒng)是五部分組成:硬體系統(tǒng);資料庫(kù)集合;資料庫(kù)管理系統(tǒng)及相關(guān)軟體;資料庫(kù)管理員;
用戶;
19
二、資料庫(kù)的三級(jí)模式
資料庫(kù)的三級(jí)模式結(jié)構(gòu)圖
201.模式
模式又稱概念模式或邏輯模式,對(duì)應(yīng)概念級(jí)。是所有用戶的公共數(shù)據(jù)視圖,由資料庫(kù)管理系統(tǒng)提供的數(shù)據(jù)模式描述語(yǔ)言(DDL)來(lái)描述、定義的,體現(xiàn)、反映了資料庫(kù)系統(tǒng)的整體觀。2.外模式
外模式又稱子模式,對(duì)應(yīng)於用戶級(jí)。它是某個(gè)或某幾個(gè)用戶所看到的資料庫(kù)的數(shù)據(jù)視圖。外模式是從模式導(dǎo)出的一個(gè)子集,外模式反映了數(shù)據(jù)的用戶觀。
213.內(nèi)模式
內(nèi)模式又稱存儲(chǔ)模式,對(duì)應(yīng)於物理級(jí)。它是數(shù)據(jù)庫(kù)中全體數(shù)據(jù)的內(nèi)部表示或底層描述,是資料庫(kù)最低一級(jí)的邏輯描述。內(nèi)模式由內(nèi)模式描述語(yǔ)言來(lái)描述、定義,它是資料庫(kù)的存儲(chǔ)觀。
4.三級(jí)模式間的映射
通過外模式模式映射,定義和建立某個(gè)外模式與模式間的對(duì)應(yīng)關(guān)係,將外模式與模式聯(lián)繫起來(lái)。
通過模式內(nèi)模式映射,定義建立數(shù)據(jù)的邏輯結(jié)構(gòu)(模式)與存儲(chǔ)結(jié)構(gòu)(內(nèi)模式)間的對(duì)應(yīng)關(guān)係。
22
三、據(jù)庫(kù)系統(tǒng)的特點(diǎn)
資料庫(kù)系統(tǒng)的出現(xiàn)是電腦數(shù)據(jù)處理技術(shù)的重大進(jìn)步,它具有以下特點(diǎn)。
1.數(shù)據(jù)模型表示複雜的數(shù)據(jù)
資料庫(kù)中數(shù)據(jù)的結(jié)構(gòu)通過數(shù)據(jù)模型描述,不僅描述數(shù)據(jù)本身的特點(diǎn),而且描述數(shù)據(jù)之間的聯(lián)繫。
2.實(shí)現(xiàn)數(shù)據(jù)共用,減少數(shù)據(jù)冗餘
數(shù)據(jù)的最小單位是字段,即可以按字段的名稱存取庫(kù)中某一個(gè)或某一組字段,也可以存取一條記錄或一組記錄。數(shù)據(jù)冗餘就是數(shù)據(jù)重複。23
3.具有較高的數(shù)據(jù)獨(dú)立性
所謂數(shù)據(jù)獨(dú)立是指數(shù)據(jù)與應(yīng)用程式之間的彼此獨(dú)立,它們之間不存在相互依賴的關(guān)係。應(yīng)用程式不必隨數(shù)據(jù)存儲(chǔ)結(jié)構(gòu)的改變而變動(dòng)。在資料庫(kù)系統(tǒng)中,資料庫(kù)管理系統(tǒng)通過映像,實(shí)現(xiàn)應(yīng)用程式對(duì)數(shù)據(jù)的邏輯結(jié)構(gòu)與物理存儲(chǔ)結(jié)構(gòu)之間較高的獨(dú)立性。資料庫(kù)的數(shù)據(jù)獨(dú)立包括兩個(gè)方面:(1)物理數(shù)據(jù)獨(dú)立:數(shù)據(jù)的存儲(chǔ)格式和組織方法改變時(shí),不影響資料庫(kù)的邏輯結(jié)構(gòu),從而不影響應(yīng)用程式。(2)邏輯數(shù)據(jù)獨(dú)立:資料庫(kù)邏輯結(jié)構(gòu)的變化(如數(shù)據(jù)定義的修改,數(shù)據(jù)間聯(lián)繫的變更等)不影響用戶的應(yīng)用程式。數(shù)據(jù)獨(dú)立提高了數(shù)據(jù)處理系統(tǒng)的穩(wěn)定性,從而提高了程式維護(hù)的效益。24
4.有統(tǒng)一的數(shù)據(jù)控制功能
數(shù)據(jù)的存取是併發(fā)的,既多個(gè)用戶同時(shí)使用一個(gè)資料庫(kù)。所以,資料庫(kù)管理系統(tǒng)必須要提供必要的保護(hù)措施,(併發(fā)訪問控制、數(shù)據(jù)安全控制和數(shù)據(jù)的完整性控制).25第三節(jié)數(shù)據(jù)模型一、數(shù)據(jù)的描述
1.現(xiàn)實(shí)世界
現(xiàn)實(shí)世界是存在於人腦之外的客觀世界。
2.資訊世界
資訊世界是現(xiàn)實(shí)世界在人們頭腦中的反映。
(1)實(shí)體
客觀事物在資訊世界中稱為實(shí)體(Entity),它是現(xiàn)實(shí)世界中任何可區(qū)分、識(shí)別的事物。實(shí)體可以是具體的人或物,也可以是抽象概念。26
(2)屬性
實(shí)體具有許多特性,實(shí)體所具有的特性稱為屬性(Attribute)。一個(gè)實(shí)體可用若干屬性來(lái)刻畫。每個(gè)屬性都有特定的取值範(fàn)圍即值域(Domain),值域的類型可以是整數(shù)型、實(shí)數(shù)型、字元型等。(3)實(shí)體型和實(shí)體集
屬性值的集合表示一個(gè)實(shí)體,而屬性的集合表示一種實(shí)體的類型,稱為實(shí)體型。同類型的試題的集合稱為實(shí)體集。
性質(zhì)相同的同類實(shí)體的集合稱實(shí)體集。如:一個(gè)班的學(xué)生。
(4)鍵(key)
唯一標(biāo)識(shí)實(shí)體集中每個(gè)實(shí)體的屬性或?qū)傩约Q為實(shí)體的鍵。如:學(xué)生的學(xué)號(hào)。273.機(jī)器世界
機(jī)器世界以數(shù)據(jù)形式存儲(chǔ)資訊世界中的資訊。
(1)字段(Field)
標(biāo)識(shí)實(shí)體屬性的符號(hào)集稱為字段或資料項(xiàng)目。
(2)記錄(Record)
字段的有序集合稱為記錄,用以描述一個(gè)實(shí)體。
(3)檔(File)
同一類記錄的彙集稱為檔,用來(lái)描述實(shí)體集。
(4)鍵(key)
唯一標(biāo)識(shí)檔中每個(gè)字段或字段集稱為檔的鍵。28
二、數(shù)據(jù)關(guān)係的描述
(1)一對(duì)一聯(lián)繫(1:1)
若兩個(gè)不同型實(shí)體集中,任一方的一個(gè)實(shí)體只與另一方的一個(gè)實(shí)體相對(duì)應(yīng),稱這種聯(lián)繫為一對(duì)一聯(lián)繫。如班長(zhǎng)與班級(jí)的聯(lián)繫。(2)一對(duì)多聯(lián)繫(1:n)
若兩個(gè)不同型實(shí)體集中,一方的一個(gè)實(shí)體對(duì)應(yīng)另一方若干個(gè)實(shí)體,而另一方的一個(gè)實(shí)只對(duì)應(yīng)本方一個(gè)實(shí)體,稱這種聯(lián)繫為一對(duì)多聯(lián)繫。如班長(zhǎng)與學(xué)生的聯(lián)繫。(3)多對(duì)多聯(lián)繫(m:n)
若兩個(gè)不同型實(shí)體集中,兩實(shí)體集中任一實(shí)體均與另一實(shí)體集中若干個(gè)實(shí)體對(duì)應(yīng),稱這種聯(lián)繫為多對(duì)多聯(lián)繫。如教師與學(xué)生的聯(lián)繫,一位教師為多個(gè)學(xué)生授課,每個(gè)學(xué)生也有多位任課教師。29
實(shí)體聯(lián)繫示意
建立實(shí)體模型的一個(gè)主要任務(wù)就是要確定實(shí)體之間的聯(lián)繫。常見的實(shí)體聯(lián)繫有3種:一對(duì)一聯(lián)繫、一對(duì)多聯(lián)繫和多對(duì)多聯(lián)繫。如圖1-4所示。班長(zhǎng)班長(zhǎng)-班級(jí)班級(jí)11班長(zhǎng)班長(zhǎng)-學(xué)生學(xué)生1n教師教師-學(xué)生學(xué)生mn(a)(b)(c)圖1-430
三、
數(shù)據(jù)模型
數(shù)據(jù)模型是指數(shù)據(jù)庫(kù)中數(shù)據(jù)與數(shù)據(jù)之間的關(guān)係。數(shù)據(jù)模型是資料庫(kù)系統(tǒng)中一個(gè)關(guān)鍵概念,數(shù)據(jù)模型不同,相應(yīng)的資料庫(kù)系統(tǒng)就完全不同,任何一個(gè)資料庫(kù)管理系統(tǒng)都是基於某種數(shù)據(jù)模型的。資料庫(kù)管理系統(tǒng)常用的數(shù)據(jù)模型有下列三種:層次模型網(wǎng)狀模型關(guān)係模型31
1.層次數(shù)據(jù)模型(HierarchicalModel)
層次模型是用樹型結(jié)構(gòu)來(lái)表示實(shí)體類型以及實(shí)體間聯(lián)繫的模型。他只能表示1:n的聯(lián)繫,不能表示多種以上的實(shí)體類型之間的複雜聯(lián)繫和實(shí)體類型之間的多對(duì)多的聯(lián)繫。層次模型示意圖如圖1-5所示。圖1-532
2.網(wǎng)狀數(shù)據(jù)模型(NetworkModel)
網(wǎng)狀模型是用網(wǎng)狀結(jié)構(gòu)來(lái)表示實(shí)體類型以及實(shí)體間聯(lián)繫的模型。網(wǎng)中的每一個(gè)結(jié)點(diǎn)表示一個(gè)實(shí)體類型。它能夠表示實(shí)體間的多種複雜聯(lián)繫和實(shí)體類型之間的對(duì)對(duì)多的聯(lián)繫。支持網(wǎng)狀模型的DBMS稱為網(wǎng)狀資料庫(kù)管理系統(tǒng),這種系統(tǒng)中建立的資料庫(kù)是網(wǎng)狀資料庫(kù)。網(wǎng)路結(jié)構(gòu)可以直接表示多對(duì)多聯(lián)繫,這也是網(wǎng)狀模型的主要優(yōu)點(diǎn)。
33
3.關(guān)係模型(RelationalModel)關(guān)係模型是用二維表格結(jié)構(gòu)來(lái)表示實(shí)體以及實(shí)體聯(lián)繫間模型。關(guān)係是由若干個(gè)二維表組成的集合。每個(gè)二維表又稱為關(guān)係。
VisualFoxPro是一種典型的關(guān)係型資料庫(kù)管理系統(tǒng)。
34表1-1關(guān)係模型-讀者表
35第四節(jié)關(guān)係資料庫(kù)一、常用關(guān)係術(shù)語(yǔ)
1.關(guān)係
一個(gè)關(guān)係就是一張二維表,每個(gè)關(guān)係有一個(gè)關(guān)係名。每個(gè)關(guān)係(資料庫(kù)表)用一個(gè)檔來(lái)存儲(chǔ),擴(kuò)展名為.DBF。如表1-1讀者表就是一個(gè)關(guān)係。2.關(guān)係模式
對(duì)關(guān)係結(jié)構(gòu)的描述稱為關(guān)係模式,一個(gè)關(guān)係模式對(duì)應(yīng)一個(gè)關(guān)係的結(jié)構(gòu)。36
對(duì)關(guān)係的描述稱為關(guān)係模式,其格式為:
關(guān)係名(屬性名1,屬性名2,…,屬性名n)關(guān)係既可以用二維表格描述,也可以用數(shù)學(xué)形式的關(guān)係模式來(lái)描述。一個(gè)關(guān)係模式對(duì)應(yīng)一個(gè)關(guān)係的數(shù)據(jù)結(jié)構(gòu),也就是表的數(shù)據(jù)結(jié)構(gòu)。如表1-1對(duì)應(yīng)的關(guān)係,其關(guān)係模式可以表示為:
讀者(讀者編號(hào),姓名,性別,出生日期,少數(shù)民族否,籍貫,聯(lián)繫電話,照片)其中,“讀者”為關(guān)係名,括弧中各項(xiàng)為該關(guān)係所有的屬性名。
37
3.元組
二維表的每一行在關(guān)係中稱為元組。在VisualFoxPro中,一個(gè)元組對(duì)應(yīng)表中一個(gè)記錄。
4.屬性
二維表的每一列在關(guān)係中稱為屬性,每個(gè)屬性都有一個(gè)屬性名。每個(gè)屬性包括屬性名,數(shù)據(jù)類型,長(zhǎng)度。在VisualFoxPro中,一個(gè)屬性對(duì)應(yīng)表中一個(gè)字段,屬性名對(duì)應(yīng)字段名。
5.域
屬性的取值範(fàn)圍稱為域。38
6.關(guān)鍵字
關(guān)係中能唯一區(qū)分、確定不同元組(記錄)的屬性或?qū)傩越M合,稱為該關(guān)係的一個(gè)關(guān)鍵字。單個(gè)屬性組成的關(guān)鍵字稱為單關(guān)鍵字,多個(gè)屬性組合的關(guān)鍵字稱為組合關(guān)鍵字。需要強(qiáng)調(diào)的是,關(guān)鍵字的屬性值不能取“空值”,所謂空值就是“不知道”或“不確定”的值,否則導(dǎo)致無(wú)法唯一地區(qū)分、確定元組。表1-1中“讀者編號(hào)”及“聯(lián)繫電話”屬性可以作為單關(guān)鍵字,因?yàn)樽x者編號(hào)和聯(lián)繫電話不允許相同。而“姓名”及“出生日期”則不能作為關(guān)鍵字,因?yàn)榭忌锌赡艹霈F(xiàn)重名或相同出生日期。如果所有同名考生的出生日期不同,則可將“姓名”和“出生日期”組合成為組合關(guān)鍵字。397.候選關(guān)鍵字
關(guān)係中能夠成為關(guān)鍵字的屬性或?qū)傩越M合可能不是惟一的。凡在關(guān)係中能夠唯一區(qū)分、確定不同元組的屬性或?qū)傩越M合,稱為候選關(guān)鍵字。如表1-1中“讀者編號(hào)”和“聯(lián)繫電話”屬性都是候選關(guān)鍵字。8.主關(guān)鍵字
在候選關(guān)鍵字中選定一個(gè)作為關(guān)鍵字,稱為該關(guān)係的主關(guān)鍵字。關(guān)係中主關(guān)鍵字是唯一的。9.外部關(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)的。40
二、關(guān)係的基本特點(diǎn)
在關(guān)係模型中,關(guān)係具有以下基本特點(diǎn):(1)關(guān)係必須規(guī)範(fàn)化,字段不可再分割。規(guī)範(fàn)化是指關(guān)係模型中每個(gè)關(guān)係模式都必須滿足一定的要求,最基本的要求是關(guān)係必須是一張二維表,每個(gè)屬性值必須是不可分割的最小數(shù)據(jù)單元,即表中不能再包含表。(2)在同一關(guān)係中不允許出現(xiàn)相同的屬性名。
(3)關(guān)係中不允許有完全相同的元組(記錄)。(4)在同一關(guān)係中元組及屬性的順序可以任意。以上是關(guān)係的基本性質(zhì),也是衡量一個(gè)二維表格是否構(gòu)成關(guān)係的基本要素。在這些基本要素中,有一點(diǎn)是關(guān)鍵,即屬性不可再分割,也即表中不能套表。
41
關(guān)係模型實(shí)例學(xué)生表學(xué)分表成績(jī)表外部關(guān)鍵字外部關(guān)鍵字主關(guān)鍵字主關(guān)鍵字42三、關(guān)係運(yùn)算
1.傳統(tǒng)的集合運(yùn)算(並、差、交等)
2.專門的關(guān)係運(yùn)算(選擇、投影、聯(lián)接)1.傳統(tǒng)的集合運(yùn)算
進(jìn)行並、差、交集合運(yùn)算的兩個(gè)關(guān)係必須是具有相同的關(guān)係模式,既結(jié)構(gòu)相同。1)並兩個(gè)相同結(jié)構(gòu)關(guān)係的並是由屬於這兩個(gè)關(guān)係的元組(記錄)組成的集合。2)差(R-S)
關(guān)係R和關(guān)係S,是有屬於R而不屬於S的元組組成的集合,從R中去掉S中也有的元組。3)交關(guān)係R和關(guān)係S,既屬於R又屬於S的元組組成的集合。43
2.專門的關(guān)係運(yùn)算
在關(guān)係資料庫(kù)中查詢用戶所需數(shù)據(jù)時(shí),需要對(duì)關(guān)係進(jìn)行一定的關(guān)係運(yùn)算。關(guān)係運(yùn)算主要有選擇、投影和聯(lián)接三種。選擇(Selection)運(yùn)算是從關(guān)係中查找符合指定條件元組的操作。(對(duì)記錄)
投影(Projection)運(yùn)算是從關(guān)係中選取若干個(gè)屬性的操作。(對(duì)字段)
聯(lián)接(Join)運(yùn)算是將兩個(gè)關(guān)係模式的若干屬性拼接成一個(gè)新的關(guān)係模式的操作,對(duì)應(yīng)的新關(guān)係中,包含滿足聯(lián)接條件的所有元組。(對(duì)字段)自然聯(lián)接:按照字段值對(duì)應(yīng)相等為條件進(jìn)行的聯(lián)接操作稱為等值聯(lián)接。自然連接就是去掉重複屬性(字段)的等值聯(lián)接。443.舉例:設(shè)有如下考生考試成績(jī)表:
45
1)對(duì)表按照“性別=”女“”的條件進(jìn)行選擇運(yùn)算,可得到如下結(jié)果。選擇運(yùn)算結(jié)果準(zhǔn)考證號(hào)姓名性別出生日期筆試成績(jī)上機(jī)成績(jī)總分250199990001趙娜女12/01/708592177250199990003張曉雲(yún)女05/05/69647513946
2)選取表姓名、筆試成績(jī)、上機(jī)成績(jī)?nèi)械耐队安僮?,可得到如?-5所示結(jié)果。投影運(yùn)算結(jié)果姓名筆試成績(jī)上機(jī)成績(jī)趙娜8592李小軍7380張曉雲(yún)6475劉志學(xué)9590孫亮6774李建國(guó)53572023-11-1947
本章目錄第一節(jié)VisualFoxPro系統(tǒng)簡(jiǎn)介
第二節(jié)VisualFoxPro的數(shù)據(jù)及其運(yùn)算
第三節(jié)常用函數(shù)2023-11-1948第一節(jié)VisualFoxPro系統(tǒng)簡(jiǎn)介
VisualFoxPro6.0系統(tǒng)是一個(gè)關(guān)係型DBMS,是微軟公司1998年推出的可視化語(yǔ)言集成包VisualStudio6.0系統(tǒng)中的一個(gè)產(chǎn)品。能運(yùn)行於各種平臺(tái)上的32位數(shù)據(jù)庫(kù)開發(fā)系統(tǒng)。2023-11-1949
一、VisualFoxPro的特點(diǎn)
VisualFoxPro具有介面友好、工具豐富、速度較快等優(yōu)點(diǎn),並在資料庫(kù)操作與管理、可視化開發(fā)環(huán)境、面向?qū)ο蟪淌皆O(shè)計(jì)等方面具有較強(qiáng)的功能。其特點(diǎn)主要體現(xiàn)在以下幾方面:(1)相容性好(2)應(yīng)用程式的開發(fā)更簡(jiǎn)便(3)改進(jìn)了程式調(diào)試工具(4)更簡(jiǎn)便的表設(shè)計(jì)和擴(kuò)充內(nèi)容的數(shù)據(jù)字典(5)增強(qiáng)了查詢和視圖設(shè)計(jì)功能(6)增強(qiáng)了表單設(shè)計(jì)功能(7)更多更好的嚮導(dǎo)(8)增強(qiáng)了OLE與ActiveX的集成2023-11-1950二、VisualFoxPro6.0的安裝與啟動(dòng)1.最低運(yùn)行環(huán)境(1)486DX/66MHZ或更高的處理器。(2)16M以上記憶體。(3)硬碟空間:典型安裝需要85M,最大安裝需要90MB。(4)VGA或更高解析度以上的顯示器。(5)操作系統(tǒng):Windows95或98以上。2.VisualFoxPro6.0系統(tǒng)的安裝(1)將VisualFoxPro6.0系統(tǒng)光碟插入光驅(qū)。(2)打開光碟,找到setup.exe檔,雙擊該檔,運(yùn)行安裝嚮導(dǎo)。(3)按安裝嚮導(dǎo)的提示,單擊“下一步”按鈕進(jìn)行安裝。
(4)進(jìn)入系統(tǒng)安裝介面,根據(jù)提示按步操作,直到安裝完畢。
2023-11-19513.VisualFoxPro6.0的啟動(dòng)與退出啟動(dòng)VisualFoxPro6.0常用方法:(1)單擊“開始”菜單,選擇“程式”,從級(jí)聯(lián)菜單中單擊VisualFoxPro6.0。(2)雙擊桌面建立的VisualFoxPro6.0的快捷圖示。VisualFoxPro6.0的退出有以下四種方法:(1)單擊VFP窗口標(biāo)題欄右邊的關(guān)閉按鈕。(2)在VFP“檔”下拉菜單中選擇“退出”。(3)按快捷鍵ALT+F4.(4)在VFP的命令窗口中輸入命令QUIT。
2023-11-1952三、VisualFoxPro6.0用戶介面
VisualFoxPro6.0的主窗口包括:標(biāo)題欄、菜單欄、常用工具欄、狀態(tài)欄、命令窗口和主窗口工作區(qū)幾個(gè)組成部分。
2023-11-1953
四、VisualFoxPro6.0的操作方式
VisualFoxPro6.0系統(tǒng)為用戶提供了幾種各具特點(diǎn)的操作方式,用戶可根據(jù)情況以及應(yīng)用的需要,選擇合適的操作方式,實(shí)現(xiàn)資料庫(kù)的操作、應(yīng)用。
VisualFoxPro6.0系統(tǒng)的操作方式主要有:(1)命令操作方式(2)菜單操作方式(3)程式操作方式2023-11-1954
1.命令操作方式
命令操作是在命令窗口中逐條輸入命令,直接操作指定對(duì)象的操作方式。命令操作為用戶提供了一個(gè)直接操作的手段,其優(yōu)點(diǎn)是能夠直接使用系統(tǒng)的各種命令和函數(shù),有效操縱資料庫(kù),但要求熟練掌握各種命令和函數(shù)的格式、功能、用法等細(xì)節(jié);2023-11-1955
2.菜單操作方式
VisualFoxPro6.0系統(tǒng)將許多命令做成菜單命令選項(xiàng),用戶通過選擇菜單項(xiàng)來(lái)使用資料庫(kù)的操作方式。在菜單方式中,很多操作是通過調(diào)用相關(guān)的嚮導(dǎo)、生成器、設(shè)計(jì)器工具,以直觀、簡(jiǎn)便、可視化方式完成對(duì)系統(tǒng)的操作,用戶不必熟悉命令的細(xì)節(jié)和相應(yīng)的語(yǔ)法規(guī)則,通過對(duì)話來(lái)完成操作。有了這種方式,一般用戶無(wú)需編程就可完成資料庫(kù)的操作與管理;
2023-11-1956
3.程式操作方式
程式操作就是預(yù)先將實(shí)現(xiàn)某種操作處理的命令序列編成程式,通過運(yùn)行程式來(lái)實(shí)現(xiàn)操作、管理資料庫(kù)的操作方式。根據(jù)實(shí)際應(yīng)用需要編寫的應(yīng)用程式,能夠?yàn)橛脩籼峁┙槊娓?jiǎn)潔直觀、操作步驟更符合業(yè)務(wù)處理流程和規(guī)範(fàn)要求的操作應(yīng)用環(huán)境。但程式的編制,需要經(jīng)過專門訓(xùn)練,只有具備一定設(shè)計(jì)能力的專業(yè)人員方能勝任,普通用戶很難編寫大型的、綜合性較強(qiáng)的應(yīng)用程式。
2023-11-1957
VisualFoxPro6.0系統(tǒng)環(huán)境的設(shè)置
VisualFoxPro6.0系統(tǒng)的環(huán)境設(shè)置決定了系統(tǒng)的操作運(yùn)行環(huán)境和工作方式,設(shè)置是否合理、適當(dāng),直接影響系統(tǒng)的操作運(yùn)行效率和操作的方便性。系統(tǒng)安裝時(shí)按默認(rèn)方式進(jìn)行了相應(yīng)的設(shè)置,用戶通過設(shè)置系統(tǒng)環(huán)境,可添加或刪除VisualFoxPro6.0的相關(guān)組件,也可對(duì)系統(tǒng)當(dāng)前環(huán)境重新調(diào)整設(shè)置。添加或刪除VisualFoxPro6.0組件的操作,要通過系統(tǒng)安裝程式來(lái)實(shí)現(xiàn),而當(dāng)前環(huán)境的設(shè)置可通過相關(guān)命令和菜單操作方式來(lái)實(shí)現(xiàn)。環(huán)境設(shè)置包括主窗口標(biāo)題、默認(rèn)目錄、專案、編輯器、調(diào)試器及表單工具選項(xiàng)、臨時(shí)檔存儲(chǔ)、拖放字段對(duì)應(yīng)的控件和其他選項(xiàng)等內(nèi)容。
運(yùn)用“選項(xiàng)”對(duì)話框或SET命令進(jìn)行附加的配置設(shè)定,還可以通過配置檔進(jìn)行設(shè)置。2023-11-1958
1.VisualFoxPro6.0的設(shè)計(jì)器
VisualFoxPro6.0提供的一系列設(shè)計(jì)器(Designers),為用戶提供了一個(gè)友好的圖形介面操作環(huán)境,用以創(chuàng)建、定制、編輯資料庫(kù)結(jié)構(gòu)、表結(jié)構(gòu)、報(bào)表格式、應(yīng)用程式組件等。
VisualFoxPro6.0提供的設(shè)計(jì)器及其功能如下表所示。
表設(shè)計(jì)器查詢?cè)O(shè)計(jì)器視圖設(shè)計(jì)器表單設(shè)計(jì)器報(bào)表設(shè)計(jì)器標(biāo)籤設(shè)計(jì)器資料庫(kù)設(shè)計(jì)器資料庫(kù)設(shè)計(jì)器連接設(shè)計(jì)器菜單設(shè)計(jì)器數(shù)據(jù)環(huán)境設(shè)計(jì)器五、VisualFoxPro6.0常用工具2023-11-1959
2.VisualFoxPro6.0的嚮導(dǎo)
VisualFoxPro6.0系統(tǒng)為用戶提供了許多功能強(qiáng)大的嚮導(dǎo)(Wizards)。用戶可以在嚮導(dǎo)程式的引導(dǎo)、幫助下,不用編程就能快速地建立良好的應(yīng)用程式,完成許多資料庫(kù)操作、管理功能,為非專業(yè)用戶提供了一種較為簡(jiǎn)便的操作使用方式。
VisualFoxPro6.0系統(tǒng)提供的嚮導(dǎo)及其功能如下表所示。表嚮導(dǎo)報(bào)表嚮導(dǎo)一對(duì)多報(bào)表嚮導(dǎo)標(biāo)籤嚮導(dǎo)分組/總計(jì)報(bào)表嚮導(dǎo)表單向?qū)б粚?duì)多表單向?qū)Р樵儑粚?dǎo)交叉表嚮導(dǎo)本地視圖嚮導(dǎo)遠(yuǎn)程視圖嚮導(dǎo)導(dǎo)入嚮導(dǎo)文檔嚮導(dǎo)圖表嚮導(dǎo)應(yīng)用程式嚮導(dǎo)SQL升遷嚮導(dǎo)數(shù)據(jù)透視表嚮導(dǎo)安裝嚮導(dǎo)2023-11-1960
3.VisualFoxPro6.0的生成器
VisualFoxPro6.0系統(tǒng)提供了若干個(gè)生成器,用以簡(jiǎn)化創(chuàng)建、修改用戶介面程式的設(shè)計(jì)過程,提高軟體開發(fā)的品質(zhì)和效率。每個(gè)生成器包含若干個(gè)選項(xiàng)卡,允許用戶訪問並設(shè)置所選擇對(duì)象的相關(guān)屬性。用戶可將生成器生成的用戶介面直接轉(zhuǎn)換成程式編碼,使用戶從逐條編寫程式代碼、反復(fù)調(diào)試程式的手工作業(yè)中解放出來(lái)。
VisualFoxPro6.0提供的生成器及功能如下表所示。
自動(dòng)格式化生成器組合框生成器命令組生成器編輯框生成器運(yùn)算式生成器表單生成器網(wǎng)格生成器列表框生成器選項(xiàng)組生成器文本框生成器參照完整性生成器2023-11-1961六、VisualFoxPro6.0命令語(yǔ)法
1.一般的命令格式
<命令動(dòng)詞>[範(fàn)圍][FOR<條件>][WHILE<條件>][FIELDS<字段名表>]…VisualFoxPro6.0中常用短語(yǔ)介紹:⑴FIELDS子句用來(lái)規(guī)定當(dāng)前處理的字段或運(yùn)算式。
⑵範(fàn)圍子句用來(lái)規(guī)定對(duì)表進(jìn)行操作的記錄的範(fàn)圍。通常有以下四種範(fàn)圍:ALL:
對(duì)表中所有記錄進(jìn)行操作。NEXTN:
只對(duì)包括當(dāng)前記錄在內(nèi)的連續(xù)N條記錄進(jìn)行操作。RECORDN:
只對(duì)第N條記錄進(jìn)行操作。REST:
從當(dāng)前記錄開始(含當(dāng)前記錄)到表尾的所有記錄。2023-11-1962⑶FOR子句和WHILE子句FOR<條件>的作用是:在規(guī)定的範(fàn)圍內(nèi),按條件檢查全部記錄。
WHILE<條件>的作用是:在規(guī)定的範(fàn)圍內(nèi),只要條件成立,就對(duì)當(dāng)前記錄執(zhí)行該命令,並把記錄指針指向下一條記錄,一旦遇到條件不滿足的記錄,就停止查找並結(jié)束該命令的執(zhí)行。若同時(shí)使用FOR子句和WHILE子句,則WHILE有較高的優(yōu)先順序。
2023-11-1963例:讀者表內(nèi)容如下,分析以下命令的運(yùn)行結(jié)果。
USE讀者LISTNEXT4LISTRESTLISTFIELDS學(xué)號(hào),姓名,入學(xué)成績(jī)LISTFOR性別=“男”
LISTWHILE性別=“男”
USE2023-11-1964
2.VisualFoxPro6.0命令的書寫規(guī)則
(1)命令動(dòng)詞必須寫在一條命令的最前面,而後面子句的次序可以任意排列。(2)命令行中,命令動(dòng)詞與短語(yǔ)、短語(yǔ)與短語(yǔ)和短語(yǔ)的各部分之間必須以一個(gè)或多個(gè)空格分開。(3)命令動(dòng)詞、各短語(yǔ)中的保留字及函數(shù)名都可簡(jiǎn)寫為前四個(gè)字元,且大小寫無(wú)關(guān)。如DISPLAY可簡(jiǎn)寫為DISP。(4)一個(gè)命令行的最大長(zhǎng)度是254個(gè)字元,如果命令太長(zhǎng),一行寫不下,可在行末用“;”續(xù)行。並按回車換行,在下一行繼續(xù)輸入該命令。(5)一行只能寫一個(gè)命令。2023-11-19653.符號(hào)約定
[]:方括號(hào),表示是可選的專案。若選擇該專案,不要寫方括號(hào)本身。<>:角括弧,表示括弧內(nèi)的專案是必須要選的,但不要寫角括弧本身。|:堅(jiān)線號(hào),表示兩個(gè)專案中選擇其中一個(gè),但不要寫堅(jiān)線號(hào)本身。…:省略號(hào),表示前項(xiàng)可繼續(xù)重複多次選擇。
2023-11-1966第二節(jié)VisualFoxPro的數(shù)據(jù)及其運(yùn)算
在VisualFoxPro系統(tǒng)中,數(shù)據(jù)可用常量、變數(shù)、數(shù)組表示,數(shù)據(jù)還可以用字段、記錄和對(duì)象,由它們存儲(chǔ)、容納各種類型的數(shù)據(jù)。因此,常把這些供數(shù)據(jù)存儲(chǔ)的常量、變數(shù)、數(shù)組、字段、記錄和對(duì)象等稱為數(shù)據(jù)存儲(chǔ)容器。用戶正是利用不同的數(shù)據(jù)存儲(chǔ)容器,在VisualFoxPro系統(tǒng)中表示、存儲(chǔ)、操作、處理各種類型的數(shù)據(jù),實(shí)現(xiàn)數(shù)據(jù)處理的應(yīng)用。2023-11-1967一、VisualFoxPro的數(shù)據(jù)類型1.字元型(character)用字母C表示,字元型數(shù)據(jù)包括中文字元、英文字元、數(shù)字字元和其他ASCII字元,其長(zhǎng)度最長(zhǎng)不超過254個(gè)字元。2.?dāng)?shù)值型(Numeric)用字母N表示,用來(lái)表示數(shù)量並可以進(jìn)行算術(shù)運(yùn)算的數(shù)據(jù)類型。由阿拉伯?dāng)?shù)字、正負(fù)號(hào)、小數(shù)點(diǎn)組成。VisualFoxPro中,具有數(shù)值特徵的數(shù)據(jù)類型還有整型、浮點(diǎn)型和雙精度型,但這三種數(shù)據(jù)類型只用於字段變數(shù)。2023-11-19683.日期型(Date)用字母D表示,用來(lái)表示日期的數(shù)據(jù)類型。日期的默認(rèn)格式為:{mm/dd/yy}其中MM表示月,DD表示日,YY表示年。日期型數(shù)據(jù)的長(zhǎng)度固定為8位。
4.日期時(shí)間型(DateTime)用字母T表示,是用來(lái)表示日期和時(shí)間,默認(rèn)格式為:
{mm/dd/yyhh:mm:ss}其中mm,dd,yy的意義與日期型相同,hh,mm,ss分別表示時(shí)、分、秒。長(zhǎng)度也固定為8位。
5.邏輯型(Logic)用字母L表示,用來(lái)描述客觀事物真假或是非判斷的數(shù)據(jù)類型。只有兩個(gè)取值:真(.t.或.T.)和假(.f.或.F.),邏輯型數(shù)據(jù)長(zhǎng)度固定為1位。2023-11-19696.貨幣型(Currency)
用字母Y表示,為存儲(chǔ)貨幣值而使用的一種數(shù)據(jù)類型,它默認(rèn)保留4位小數(shù),佔(zhàn)據(jù)8位元組的存儲(chǔ)空間。7.備註型(Memo)
用字母M表示,用來(lái)存放較多字元的數(shù)據(jù)類型。只用於表中字段類型的定義。字段長(zhǎng)度固定為4個(gè)位元組。實(shí)際數(shù)據(jù)存放在與表檔同名的備註檔(.ftp)中,其長(zhǎng)度依實(shí)際需要而定。8.通用型(General)
用字母G表示,是用來(lái)存儲(chǔ)OLE對(duì)象的數(shù)據(jù)類型??梢允请娮渝l格、文擋、圖形、聲音等,跟備註型數(shù)據(jù)一樣,它只用於表中字段類型的定義,通用型數(shù)據(jù)字段長(zhǎng)度固定為4位。2023-11-1970
二、常量
常量是在命令或程式中可直接引用、具有具體值的資料項(xiàng)目,其特徵是在整個(gè)操作過程中它的值和表現(xiàn)形式保持不變。VisualFoxPro按常量取值的數(shù)據(jù)類型,將常量分為6種類型:數(shù)值型常量、貨幣型常量、字元型常量、邏輯型常量、日期型常量、日期時(shí)間型常量。
2023-11-1971
1.字元型常量
由任意ASCII字元、漢字和漢字字元組成的字元型數(shù)據(jù),字元型常量又稱為字串。為與其他類型常量、變數(shù)和識(shí)別字相區(qū)別,VisualFoxPro要求將字串中所有字元,用一對(duì)雙引號(hào)“"”或單引號(hào)“'”或方括號(hào)“[]”作為定界符對(duì)括起來(lái)。如:“
Iamastudent.”,‘中華人民共和國(guó)’,[VisualFoxPro6.0系統(tǒng)]都是字串。
2023-11-1972
2.日期型常量
日期型常量是表示日期值的數(shù)據(jù),其默認(rèn)格式是:{mm/dd/[yy]yy}如{10/01/02}和{10/01/2002}均表示2002年10月1日這一日期常量值。
3.日期時(shí)間型常量
VisualFoxPro系統(tǒng)中增加了一種表示日期和時(shí)間值的日期時(shí)間型常量,其默認(rèn)格式是:
{mm/dd/[yy]yy[,]hh:mm:ss[a|p]}
其中a和p分別表示AM(上午)和PM(下午)。日期值和日期時(shí)間值的輸入格式與輸出格式並不完全相同,特別是輸出格式受系統(tǒng)環(huán)境設(shè)置的影響,用戶可根據(jù)應(yīng)用需要進(jìn)行相應(yīng)調(diào)整、設(shè)置。
2023-11-1973(1)日期格式中的世紀(jì)值
通常日期格式中用2位數(shù)表示年份,但涉及到世紀(jì)問題就不便區(qū)分。VisualFoxPro提供設(shè)置命令進(jìn)行相應(yīng)設(shè)置。命令格式:
SETCENTURYON|OFF|TO[nCentury]
命令功能:
ON:日期數(shù)據(jù)顯示10位,其中年份4位,即日期值輸出時(shí)顯示年份值;
OFF:(默認(rèn)值)。日期數(shù)據(jù)顯示8位,年份2位,即日期值輸出時(shí)不顯示年份值;
TO[nCentury]:指定日期數(shù)據(jù)所對(duì)應(yīng)的世紀(jì)值。nCentury是一個(gè)1~99的整數(shù),代表世紀(jì)數(shù)。
2023-11-1974(2)設(shè)置日期顯示格式
用戶可以調(diào)整、設(shè)置日期值和時(shí)間值的顯示輸出格式。既可以用命令方式設(shè)置,也可以用菜單方式設(shè)置。命令格式:
SETDATE[TO]AMERICAN|ANSI|BRITISH|FRENCH|GERMAN|ITLIAN|JAPAN|USA|MDY|DMY|YMD|SHORT|LONG
命令功能:設(shè)置日期型和日期時(shí)間型數(shù)據(jù)的顯示輸出格式。系統(tǒng)默認(rèn)為AMERICAN美國(guó)格式。如果日期格式設(shè)置為SHORT或LONG格式,VisualFoxPro系統(tǒng)將按Windows系統(tǒng)設(shè)置的短日期格式或長(zhǎng)日期格式顯示輸出日期數(shù)據(jù),而且SETCENTURY命令的設(shè)置被忽略。
2023-11-1975
各種日期格式設(shè)置所對(duì)應(yīng)的日期顯示輸出格式,見表2-1所示。
表2-1系統(tǒng)日期格式
設(shè)
置
值
日
期
格
式
設(shè)
置
值
日
期
格
式
AMERICANmm/dd/yyUSAmm-dd-yyANSIyy.mm.ddMDYmm/dd/yyBRITISH/FRENCHdd//mm/yyDMYdd//mm/yyGERMANdd.mm.yyYMDyy/mm/ddITALIANdd-mm-yySHORTWindows短日期格式JAPANyy/mm/ddLONGWindows長(zhǎng)日期格式2023-11-1976
(3)設(shè)置日期2000年相容性
通常日期型和日期時(shí)間型數(shù)據(jù)的結(jié)果,與SETDATE命令和SETCENTURY命令設(shè)置狀態(tài)及當(dāng)前系統(tǒng)時(shí)間有關(guān)。由於系統(tǒng)時(shí)間與相應(yīng)設(shè)置不同,同一數(shù)據(jù)的結(jié)果可能有不同的解釋。如日期值{10/11/12}可以解釋為1912年10月11日、2012年10月11日、1912年11月10日、1910年11月12日或者2010年11月12日等。這顯然會(huì)導(dǎo)致系統(tǒng)混亂,而且還可能造成2000年相容性錯(cuò)誤,影響系統(tǒng)正常、有效的操作運(yùn)行。2023-11-1977(4)嚴(yán)格的日期格式
VisualFoxPro系統(tǒng)增加了一種所謂嚴(yán)格的日期格式。不論哪種設(shè)置,按嚴(yán)格日期格式表示的日期型和日期時(shí)間型數(shù)據(jù),都具有相同的值和表示形式。嚴(yán)格的日期格式是:
{^yyyy-mm-dd[,][hh[:mm[:ss]][a|p]]}
^符號(hào)表明該格式是嚴(yán)格的日期格式,並按照YMD的格式解釋日期型和日期時(shí)間型數(shù)據(jù),它是嚴(yán)格日期格式的標(biāo)誌,不可缺少。有效的日期型和日期時(shí)間型數(shù)據(jù)分隔符號(hào)為:連字元“-”、正斜杠“/”、句點(diǎn)“.”和空格。如{^2002-10-01}、{^2002-10-0110:30:30a},分別表示2002年10月1日及該日上午10時(shí)30分30秒這兩個(gè)日期數(shù)據(jù)。2023-11-1978
VisualFoxPro系統(tǒng)默認(rèn)採(cǎi)用嚴(yán)格的日期格式,並以此檢測(cè)所有日期型和日期時(shí)間型數(shù)據(jù)的格式是否規(guī)範(fàn)、合法。為與早期版本相容,用戶通過命令或菜單設(shè)置改變這一格式。命令設(shè)置的命令格式:
SETSTRICTDATETO[0|1|2]
命令功能:0:關(guān)閉嚴(yán)格的日期格式檢測(cè),即設(shè)置日期格式按傳統(tǒng)的嚴(yán)格的格式;1:設(shè)置嚴(yán)格的日期格式檢測(cè)(默認(rèn)值),要求所有日期型和日期時(shí)間型數(shù)據(jù)均按嚴(yán)格的格式;2:設(shè)置與1相同,但如果程式代碼中出現(xiàn)CTOD()和CTOT()函數(shù)時(shí),會(huì)出現(xiàn)編譯錯(cuò)誤。這個(gè)設(shè)置最適合調(diào)試時(shí)使用,用來(lái)檢測(cè)2000年相容性錯(cuò)誤;省略:恢復(fù)系統(tǒng)默認(rèn)值,等價(jià)於1的設(shè)置。2023-11-19794.邏輯型常量
邏輯型常量就是表示邏輯判斷結(jié)果“真”或“假”的邏輯值。邏輯常量只有真和假兩種,分別用(.t.或.y.)和(.f.或.n.)表示真和假。一般應(yīng)在表示邏輯常量的字母左右加注圓點(diǎn)符“.”以示區(qū)別。邏輯型常量在內(nèi)存中佔(zhàn)用一個(gè)位元組。2023-11-19805.?dāng)?shù)值型常量
也稱常數(shù),用來(lái)表示一個(gè)數(shù)量的大小,由數(shù)字0-9、小數(shù)點(diǎn)和正負(fù)符號(hào)組成。例如,12.3,-67,3.14等。也可以使用科學(xué)計(jì)數(shù)法形式表示,例如:6.789*105可表示為6.789E5。6.貨幣型常量
用來(lái)表示貨幣值,書寫格式與數(shù)值型類似,但要加上一個(gè)前置的符號(hào)$。貨幣型數(shù)據(jù)在存儲(chǔ)和計(jì)算時(shí),採(cǎi)用4位小數(shù),如果多於4位,那麼系統(tǒng)自動(dòng)四捨五入。貨幣型常量不能用科學(xué)計(jì)數(shù)法表示。
2023-11-1981
三、變數(shù)
變數(shù)是在操作過程中可以改變其取值或數(shù)據(jù)類型的資料項(xiàng)目。在VisualFoxPro系統(tǒng)中變數(shù)分為字段變數(shù)、記憶體變數(shù)、數(shù)組變數(shù)和系統(tǒng)變數(shù)4類。此外,作為面向?qū)ο蟮某淌秸Z(yǔ)言,VisualFoxPro在進(jìn)行面向?qū)ο蟮某淌皆O(shè)計(jì)中引入了對(duì)象的概念,對(duì)象實(shí)質(zhì)上也是一類變數(shù)。確定一個(gè)變數(shù),需要確定其三個(gè)要素:變數(shù)名、數(shù)據(jù)類型和變數(shù)值。2023-11-1982
1.命名規(guī)則
在VisualFoxPro系統(tǒng)中,將表示、存儲(chǔ)數(shù)據(jù)的常量、變數(shù)、數(shù)組、字段、記錄、對(duì)象、表、資料庫(kù)等,都稱之為數(shù)據(jù)容器。所有數(shù)據(jù)容器均需命名以相互區(qū)別,為規(guī)範(fàn)各類對(duì)象的命名,VisualFoxPro系統(tǒng)推薦了若干“命名規(guī)則”供用戶參考,以提高操作命令與程式的可讀性和規(guī)範(fàn)性?!袷褂米帜?,下劃線和數(shù)字命名。一般建議不採(cǎi)用漢字命名;●命名以字母或下劃線開頭;除自由表中字段名、索引的TAG標(biāo)識(shí)名最多只能10個(gè)字元外,其他的命名可使用1~128個(gè)字元;●避免使用VisualFoxPro的保留字;●檔案名的命名應(yīng)遵循操作系統(tǒng)的約定。
2023-11-1983
2.記憶體變數(shù)的賦值
記憶體變數(shù)是在內(nèi)存中定義的一種單個(gè)數(shù)據(jù)元素的臨時(shí)性變數(shù)。(1)記憶體變數(shù)的數(shù)據(jù)類型記憶體變數(shù)的數(shù)據(jù)類型包括:數(shù)值型、字元型、邏輯型、日期型和日期時(shí)間型;(2)記憶體變數(shù)的建立建立記憶體變數(shù)就是給記憶體變數(shù)賦值。記憶體變數(shù)賦值既可定義一個(gè)新的記憶體變數(shù),也可改變已有記憶體變數(shù)的值或數(shù)據(jù)類型。命令格式一:
STORE<運(yùn)算式>TO<記憶體變數(shù)表>
命令功能:計(jì)算<運(yùn)算式>的值並賦值給各個(gè)記憶體變數(shù)。命令格式二:
<記憶體變數(shù)>=<運(yùn)算式>
命令功能:計(jì)算<運(yùn)算式>的值並賦值給指定記憶體變數(shù)。2023-11-1984
3.運(yùn)算式的顯示輸出
可以用兩個(gè)命令在螢?zāi)簧巷@示輸出記憶體變數(shù)的值。命令格式:
?|??<運(yùn)算式表>[AT<列號(hào)>]
命令功能:計(jì)算運(yùn)算式表中各運(yùn)算式的值,並在螢?zāi)簧现付ㄎ恢蔑@示輸出各式的值。?:先回車換行,再計(jì)算並輸出運(yùn)算式的值;??:在螢?zāi)簧袭?dāng)前位置,計(jì)算並直接輸出運(yùn)算式的值;<運(yùn)算式表>:多個(gè)用逗號(hào)兩兩分隔的運(yùn)算式,各運(yùn)算式的值輸出時(shí),以空格分隔;
AT<列號(hào)>子句指定運(yùn)算式值從指定列開始顯示輸出。AT的定位只對(duì)它前面的一個(gè)運(yùn)算式有效,多個(gè)運(yùn)算式必須用多個(gè)AT子句分別定位輸出,而且可反序定位。2023-11-1985
4.記憶體變數(shù)的顯示
(1)變數(shù)的顯示用?/??命令可以分別顯示單個(gè)或一組變數(shù)的值。有時(shí)用戶還需瞭解變數(shù)其他相關(guān)資訊,如數(shù)據(jù)類型、作用範(fàn)圍,或瞭解系統(tǒng)變數(shù)的資訊。VisualFoxPro系統(tǒng)提供了相應(yīng)操作命令。命令格式:
DISPLAY|LISTMEMORY[LIKE<通配符>][TOPRINTER[PROMPT]|TOFILE<文本檔案名>][NOCONSOLE]
命令功能:顯示指定變數(shù)的資訊。2023-11-1986說(shuō)明:(1)LIKE選項(xiàng)子句可以使用通配符來(lái)代替變數(shù)名的一部分,以顯示與通配符相符合的變數(shù)。有兩種通配符:“?”代表任意一個(gè)字元,“*”代表任意多個(gè)字元。(2)LIST和DISPLAY的區(qū)別是:前者連續(xù)顯示,後者分屏顯示。(3)TOFILE<檔案名>子句功能是將記憶體變數(shù)有關(guān)資訊送至一個(gè)文本檔。TOPRINTER則是送至印表機(jī)列印。例:定義並顯示記憶體變數(shù):STORE"dggaf"TOa1a2={^2004-04-25}c=.t.LISTMEMOLIKEa?2023-11-1987
5.記憶體變數(shù)檔的建立
VisualFoxPro提供相應(yīng)命令,可用檔形式將某些記憶體變數(shù)保存起來(lái),以便重複使用。命令格式:
SAVETO<變數(shù)檔案名>[ALLLIKE<通配符>|ALLEXCEPT<通配符>]
命令功能:將指定變數(shù)的資訊保存到指定的變數(shù)檔(*.MEM)中。
ALLLIKE<通配符>:只保存符合通配符條件的所有變數(shù);
ALLEXCEPT<通配符>:只保存不符合通配符條件的所有變數(shù)。2023-11-1988
6.記憶體變數(shù)的恢復(fù)
需要保存在檔中的變數(shù)資訊時(shí),必須先恢復(fù)到記憶體後方可使用。命令格式:
RESTOREFROM<變數(shù)檔案名>[ADDITIVE]
命令功能:將指定變數(shù)檔(*.MEM)中變數(shù)資訊恢復(fù)到記憶體中。
ADDITIVE:省略此項(xiàng),清除記憶體所有變數(shù)後再恢復(fù)檔中變數(shù)的資訊;加選此項(xiàng),將變數(shù)檔中的變數(shù)資訊追加到記憶體現(xiàn)有變數(shù)資訊中。
7.記憶體變數(shù)的清除
VisualFoxPro系統(tǒng)對(duì)定義記憶體變數(shù)的數(shù)量是有限制的,應(yīng)及時(shí)清理,儘量減少記憶體的佔(zhàn)用,定義其他變數(shù)。命令格式:
RELEASE<變數(shù)表>
RELEASEALL[LIKE<通配符>|EXCEPT<通配符>]
2023-11-1989
8.?dāng)?shù)組變數(shù)
數(shù)組變數(shù)是結(jié)構(gòu)化的變數(shù),是一組具有相同名稱、以下標(biāo)相互區(qū)分的有序記憶體變數(shù)。一個(gè)數(shù)組通常都包含多個(gè)數(shù)據(jù)元素。VisualFoxPro系統(tǒng)中只允許使用一維數(shù)組(相當(dāng)於數(shù)列)和二維數(shù)組(相當(dāng)於行列式或矩陣)。(1)數(shù)組元素
●數(shù)組中各有序變數(shù)(數(shù)據(jù)元素)組成數(shù)組的成員,稱為數(shù)組元素。數(shù)組元素實(shí)質(zhì)上是一個(gè)記憶體變數(shù),也稱數(shù)組變數(shù),它們具有相同變數(shù)名即數(shù)組名,彼此以下標(biāo)區(qū)分;2023-11-1990
●數(shù)組元素的名稱(變數(shù)名)用數(shù)組名加下標(biāo)構(gòu)成。如AA(1),BB(2,3)分別表示一維數(shù)組AA的第1個(gè)元素,二維數(shù)組BB中第2行第3列的元素;●下標(biāo)必須用圓括號(hào)對(duì)括;一維數(shù)組的元素只有一個(gè)下標(biāo),二維數(shù)組的元素有兩個(gè)以逗號(hào)分隔的下標(biāo);●下標(biāo)必須是非負(fù)數(shù)值,可以是常量、變數(shù)、函數(shù)或運(yùn)算式,下標(biāo)值會(huì)自動(dòng)取整。如AA(1.5),AA(nA1),AA(2+10/3)等;●數(shù)組元素的數(shù)據(jù)類型決定於最後賦值的數(shù)據(jù)類型;不同數(shù)組元素的數(shù)據(jù)類型可以不同;●數(shù)組元素與普通記憶體變數(shù)一樣操作,可以賦值和引用。2023-11-1991
(2)數(shù)組的定義
數(shù)組必須先定義後使用,定義數(shù)組是向系統(tǒng)申請(qǐng)數(shù)組元素在內(nèi)存中的存儲(chǔ)空間。命令格式:
DIMENSION|DECLARE<數(shù)組名1>(<數(shù)值運(yùn)算式1>[,<數(shù)值運(yùn)算式2>])[,<數(shù)組名2>(<數(shù)值運(yùn)算式3>[,<數(shù)值運(yùn)算式4>])…]命令功能:定義指定的各個(gè)數(shù)組。
(3)數(shù)組的賦值與引用
數(shù)組元素的賦值與引用,與普通記憶體變數(shù)的規(guī)則相同。2023-11-1992
9.字段變數(shù)
表由若干記錄構(gòu)成,每個(gè)記錄都包含若干個(gè)數(shù)量相同的字段,同一字段在不同記錄中分別對(duì)應(yīng)不同的字段值,因此,字段也是變數(shù)。與其他變數(shù)不同的是,字段變數(shù)是定義在表中的變數(shù),隨表的存取而存取,因而是永久性變數(shù)。字段名就是變數(shù)名;變數(shù)的數(shù)據(jù)類型為VisualFoxPro中任意數(shù)據(jù)類型,字段值就是變數(shù)值。2023-11-1993
10.系統(tǒng)變數(shù)
系統(tǒng)變數(shù)是VisualFoxPro系統(tǒng)特有的記憶體變數(shù),它由VisualFoxPro系統(tǒng)定義、維護(hù)。系統(tǒng)變數(shù)有很多,其變數(shù)名均以下劃線“_”開始,因此在定義記憶體變數(shù)和數(shù)組變數(shù)名時(shí),不要以下劃線開始,以免與系統(tǒng)變數(shù)名衝突。系統(tǒng)變數(shù)設(shè)置、保存了很多系統(tǒng)的狀態(tài)、特性,瞭解、熟悉並且充分地運(yùn)用系統(tǒng)變數(shù),會(huì)給資料庫(kù)系統(tǒng)的操作、管理帶來(lái)很多方便,特別是開發(fā)應(yīng)用程式時(shí)更為突出,學(xué)習(xí)時(shí)可對(duì)此有所關(guān)注。2023-11-1994
四、VisualFoxPro的運(yùn)算式
在VisualFoxPro系統(tǒng)中,運(yùn)算式是由常量、變數(shù)、函數(shù)及其他數(shù)據(jù)單獨(dú)或與運(yùn)算符組成的有意義的運(yùn)算式子。運(yùn)算符是對(duì)數(shù)據(jù)對(duì)象進(jìn)行加工處理的符號(hào),根據(jù)其處理數(shù)據(jù)對(duì)象的數(shù)據(jù)類型,運(yùn)算符分為算術(shù)(數(shù)值)運(yùn)算符、字元運(yùn)算符、日期時(shí)間運(yùn)算符、邏輯運(yùn)算符和關(guān)係運(yùn)算符五類,相應(yīng)的,運(yùn)算式也分為算術(shù)運(yùn)算式、字元運(yùn)算式、日期時(shí)間表達(dá)式、邏輯運(yùn)算式和關(guān)係運(yùn)算式五類。常量、變數(shù)和函數(shù)可以作為運(yùn)算式的特例。今後涉及到運(yùn)算式的描述,除特別指明,均可包含這些特殊的形式。2023-11-1995
在一個(gè)運(yùn)算式中可能包含多個(gè)由不同運(yùn)算符連接起來(lái)的、具有不同數(shù)據(jù)類型的數(shù)據(jù)對(duì)象,但任何運(yùn)算符兩側(cè)的數(shù)據(jù)對(duì)象必須具有相同數(shù)據(jù)類型,否則運(yùn)算將會(huì)出錯(cuò);由於運(yùn)算式中有多種運(yùn)算,不同的運(yùn)算順序可能得出不同結(jié)果,甚至出現(xiàn)運(yùn)算錯(cuò)誤,因此當(dāng)運(yùn)算式中包含多種運(yùn)算時(shí),必須按一定順序施行相應(yīng)運(yùn)算,才能保證運(yùn)算的合理性和結(jié)果的正確性、惟一性。用戶也可以通過給運(yùn)算式加圓括號(hào)的方式,改變其默認(rèn)運(yùn)算順序。在VisualFoxPro系統(tǒng)中,各類運(yùn)算的優(yōu)先順序如下:
圓括號(hào)>算術(shù)和日期運(yùn)算>字串運(yùn)算>關(guān)係運(yùn)算>邏輯運(yùn)算同一類運(yùn)算符也有一定的運(yùn)算優(yōu)先順序,這在各類運(yùn)算式中分別介紹。如果有多個(gè)同一級(jí)別的運(yùn)算,則按在運(yùn)算式中出現(xiàn)的先後順序進(jìn)行運(yùn)算。2023-11-19961.算術(shù)運(yùn)算式
算術(shù)運(yùn)算式又稱數(shù)值運(yùn)算式,其運(yùn)算對(duì)象和運(yùn)算結(jié)果均為數(shù)值型數(shù)據(jù)。數(shù)值運(yùn)算符的功能及運(yùn)算優(yōu)先順序,如表2-2所示。表中運(yùn)算符按運(yùn)算優(yōu)先順序別從高到低順序排列。表2-2算術(shù)運(yùn)算符運(yùn)算符功
能表
達(dá)
式
舉
例運(yùn)算結(jié)果優(yōu)先順序別()圓括號(hào)(2-5)*(3+2)-15最高|||最低-取相反數(shù)-(3-8)5**、^乘冪2**5、3^232、9*、/乘、除2*10、25/520、5%取餘數(shù)20%50+、-加、減36+19、29-4755、-182023-11-1997
2.字元運(yùn)算式
字元運(yùn)算式是由字元運(yùn)算符將字元型數(shù)據(jù)對(duì)象連接起來(lái)進(jìn)行運(yùn)算的式子。字元運(yùn)算的對(duì)象是字元型數(shù)據(jù)對(duì)象,運(yùn)算結(jié)果是字元常量或邏輯常量。表2-3為字元運(yùn)算符的功能。
“+”與“-”都是字元連接運(yùn)算符,都將兩個(gè)字串順序連接,但“+”是直接連接,“-”則將串1尾部所有空格移到串2尾部後再連接;“$”運(yùn)算實(shí)質(zhì)上是比較兩個(gè)串的包含關(guān)係,因此有些書籍中將其歸於關(guān)係運(yùn)算,其作用是比較、判斷串1是否為串2的子串,如果串1是串2的子串,運(yùn)算結(jié)果為“真”,否則為“假”。所謂子串,如果串1中所有字元均包含在串2中、且與串1中排列方式與順序完全一致,則稱串1為串2的子串。2023-11-1998
表2-3字元運(yùn)算符
兩個(gè)連接運(yùn)算的優(yōu)先順序別相同,但高於$的比較運(yùn)算。運(yùn)算符功能運(yùn)算式舉例運(yùn)算結(jié)果+串1+串2:兩串順序相連接’12‘+’56’’1256’-串1-串2:串1尾空格移到串2尾後再順序相連接’12‘-‘56’‘1256‘$串1$串2:串1是否為串2子串‘1234’$‘a(chǎn)12345’‘1234’$‘34512’.T..F.2023-11-19993.日期運(yùn)算式
由日期運(yùn)算符將一個(gè)日期型或日期時(shí)間型數(shù)據(jù)與一個(gè)數(shù)值型數(shù)據(jù)連接而成的運(yùn)算式稱為日期運(yùn)算式。日期運(yùn)算符分為“+”和“-”兩種,其作用分別是在日期數(shù)據(jù)上增加或減少一個(gè)天數(shù),在日期時(shí)間數(shù)據(jù)上增加或減少一個(gè)秒數(shù)。兩個(gè)運(yùn)算的優(yōu)先順序別相同。例如:?{^2004-05-10}+10?{^2004-05-10}-{^2003-05-10}主螢?zāi)伙@示:05/20/04366
2023-11-19100
4.關(guān)係運(yùn)算式
由關(guān)係運(yùn)算符連接兩個(gè)同類數(shù)據(jù)對(duì)象進(jìn)行關(guān)係比較的運(yùn)算式稱為關(guān)係運(yùn)算式。關(guān)係運(yùn)算式的值為邏輯值,關(guān)係運(yùn)算式成立則其值為“真”,否則為“假”。表2-4關(guān)係運(yùn)算符
運(yùn)算符功
能表
達(dá)
式
舉
例結(jié)果<小於15<4*6.T.>大於‘A’>‘1’.T.=等於2+4=3*5.F.<>、#、!=不等於5<>-10.T.<=小於或等於'abc'<='AB'.F.>=大於或等於{10-10-02}>={10/01/02}.T.==字串恒同‘a(chǎn)bc’==’abcabc’.F.2023-11-19101
關(guān)係運(yùn)算符的優(yōu)先順序別相同。關(guān)係運(yùn)算式運(yùn)算時(shí),就是比較同類兩數(shù)據(jù)對(duì)象的“大小”,對(duì)於不同類型的數(shù)據(jù),其“大小”或者是值的大小,或者是先後順序。日期或日期時(shí)間數(shù)據(jù)以日期或時(shí)間的先後順序?yàn)樾?。在VisualFoxPro系統(tǒng)中,字元型數(shù)據(jù)的比較相對(duì)複雜,默認(rèn)規(guī)則為:(1)單個(gè)字元單個(gè)字元的比較是以字元ASCII碼的大小作為字元的“大小”,也就是先後順序。(2)字串兩個(gè)字串進(jìn)行比較的基本原則是從左到右逐個(gè)字元進(jìn)行比較,但因系統(tǒng)相關(guān)設(shè)置狀態(tài)不同,比較的結(jié)果與預(yù)期的不完全相同。2023-11-19102●相等比較:用運(yùn)算符“=”進(jìn)行兩串比較時(shí),或者到達(dá)右端串的末尾字元為止(當(dāng)SETEXACTOFF時(shí))或者當(dāng)?shù)竭_(dá)兩串的末端為止(當(dāng)SETEXACTON時(shí)),以判斷兩串是否相等;●恒同比較:用運(yùn)算符==進(jìn)行兩串的恒同比較時(shí),不論SETEXACT的設(shè)置如何,只有當(dāng)兩串長(zhǎng)度相同,字元相同,排列一致時(shí)才成立;●大小比較:用運(yùn)算符“<”或“>”進(jìn)行兩串比較時(shí),比較到第1個(gè)不相同字元為止,否則,長(zhǎng)度較長(zhǎng)的串較“大”;●其他比較:除上述運(yùn)算符之外的其他運(yùn)算符<>、<=和>=的比較,均可看作是兩個(gè)運(yùn)算符以邏輯“或”的關(guān)係構(gòu)成的複合運(yùn)算;2023-11-19103
(3)漢字系統(tǒng)默認(rèn)按漢字的拼音排列漢字的順序,也就是以漢字的拼音順序比較“大小”,因此,漢字比較實(shí)質(zhì)上是以字母的順序進(jìn)行比較;但VisualFoxPro系統(tǒng)可以設(shè)置漢字按筆劃排列順序,因而,漢字的“大小”就決定其筆劃數(shù)的多少。用菜單設(shè)置漢字排列順序方式的操作步驟為:?jiǎn)螕簟竟ぞ摺縷【選項(xiàng)】命令,將打開“選項(xiàng)”對(duì)話框中,在“數(shù)據(jù)”選項(xiàng)卡的“排序序列”下拉列表框中選擇“Stroke”項(xiàng)並確定,系統(tǒng)將按漢字的筆劃數(shù)進(jìn)行漢字的排序、比較運(yùn)算。若選擇“Machine”項(xiàng)則字元按機(jī)內(nèi)碼次序排序,漢字在所有西文字元後,漢字內(nèi)部按國(guó)標(biāo)碼排序。2023-11-19104例:在不同的字元排序設(shè)置下比較字串的大小。
SETCOLLATETO"MACHINE"?"x"<"xyz","x"<"XYZ","x"<"X"
?"湖南"<"湖北","湖"<"湖南","你好"<"您好"
SETCOLLATETO"PINYIN"?"x"<"xyz","x"<"XYZ","x"<"X"
?"湖南"<"湖北","湖"<"湖南","你好"<"您好"SETCOLLATETO"stroke”?"x"<"xyz","x"<"XYZ","x"<"X"?"湖南"<"湖北","湖"<"湖南","你好"<"您好"
2023-11-19105
5.邏輯運(yùn)算式
由邏輯運(yùn)算將邏輯型數(shù)據(jù)對(duì)象連接而成的式子稱為邏輯運(yùn)算式。邏輯運(yùn)算式的運(yùn)算對(duì)象與運(yùn)算結(jié)果均為邏輯型數(shù)據(jù)。表2-5為邏輯運(yùn)算符的功能。邏輯運(yùn)算符前後一般要加圓點(diǎn)“.”標(biāo)記,以示區(qū)別。表2-5邏輯運(yùn)算符運(yùn)算符功
能優(yōu)先順序別()圓括號(hào)最高||最低.NOT.或!邏輯非.AND.邏輯與.OR.邏輯或2023-11-19106
對(duì)於各種邏輯運(yùn)算,其運(yùn)算規(guī)則可由邏輯運(yùn)算真值表確定,表2-6所示就是邏輯運(yùn)算真值表。
表2-6邏輯運(yùn)算真值表ABA.AND.BA.OR.B.NOT.A.T..T..T..T..F..T..F..F..T..F..F..T..F..T..T..F..F..F..F..T.2023-11-19107
在VisualFoxPro系統(tǒng)中,經(jīng)常需要與一種特殊的“數(shù)據(jù)”空值(NULL(或.NULL.)打交道。表中字段可根據(jù)需要允許或限制其取空值??罩祵?duì)於邏輯運(yùn)算的影響如表2-7所示。
表2-7NULL值對(duì)邏輯運(yùn)算的影響邏輯運(yùn)算A=.T.A=.F.A=.NULLA.AND.NULL.NULL.F..NULL.A.OR.NULL.T..NULL..NULL..NOT.A.F..T..NULL.2023-11-19108
對(duì)於兩個(gè)邏輯型數(shù)據(jù),一般不用比較的方式來(lái)確定它們之間的關(guān)係,而是直接運(yùn)用邏輯運(yùn)算的方式進(jìn)行處理。如對(duì)表中記錄實(shí)施選擇運(yùn)算時(shí),是用FOR<條件>或WHILE<條件>進(jìn)行邏輯判斷,其中<條件>就是一個(gè)關(guān)係運(yùn)算式或邏輯運(yùn)算式。對(duì)於以邏輯型字段進(jìn)行邏輯判斷的情況,一般不用關(guān)係運(yùn)算式而直接用邏輯運(yùn)算式。如“性別”是一個(gè)邏輯型字段,並約定“真”表示男性,“假
溫馨提示
- 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ù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
- 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ì)自己和他人造成任何形式的傷害或損失。
最新文檔
- 夫妻財(cái)產(chǎn)分割離婚協(xié)議書(10篇)
- 蘭花防病知識(shí)培訓(xùn)課件
- 【醫(yī)學(xué)課件】腰椎間盤突出癥的手術(shù)治療
- 煤礦安全知識(shí)試題
- 農(nóng)業(yè)生產(chǎn)開放創(chuàng)新共享共贏方案
- 保潔員勞務(wù)合同保潔勞務(wù)派遣合同
- 腦腫瘤病人的護(hù)理課件
- 科技行業(yè)網(wǎng)絡(luò)安全技術(shù)的突破與發(fā)展
- 互聯(lián)網(wǎng)派遣合同范本
- 科技展覽中互動(dòng)體驗(yàn)的內(nèi)容與形式設(shè)計(jì)策略探討
- 皮膚病學(xué)-動(dòng)物性皮膚病課件
- 涉詐風(fēng)險(xiǎn)賬戶審查表
- 論完整的學(xué)習(xí)與核心素養(yǎng)的形成課件
- 新零售運(yùn)營(yíng)管理PPT完整全套教學(xué)課件
- (完整版)小學(xué)英語(yǔ)語(yǔ)法大全-附練習(xí)題,推薦文檔
- 注塑參數(shù)表完整版
- 初中英語(yǔ)中考總復(fù)習(xí)
- 學(xué)習(xí)弘揚(yáng)楓橋精神與楓橋經(jīng)驗(yàn)PPT楓橋經(jīng)驗(yàn)蘊(yùn)含的精神和內(nèi)涵PPT課件(帶內(nèi)容)
- ArcEngine二次開發(fā)入門介紹
- 山東大學(xué)出版社六年級(jí)上冊(cè)傳統(tǒng)文化第一單元寬仁厚愛備課教案
- 選煤廠工完料盡場(chǎng)地清制度
評(píng)論
0/150
提交評(píng)論