大學(xué)計(jì)算機(jī)答案.ppt_第1頁
大學(xué)計(jì)算機(jī)答案.ppt_第2頁
大學(xué)計(jì)算機(jī)答案.ppt_第3頁
大學(xué)計(jì)算機(jī)答案.ppt_第4頁
大學(xué)計(jì)算機(jī)答案.ppt_第5頁
已閱讀5頁,還剩409頁未讀 繼續(xù)免費(fèi)閱讀

下載本文檔

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

文檔簡介

1、VFP程序設(shè)計(jì)基礎(chǔ),計(jì)算機(jī)教研室2#404 Email: QQ: 1394346386 講 授:劉慶海,第1章 VFP數(shù)據(jù)庫基礎(chǔ),本章學(xué)習(xí)目標(biāo): 掌握數(shù)據(jù)庫、數(shù)據(jù)模型、數(shù)據(jù)庫管理系統(tǒng)等基本概念; 掌握關(guān)系模型、關(guān)系模式、關(guān)系、元組、屬性、域、主關(guān)鍵字和外部關(guān)鍵字等概念; 會使用投影、選擇、聯(lián)接等關(guān)系運(yùn)算; 了解數(shù)據(jù)庫的實(shí)體完整性、域完整性、參照完整性; 了解VFP系統(tǒng)的特點(diǎn)與工作方式、各種設(shè)計(jì)器和向?qū)А?本章內(nèi)容,信息及數(shù)據(jù)的處理 數(shù)據(jù)管理技術(shù)的發(fā)展 數(shù)據(jù)庫系統(tǒng)的基本概念 數(shù)據(jù)庫系統(tǒng)的特點(diǎn) 數(shù)據(jù)模型 關(guān)系的術(shù)語 關(guān)系的基本性質(zhì) 關(guān)系的運(yùn)算 關(guān)系的完整性約束,VFP數(shù)據(jù)庫管理系統(tǒng)的特點(diǎn) VFP的

2、啟動與退出 VFP的系統(tǒng)界面 VFP常用的工具 VFP的工作方式 VFP的環(huán)境設(shè)置 VFP常用的文件類型 VFP的命令格式,1.1 數(shù)據(jù)庫基礎(chǔ)知識,1.2 VFP基本概述,VF數(shù)據(jù)庫基礎(chǔ),1.1 數(shù)據(jù)庫基礎(chǔ)知識,信息及數(shù)據(jù)的處理 數(shù)據(jù)管理技術(shù)的發(fā)展 數(shù)據(jù)庫系統(tǒng)的基本概念 數(shù)據(jù)庫系統(tǒng)的特點(diǎn) 數(shù)據(jù)模型 關(guān)系的術(shù)語 關(guān)系的基本性質(zhì) 關(guān)系的運(yùn)算 關(guān)系的完整性約束,1.信息及數(shù)據(jù)的處理 (1)數(shù)據(jù)是指能被計(jì)算機(jī)識別和處理的物理符號,是信息具體化的表示形式,其形式多樣化,如:文字、字母、數(shù)字、圖形、圖象、動畫、聲音等。 (2)信息是客觀事物的特征在人腦中的反映,是經(jīng)過加工處理并對人類客觀行為產(chǎn)生影響的數(shù)據(jù)

3、表現(xiàn)形式。,1.1 數(shù)據(jù)庫基礎(chǔ)知識,(3)數(shù)據(jù)處理是對原始數(shù)據(jù)進(jìn)行各種加工處理,使之成為可利用的、有價(jià)值的信息。數(shù)據(jù)管理是數(shù)據(jù)處理的核心,它主要是指對數(shù)據(jù)進(jìn)行分類、排序、編碼、存儲、檢索和維護(hù)等操作。,2. 數(shù)據(jù)管理技術(shù)的發(fā)展,數(shù)據(jù)管理技術(shù)經(jīng)歷了由低級向高級的發(fā)展過程。這一過程一般可以分為三個(gè)階段:人工管理階段、文件系統(tǒng)階段、數(shù)據(jù)庫系統(tǒng)階段。,1)人工管理:數(shù)據(jù)不保存,數(shù)據(jù)不具有獨(dú)立性,數(shù)據(jù)面向程序,一組數(shù)據(jù)對應(yīng)一組程序,無法被其他程序利用,存在大量的冗余數(shù)據(jù)。,2)文件系統(tǒng):數(shù)據(jù)可長期保存,由文件系統(tǒng)管理數(shù)據(jù),但數(shù)據(jù)共享性差,冗余度大;程序與數(shù)據(jù)有了一定的獨(dú)立性,但獨(dú)立性差,容易產(chǎn)生不一致性

4、。,3)數(shù)據(jù)庫系統(tǒng):數(shù)據(jù)采用統(tǒng)一的結(jié)構(gòu)存放,具有集成性、高度共享性、低冗余度、高度獨(dú)立性,并能避免數(shù)據(jù)之間的不相容性和不一致性。,數(shù)據(jù)庫管理示意圖,數(shù)據(jù)管理三個(gè)階段的比較,新興階段:數(shù)據(jù)倉庫,數(shù)據(jù)庫系統(tǒng)和數(shù)據(jù)倉庫系統(tǒng)的區(qū)別,3、數(shù)據(jù)庫系統(tǒng)的基本概念,1)數(shù)據(jù)庫DB(DataBase) 是存儲在計(jì)算機(jī)中結(jié)構(gòu)化的相關(guān)數(shù)據(jù)的集合。它不僅包含描述事物的數(shù)據(jù)本身,而且包含數(shù)據(jù)之間的聯(lián)系。在VFP中,數(shù)據(jù)庫是存放表(Table)、視圖(View)及其聯(lián)系的容器。 2)數(shù)據(jù)管理系統(tǒng)(DBMS) 是建立、維護(hù)、使用和管理數(shù)據(jù)庫的軟件。常用的中小型數(shù)據(jù)庫管理系統(tǒng)有SQL Server,dBase、FoxBase

5、,F(xiàn)oxPro,Visual FoxPro,Access等。DBMS具有數(shù)據(jù)庫描述(DDL)、操縱(DML)和控制(DCL)的功能。,DB=數(shù)據(jù)本身+數(shù)據(jù)間的聯(lián)系,3)數(shù)據(jù)庫系統(tǒng) 是指引入數(shù)據(jù)庫技術(shù)后的計(jì)算機(jī)系統(tǒng)。它由數(shù)據(jù)庫、硬件系統(tǒng)、數(shù)據(jù)庫管理系統(tǒng)及其相關(guān)軟件、數(shù)據(jù)庫管理員(DBA,DataBase Administrator)和其他用戶五部分組成。數(shù)據(jù)庫系統(tǒng)的核心是數(shù)據(jù)庫管理系統(tǒng)。 4)數(shù)據(jù)庫應(yīng)用系統(tǒng) 是為了解決某個(gè)實(shí)際問題,開發(fā)人員利用DBMS編寫的應(yīng)用軟件,例如教學(xué)管理軟件、財(cái)務(wù)管理軟件等。,1)數(shù)據(jù)結(jié)構(gòu)化(即采用特定的數(shù)據(jù)模型)是數(shù)據(jù)庫系統(tǒng)與文件系統(tǒng)的本質(zhì)區(qū)別。 2)數(shù)據(jù)共享性高、冗

6、余度低、易擴(kuò)充。 3)具有較高的數(shù)據(jù)獨(dú)立性。 4)數(shù)據(jù)由DBMS統(tǒng)一管理和控制。,4、數(shù)據(jù)庫系統(tǒng)的特點(diǎn),從客觀事物到信息,再到數(shù)據(jù),是人們對現(xiàn)實(shí)世界的認(rèn)識和描述過程,需要經(jīng)歷現(xiàn)實(shí)世界、信息世界和數(shù)據(jù)世界(也稱為機(jī)器世界、計(jì)算機(jī)世界)這三個(gè)世界的轉(zhuǎn)換。,5. 數(shù)據(jù)模型,概念模型:從客觀事物到信息,把現(xiàn)實(shí)世界中的客觀對象抽象為概念模型(也稱信息模型),它是按用戶的觀點(diǎn)來對數(shù)據(jù)和信息建模。 數(shù)據(jù)模型:從信息到數(shù)據(jù),把信息世界中的概念模型轉(zhuǎn)換為數(shù)據(jù)世界中某一DBMS支持的數(shù)據(jù)模型,它是按計(jì)算機(jī)系統(tǒng)的觀點(diǎn)對數(shù)據(jù)建模。,(1)信息模型,1)實(shí)體:客觀存在并可相互區(qū)別的事物,如:工人、王楠、學(xué)生、班級等 2

7、)實(shí)體集:同類型實(shí)體的集合稱為實(shí)體集。例如一個(gè)班的全體學(xué)生就是一個(gè)實(shí)體集。 3)屬性:描述實(shí)體的特性。 4)實(shí)體型:屬性的集合表示一種實(shí)體的類型,稱為實(shí)體型。 5)聯(lián)系:實(shí)體之間存在的對應(yīng)關(guān)系,反映客觀事物的相互關(guān)聯(lián)。,實(shí)體-聯(lián)系模型,最常用的概念模型是實(shí)體-聯(lián)系模型,常采用E-R圖(Entity-Relation)建模,所以實(shí)體模型有時(shí)被簡稱為E-R模型。E-R模型圖用矩形、橢圓和菱形分別表示實(shí)體、屬性和聯(lián)系。,實(shí)體名,屬性名,屬性名,實(shí)體名,屬性名,屬性名,聯(lián)系名,聯(lián)系的3種類型,一對一聯(lián)系(1:1): 學(xué)生與學(xué)號之間具有一對一聯(lián)系。 一對多聯(lián)系(1:n): 班級與學(xué)生之間具有一對多聯(lián)系。

8、 多對多聯(lián)系(m:n):課程與學(xué)生之間具有多對多聯(lián)系。,班級,班級-班長,班長,1,1,1:1聯(lián)系,課程,選修,學(xué)生,m,n,m:n聯(lián)系,班級,組成,學(xué)生,1,n,1:n聯(lián)系,(2)數(shù)據(jù)模型,數(shù)據(jù)模型是在計(jì)算機(jī)世界中建立的模型,該模型由數(shù)據(jù)結(jié)構(gòu)、數(shù)據(jù)操作和完整性約束三部分組成。典型的數(shù)據(jù)模型主要包括層次模型、網(wǎng)狀模型、關(guān)系模型等。,1)層次模型:以屬性結(jié)構(gòu)為基礎(chǔ)的數(shù)據(jù)結(jié)構(gòu),具有明顯 的上下層的關(guān)系,模型簡單、直觀、處理方便,但不能處 理多對多聯(lián)系的復(fù)雜模型。,層次模型是用樹型結(jié)構(gòu)來表示數(shù)據(jù)之間的聯(lián)系。,2)網(wǎng)狀模型:以網(wǎng)絡(luò)結(jié)構(gòu)為基礎(chǔ)的數(shù)據(jù)結(jié)構(gòu),可以表示復(fù)雜的數(shù)據(jù)結(jié)構(gòu),但實(shí)現(xiàn)的算法比較難規(guī)范。,

9、網(wǎng)絡(luò)模型是用網(wǎng)絡(luò)結(jié)構(gòu)來表示數(shù)據(jù)之間的聯(lián)系,可以表示多對多的聯(lián)系。,3)關(guān)系模型:以二維表格為數(shù)據(jù)的表示方式,表格中同一行的為一條記錄,同一列的為一個(gè)數(shù)據(jù)項(xiàng)或稱字段,一個(gè)表格對應(yīng)一個(gè)關(guān)系,多個(gè)關(guān)系組成一個(gè)關(guān)系模型。,特點(diǎn): (1)表格中的每一列都是不可再分的基本屬性; (2)各列被指定一個(gè)相異的名字; (3)各行不允許重復(fù); (4)行、列的次序無關(guān)。,關(guān)系模型 = 數(shù)據(jù)結(jié)構(gòu) + 關(guān)系運(yùn)算 + 完整性約束。,(1)關(guān)系:一張二維表,在VFP中一個(gè)關(guān)系就稱為一個(gè)數(shù)據(jù)表。 (2)元組:指表中一行上的所有數(shù)據(jù),在VFP中一行稱為一個(gè)記錄。 (3)屬性:指表中的一列,在VFP中一列稱為一個(gè)字段。 (4)域

10、:指表中屬性的取值范圍,在VFP中字段的取值稱為一個(gè)字段的寬度。 (5)關(guān)系模式:對關(guān)系的描述,一個(gè)關(guān)系模式對應(yīng)一個(gè)關(guān)系的結(jié)構(gòu),其格式為:關(guān)系名(屬性1,屬性2,屬性3,屬性n),6.關(guān)系的術(shù)語,一個(gè)關(guān)系模型由若干個(gè)關(guān)系模式組成。,(6)關(guān)鍵字或碼(Key):表中用來唯一確定(標(biāo)識)一個(gè)元組的某個(gè)屬性或多個(gè)屬性的組合。 如學(xué)號可作為學(xué)生表的碼、學(xué)號和課程號的組合可作為選課表的碼 。 一個(gè)關(guān)系中的關(guān)鍵字必須唯一,關(guān)鍵字的值不能為空,即關(guān)鍵字的值為空的元組或重復(fù)的元組在關(guān)系中是不允許存在的。,關(guān)鍵字的種類,候選關(guān)鍵字(候選碼) 如果一個(gè)關(guān)系中存在多個(gè)屬性或?qū)傩越M合都能用來唯一標(biāo)識該關(guān)系的元組,這些

11、屬性或?qū)傩越M合都稱為該關(guān)系的候選關(guān)鍵字或候選碼。 主關(guān)鍵字(主碼) 在一個(gè)關(guān)系的若干個(gè)候選關(guān)鍵字中指定作為關(guān)鍵字的屬性或?qū)傩越M合稱為該關(guān)系的主關(guān)鍵字或主碼。 非主屬性(非碼屬性) 關(guān)系中不組成碼的屬性均為非主屬性或非碼屬性。 外部關(guān)鍵字(外鍵) 當(dāng)關(guān)系中某個(gè)屬性或?qū)傩越M合雖不是該關(guān)系的關(guān)鍵字或只是關(guān)鍵字的一部分,但卻是另外一個(gè)關(guān)系的關(guān)鍵字時(shí),稱該屬性或?qū)傩越M合為這個(gè)關(guān)系的外部關(guān)鍵字或外鍵。,主表與從表是指以外鍵相關(guān)聯(lián)的兩個(gè)表;以外鍵作為主鍵的表稱為主表,外鍵所在的表稱為從表。,學(xué)生表,課程表,課程號是學(xué)生關(guān)系的外關(guān)鍵字,不是關(guān)鍵字,但是課程關(guān)系的關(guān)鍵字,術(shù)語的比較,1)同一個(gè)關(guān)系中不能出現(xiàn)相同

12、的屬性名 2)關(guān)系中不允許有完全相同的元組 3)關(guān)系中各行的次序、各列的次序不要求。 4)關(guān)系必須規(guī)范化,每個(gè)屬性必須是不可分割的數(shù)據(jù) 單元,即表中不能再包含表。,7.關(guān)系的基本性質(zhì),在關(guān)系模型中,實(shí)體以及實(shí)體間的聯(lián)系采用了單一數(shù)據(jù)結(jié)構(gòu)關(guān)系來表示。對數(shù)據(jù)的操作就是對關(guān)系的運(yùn)算,即對記錄的集合進(jìn)行操作。 關(guān)系的運(yùn)算可分為兩類:傳統(tǒng)的集合運(yùn)算(交、差和并)和專門的關(guān)系運(yùn)算(選擇、投影和連接)。,8.關(guān)系的運(yùn)算,1)并:兩個(gè)關(guān)系的所有元組組成的集合 2)交:兩個(gè)關(guān)系共有的元組的集合 3)差:設(shè)兩個(gè)關(guān)系R和S,R差S的結(jié)果是由屬于R但不 屬于S的元組組成的集合,要求進(jìn)行運(yùn)算的兩個(gè)關(guān)系必須具有相同的關(guān)系

13、模式,即相同的結(jié)構(gòu)。,1.傳統(tǒng)的集合運(yùn)算,1)選擇運(yùn)算:選擇運(yùn)算是根據(jù)給定的條件,從一個(gè)關(guān)系中選出若干個(gè)元組組成一個(gè)新的關(guān)系,其關(guān)系模式不變。 選擇運(yùn)算是關(guān)系的橫向操作,不改變原關(guān)系模式,即行數(shù)改變(二維表的高度減小),列數(shù)不變(二維表的寬度不變)。 在VFP中的短語FOR條件和WHILE條件均相當(dāng)于選擇運(yùn)算。,2.專門的關(guān)系運(yùn)算,姓名、出生日期和專業(yè)(學(xué)生表),2)投影運(yùn)算是從一個(gè)關(guān)系中指定若干個(gè)屬性組成新的關(guān)系,并可以重新安排列的順序。 投影運(yùn)算就是關(guān)系的縱向操作,改變了原關(guān)系模式,即列數(shù)改變。 在VFP中短語FIELDS字段1,字段2,相當(dāng)于投影運(yùn)算。,2.專門的關(guān)系運(yùn)算,姓名、出生日期

14、和專業(yè) (學(xué)生表),3)聯(lián)接運(yùn)算是將兩個(gè)關(guān)系通過公共的屬性拼接成一個(gè)更寬的關(guān)系,生成的新關(guān)系中包含滿足聯(lián)接條件的元組。運(yùn)算過程是通過聯(lián)接條件實(shí)現(xiàn)關(guān)系的橫向組合。在VFP中,有單獨(dú)一條短語JOIN就可以實(shí)現(xiàn)兩個(gè)關(guān)系的聯(lián)接運(yùn)算。等值聯(lián)接和自然聯(lián)接是最常用聯(lián)接運(yùn)算。 等值聯(lián)接 在聯(lián)接條件中使用等號(=)運(yùn)算符比較被聯(lián)接列的列值,其聯(lián)接結(jié)果中列出被聯(lián)接表中的所有列,包括兩表的重復(fù)屬性。只要求屬性值相等,不要求屬性名相同。 自然聯(lián)接 去掉重復(fù)屬性的等值聯(lián)接。既要求屬性值相等,也要求屬性名相同。,關(guān)系運(yùn)算小結(jié),如果需要兩個(gè)以上的關(guān)系進(jìn)行聯(lián)接,應(yīng)當(dāng)兩兩進(jìn)行。利用關(guān)系(表)的這三種專門運(yùn)算可以方便地構(gòu)造各種新

15、的關(guān)系(表)。,9.關(guān)系的完整性約束,數(shù)據(jù)庫完整性是指數(shù)據(jù)庫中數(shù)據(jù)的正確性和相容性。,關(guān)系的完整性主要有域完整性、實(shí)體完整性和參照完整性三種。,數(shù)據(jù)庫完整性由各種各樣的完整性約束來保證。數(shù)據(jù)庫完整性約束可以通過DBMS或應(yīng)用程序來實(shí)現(xiàn),基于DBMS的完整性約束作為模式的一部分存入數(shù)據(jù)庫中。,數(shù)據(jù)結(jié)構(gòu)簡單 , 格式描述統(tǒng)一 , 概念清除。 能反映實(shí)體之間的一對一、一對多、多對多 三種聯(lián)系。 有嚴(yán)格的數(shù)學(xué)理論基礎(chǔ)。 易學(xué)習(xí), 易理解, 符合使用習(xí)慣。,補(bǔ)充內(nèi)容1: 關(guān)系模型的優(yōu)點(diǎn),包括結(jié)構(gòu)設(shè)計(jì)和行為設(shè)計(jì)。 結(jié)構(gòu)設(shè)計(jì):主要確定數(shù)據(jù)庫和數(shù)據(jù)表 行為設(shè)計(jì):主要確定某種程序設(shè)計(jì)方法和使用某種語言來編寫應(yīng)用

16、程序。,補(bǔ)充內(nèi)容2: 數(shù)據(jù)庫設(shè)計(jì)基礎(chǔ),1. 數(shù)據(jù)庫設(shè)計(jì)內(nèi)容,概念單一化:數(shù)據(jù)表結(jié)構(gòu)要簡單、明晰, 應(yīng)避免大而雜。 避免重復(fù)字段:除外部關(guān)鍵字外, 應(yīng)盡量減少不同表中的重復(fù)字段。 表中保存原始數(shù)據(jù):應(yīng)避免出現(xiàn)通過計(jì)算可得到的字段。 合理設(shè)計(jì)關(guān)鍵字:通過主關(guān)鍵字和外部關(guān)鍵字建立不同表之間的聯(lián)接.,2、數(shù)據(jù)庫設(shè)計(jì)原則,需求分析:信息需求、處理需求、安全性和完整性需求 確定需要的表 確定所需的字段 確定聯(lián)系:一對一的聯(lián)系、一對多的聯(lián)系、多對多的聯(lián)系 設(shè)計(jì)求精,3. 數(shù)據(jù)庫設(shè)計(jì)步驟,需求分析:信息需求; 處理需求; 安全與完整性需求. 結(jié)構(gòu)設(shè)計(jì):數(shù)據(jù)庫 表 字段 關(guān)鍵字 表間聯(lián)系; 系統(tǒng)設(shè)計(jì)實(shí)施:建立庫

17、、表結(jié)構(gòu); 設(shè)計(jì)、編寫應(yīng)用系統(tǒng)功能模塊; 調(diào)試應(yīng)用程序.,3. 數(shù)據(jù)庫設(shè)計(jì)過程,例1.1 設(shè)人事管理關(guān)系模型中有下列關(guān)系模式: 1. 部門( 部門編號,部門名稱, ) 2. 職工情況( 職工編號, 姓名,性別,出生日期,學(xué)歷,職稱,) 3. 工資( 職工編號,基礎(chǔ)工資,職務(wù)津貼,獎(jiǎng)金,水電費(fèi), ),補(bǔ)充內(nèi)容3:關(guān)系模型舉例,由部門、職工情況、工資三個(gè)關(guān)系模式構(gòu)成的關(guān)系模型如下:,例1.2 設(shè)圖書借閱關(guān)系模型中有下列關(guān)系模式: 1. 圖書(書編號,書名,作者,出版社,單價(jià),分類號,) 2. 借閱(書編號,借書證號,借閱日期, ) 3. 學(xué)生( 學(xué)號,姓名,班級, ),由圖書、借閱登記、學(xué)生三個(gè)關(guān)

18、系模式構(gòu)成的關(guān)系模型如下:,學(xué)生表,1.2 VFP基本概述,VFP數(shù)據(jù)庫管理系統(tǒng)的特點(diǎn) VFP的啟動與退出 VFP的系統(tǒng)界面 VFP常用的工具 VFP的工作方式 VFP的環(huán)境設(shè)置 VFP常用的文件類型 VFP的命令格式,1. VFP數(shù)據(jù)庫管理系統(tǒng)的特點(diǎn),VFP是一個(gè)運(yùn)行于Windows98以上32位操作系統(tǒng)平臺上、基于Windows操作系統(tǒng)的小型關(guān)系數(shù)據(jù)庫管理系統(tǒng)。 VFP既可以進(jìn)行數(shù)據(jù)的管理,又可以進(jìn)行數(shù)據(jù)庫應(yīng)用軟件的開發(fā)。 不僅支持傳統(tǒng)的面向過程的編程技術(shù),而且支持可視化的、面向?qū)ο蟮木幊碳夹g(shù)。,2. VFP的啟動與退出,(1) VFP的啟動(演示) (2) VFP的退出(演示),特有關(guān)閉

19、法: “命令”窗口輸入QUIT命令并回車,3. VFP的系統(tǒng)界面,正常啟動VFP系統(tǒng)后進(jìn)入VFP主窗口,它由標(biāo)題欄、菜單欄、常用工具欄、狀態(tài)欄、命令窗口和主窗口工作區(qū)組成。,顯示工具欄:執(zhí)行“顯示”“工具欄”菜單命令,打開“工具欄”對話框,選擇所需打開的工具欄。 重設(shè)工具欄:在“工具欄”對話框中,單擊“重置”按鈕,然后單擊“定制”按鈕,進(jìn)入“定制工具欄”對話框,可以配置各工具欄中的工具按鈕。,(1)工具欄,(2)命令窗口,命令窗口是輸入、編輯并執(zhí)行VFP系統(tǒng)命令的窗口。 顯示和隱藏命令窗口 執(zhí)行“窗口”“命令窗口”菜單命令可以打開命令窗口。 在命令窗口中可以進(jìn)行命令行的編輯、執(zhí)行等操作。,4.

20、 VFP常用的工具,項(xiàng)目是指文件、數(shù)據(jù)、文檔和VFP對象的集合,包括表、數(shù)據(jù)庫、表單、報(bào)表、查詢、類、程序等。 項(xiàng)目管理器則是將一個(gè)應(yīng)用程序的所有文件都集合成一個(gè)有機(jī)的整體,形成一個(gè)擴(kuò)展名為.pjx的項(xiàng)目文件。,(1) 項(xiàng)目管理器,通過右側(cè)的按鈕可以實(shí)現(xiàn)各種項(xiàng)目文件的新建、修改、添加或移去等一系列操作。,向?qū)О岩恍?fù)雜的操作分解為若干簡單的步驟來完成,每一步使用一個(gè)對話框。用戶只要逐步回答向?qū)岢龅膯栴},向?qū)П憧梢宰詣犹婺阃瓿上鄳?yīng)的任務(wù)。 通過“工具”菜單“向?qū)А弊硬藛渭纯蓡酉驅(qū)А?常用的向?qū)гO(shè)計(jì)器有表向?qū)?、?bào)表向?qū)?、表單向?qū)А⒉樵兿驅(qū)У取?(2) 向?qū)?設(shè)計(jì)器是VFP提供給用戶的交互式的可

21、視化開發(fā)工具設(shè)計(jì)器,集成了用于設(shè)計(jì)對象的各種操作,并賦予可視化提示,為用戶提供了一個(gè)友好的圖形界面。 用戶可以通過設(shè)計(jì)器創(chuàng)建并定制數(shù)據(jù)表結(jié)構(gòu)、數(shù)據(jù)庫結(jié)構(gòu)、報(bào)表格式和應(yīng)用程序組件等。 常用的設(shè)計(jì)器有表設(shè)計(jì)器、查詢設(shè)計(jì)、視圖設(shè)計(jì)器、列表框生成器、報(bào)表設(shè)計(jì)器、數(shù)據(jù)庫設(shè)計(jì)器、菜單設(shè)計(jì)器等。,(3) 設(shè)計(jì)器,生成器是帶有選項(xiàng)卡的對話框, 為對象方便、快速地設(shè)置一些輔助選項(xiàng),用于簡化對表單、復(fù)雜控件和參照完成性代碼的創(chuàng)建和修改過程,如幫助用戶對特定的對象設(shè)置屬性或者組合子句創(chuàng)建特定的表達(dá)式等。 與向?qū)Р煌?,生成器是可重入的,可以不止一次地打開某一對象的生成器。 常用的生成器有組合框生成器、命令組生成器、表

22、達(dá)式生成器、列表框生成器等。,(4) 生成器,5. VFP的工作方式,VFP有兩類工作方式:交互方式(單命令)和程序方式(批命令),其中前者又分為菜單方式和命令方式,總共3種工作方式。,通過右側(cè)的按鈕可以實(shí)現(xiàn)各種項(xiàng)目文件的新建、修改、添加或移去等一系列操作。,選擇菜單中的命令或工具欄按鈕,即可執(zhí)行命令完成工作。VFP菜單是一種動態(tài)菜單,它會隨著打開文件的不同而改變。 VFP共有11個(gè)菜單,通常只顯示其中的一部分菜單。,(1) 菜單方式,(2)命令方式,在命令窗口中直接輸入命令,回車即可執(zhí)行。,命令窗口的操作,顯示|隱藏, 命令窗口右上角關(guān)閉按鈕關(guān)閉,“窗口”中的“命令窗口”打開。 用常用工具欄

23、上的命令窗口按鈕顯示或隱藏。 Ctrl+F4關(guān)閉命令窗口,Ctrl+F2顯示。,A在命令窗口中輸入命令,按回車鍵后即執(zhí)行該命令。(執(zhí)行) B若命令行太長,可用半角分號“; ”續(xù)行。VFP命令是以回車符來結(jié)束的。(續(xù)行) C執(zhí)行過的命令將保留在命令窗口中,如果需要再次執(zhí)行前面輸入過的命令,只要將光標(biāo)移到該命令行的任意位置,按回車鍵即可。(重復(fù)) D可以對命令窗口中的命令進(jìn)行編輯(修改、復(fù)制、粘貼等)操作。(編輯) E在命令窗口中選定若干條命令,按回車鍵,則連續(xù)執(zhí)行所選命令。(批量執(zhí)行) F若需清除主窗口工作區(qū)的內(nèi)容,可用clear命令。(清屏) G關(guān)于命令窗口的其他操作可以右擊命令窗口,從快捷菜

24、單中選擇“屬性”命令,再“編輯屬性”對話框中進(jìn)行設(shè)計(jì)即可。(設(shè)置顯示屬性),注意事項(xiàng),6. VFP的環(huán)境設(shè)置,VFP安裝完畢之后,自動使用系統(tǒng)默認(rèn)的環(huán)境參數(shù)值。用戶可以根據(jù)實(shí)際需要和個(gè)人習(xí)慣設(shè)置個(gè)性化的應(yīng)用開發(fā)環(huán)境,這些環(huán)境參數(shù)可以通過執(zhí)行“工具”菜單的“選項(xiàng)”命令,再在“選項(xiàng)”對話框的“XXX”選項(xiàng)卡進(jìn)行設(shè)置即可,還可以通過VFP的SET命令進(jìn)行設(shè)置。,永久性設(shè)置, 臨時(shí)設(shè)置: 更改僅保存于內(nèi)存中, 退出 VFP 會丟失所有臨時(shí)設(shè)置; 再啟動 VFP 即恢復(fù)系統(tǒng)默認(rèn)值. 永久設(shè)置: 更改保存于注冊表而成為系統(tǒng)默認(rèn)值. 操作: 環(huán)境設(shè)置修改后, 單擊“設(shè)置為默認(rèn)值”“確定”.,環(huán)境設(shè)置的保存,

25、常用的環(huán)境設(shè)置,設(shè)置默認(rèn)目錄,設(shè)置日期的顯示格式,SET TALK TO 目錄,SET DATE TO 格式,顯示4位年(xxxx),SET CENTURY ON,設(shè)置幫助文件,SET HELP TO 幫助文件,設(shè)置排序序列,SET STRICTDATE TO,顯示狀態(tài)欄,SET STATUS ON,7. VFP常用的文件類型,8. VFP的命令格式,VFP的命令都有固定格式,必須按相應(yīng)的格式和語法規(guī)則書和使用,否則無法識別及執(zhí)行。一般情況下,VFP命令總是由命令動詞(命令的功能)開頭,后面接一個(gè)賓語(命令的操作對象)和若干短語(命令的操作范圍、操作結(jié)果)。 命令動詞表示做什么,必須寫在命令的

26、開頭;短語又稱子句,表示操作的對象以及怎么做,其位置任意。命令動詞與子句之間、各子句之間都以空格分隔。當(dāng)命令一行書寫不完時(shí),可在行尾用分號“;”進(jìn)行續(xù)行,便可在下一行繼續(xù)書寫。VFP的命令詞不區(qū)分字符的大小寫。, ,(1)VFP命令的基本格式,:必選頂,表示命令中必須書寫該項(xiàng),但內(nèi)容可以根據(jù)需要確定。 :可選項(xiàng),可根據(jù)實(shí)際需要選用或省略該項(xiàng)內(nèi)容。 | :任選項(xiàng),根據(jù)實(shí)際需要任選且必選其中一項(xiàng)內(nèi)容。,【說明】,(2)VFP命令的常用子句,相當(dāng)于關(guān)系運(yùn)算中選擇運(yùn)算。按指定運(yùn)算邏輯條件選擇表中符合條件的記錄,共有4種范圍子句: RECORD :范圍是記錄號為N的一條記錄。 NEXT :范圍是從當(dāng)前記

27、錄開始的連續(xù)N條記錄(包括當(dāng)前記錄)。 REST:范圍是從當(dāng)前記錄開始到表尾的所有記錄(包括當(dāng)前記錄)。 ALL:范圍是表中的全體記錄。, 范圍子句,對應(yīng)于關(guān)系運(yùn)算中選擇運(yùn)算。以指定邏輯條件為依據(jù),從表中選擇符合條件的記錄。條件子句有兩種: FOR :選擇表中符合條件的所有記錄。 WHILE :選擇符合條件的記錄,直到第一個(gè)不符合條件的記錄為止,其中,由一個(gè)邏輯表達(dá)式或關(guān)系表達(dá)式構(gòu)成,其值為邏輯型數(shù)據(jù)。, 條件子句,對應(yīng)于關(guān)系運(yùn)算中的投影運(yùn)算。從表中選取命令操作的字段范圍。其中字段名表由若干個(gè)以逗號分隔的字段名構(gòu)成。關(guān)鍵字FIELDS有時(shí)可省略。 【格式】FIELDS , FIELDS子句,第

28、2章 VFP語言基礎(chǔ),本章學(xué)習(xí)目標(biāo): 掌握VFP的基本數(shù)據(jù)元素:常量、變量、函數(shù)、表達(dá)式等; 掌握并熟練使用VFP的常用函數(shù)。,數(shù)據(jù)的內(nèi)涵,數(shù)據(jù)是數(shù)據(jù)庫管理系統(tǒng)操作和管理的對象,記錄了客觀事物的屬性。其內(nèi)涵包括兩方面:數(shù)據(jù)內(nèi)容和數(shù)據(jù)形式。 數(shù)據(jù)內(nèi)容用于描述客觀事物的特征,即數(shù)據(jù)的“值”; 數(shù)據(jù)形式是指數(shù)據(jù)內(nèi)容存儲于媒體中的形式和使用方式,即數(shù)據(jù)的“類型”。 在VFP中,數(shù)據(jù)可以存放在常量、變量、數(shù)組、字段、記錄和對象等數(shù)據(jù)容器中。,常用的數(shù)據(jù)類型,數(shù)據(jù)表的字段可使用全部的數(shù)據(jù)類型,而常量和內(nèi)存變量只能使用字符型C、數(shù)值型N、貨幣型Y、日期型D、日期時(shí)間型T和邏輯型L這6種類型的數(shù)據(jù)。,【說明】

29、,1.字符型(Character,簡寫為C) 字符型數(shù)據(jù)是不具計(jì)算能力的文字?jǐn)?shù)據(jù)類型。字符型數(shù)據(jù)包括中文字符、英文字符、數(shù)字字符和其他ASCII字符,其長度(字符個(gè)數(shù))范圍是0254個(gè)字符。其界定符有單引號( )、雙引號(“ ”)、方括號( )三種。 2.數(shù)值型 數(shù)值型數(shù)據(jù)是表示數(shù)量、可以進(jìn)行數(shù)值運(yùn)算的數(shù)據(jù)類型。數(shù)值型數(shù)據(jù)由數(shù)字、小數(shù)點(diǎn)、正負(fù)號和表示乘冪的字母E組成,在內(nèi)存中占用8個(gè)字節(jié),數(shù)據(jù)長度(數(shù)據(jù)位數(shù))為120位,數(shù)值精度可達(dá)16位。 在VFP系統(tǒng)中,按存儲、表示形式與取值范圍不同,數(shù)值型數(shù)據(jù)又分為數(shù)值型(Numeric)、浮點(diǎn)型(Float)、雙精度型(Double)、整型(Integ

30、er)四種不同類型。,2.1 數(shù)據(jù)類型,勘誤(P20):相互兼容的數(shù)據(jù)類型之間才能進(jìn)行運(yùn)算。,(1)數(shù)值型(Numeric,簡寫為N) 數(shù)值型數(shù)據(jù)由數(shù)字小數(shù)點(diǎn)正負(fù)號和字母E組成,用字母N表示數(shù)值型數(shù)據(jù)的取值范圍是:-0.9999999999E-19到0.9999999999E+20,包括正負(fù)號小數(shù)點(diǎn)和字母E在內(nèi),其長度最大20位,通常用于表示實(shí)數(shù) (2)浮點(diǎn)型(Float,簡寫為F) 浮點(diǎn)型數(shù)據(jù)是數(shù)值型數(shù)據(jù)的一種,用字母F表示它與數(shù)值型數(shù)據(jù)完全等價(jià),只是在存儲形式上用浮點(diǎn)格式,主要是為了得到較高的計(jì)算精度 (3)雙精度型(Double,簡寫為B) 雙精度型數(shù)據(jù)是具有更高精度的一種數(shù)據(jù)型數(shù)據(jù)它采

31、用固定長充浮點(diǎn)格式存儲,占用8個(gè)字節(jié),其小數(shù)點(diǎn)的位置是由輸入的數(shù)據(jù)值來決定的。 (4)整型(Integer,簡寫為I) 整型數(shù)據(jù)是不包含小數(shù)部分的數(shù)值型數(shù)據(jù)。整型數(shù)據(jù)只用來表示整數(shù),以二進(jìn)制形式存儲,占用4個(gè)字節(jié),所以整數(shù)字段類型比其他段類型占據(jù)的存儲空間小,而且不需做ASCII 碼的轉(zhuǎn)換。,勘誤(P21):0.9999999999E-19到0.9999999999E+20,3. 日期型(Date,簡寫為D) 日期型數(shù)據(jù)是表示日期的數(shù)據(jù),長度固定為8個(gè)字節(jié),年月日之間的分隔符不占字節(jié)。 其定界符為花括號( 或者 ),輸入格式可采用嚴(yán)格日期格式y(tǒng)yyy-mm-dd或傳統(tǒng)日期格式mm/dd/yyy

32、y?!啊笔菄?yán)格日期格式的標(biāo)志,并按照 YMD 的格式解釋日期型和日期時(shí)間型數(shù)據(jù),其中“yyyy”代表“年”,“mm”代表“月”,“dd”代表“日”,年月日之間的分隔符可以是連字符“-”、斜杠“/”、點(diǎn)號“.”和空格等符號。,勘誤(P20):相互兼容的數(shù)據(jù)類型之間才能進(jìn)行運(yùn)算。,VFP系統(tǒng)默認(rèn)采用嚴(yán)格的日期格式,并以此檢查所有日期型和日期時(shí)間型數(shù)據(jù)的格式是否規(guī)范、合法。為與早期版本兼容,用戶通過命令或菜單設(shè)置改變這一格式。命令設(shè)置的格式:SET STRICTDATE TO 0 | 1 | 2,其中0表示不進(jìn)行嚴(yán)格的日期格式檢查;1表示進(jìn)行嚴(yán)格的日期格式檢查,它是系統(tǒng)默認(rèn)的設(shè)置;2表示進(jìn)行嚴(yán)格的日

33、期格式檢查,并且對CTOD()和CTOT()函數(shù)的格式也有效;省略0 | 1 | 2表示恢復(fù)系統(tǒng)默認(rèn)值,等價(jià)于1的設(shè)置。 日期型數(shù)據(jù)的顯示格式有多種,具體使用哪一種格式主要與日期格式的設(shè)置(SET CENTURY ON|OFF設(shè)置是否顯示世紀(jì)年份、SET DATE TO AMERICAN | ANSI | BRITISH | FRENCH | GERMAN | ITLIAN | JAPAN | USA | MDY | DMY | YMD | SHORT | LONG設(shè)置日期顯示格式)相關(guān),日期的默認(rèn)顯示格式是mm/dd/yyyy。至于年、月、日之間顯示的分隔符可以用SET MARK TO 來設(shè)

34、置。,日期型說明,4.日期時(shí)間型(DateTime,簡寫為T) 日期時(shí)間型數(shù)據(jù)是表示日期和時(shí)間的數(shù)據(jù),長度固定為8個(gè)字節(jié)。其定界符為花括號( 或者 ),年、月、日分隔符與日期型數(shù)據(jù)分隔符相同,時(shí)、分、秒之間用“:”分隔,日期與時(shí)間之間用空格或逗號“,”分隔。如輸入格式可用 yyyy-mm-dd hh:mm:ss am|pm來表示,“hh”代表“小時(shí)”,后面的“mm”代表“分鐘”,“ss”代表秒。 其顯示格式有多種,具體使用哪一種格式主要與日期格式的設(shè)置相關(guān)。,5.邏輯型(Logical,簡寫為L) 邏輯型數(shù)據(jù)是描述客觀事物真假的數(shù)據(jù)類型,表示邏輯判斷的結(jié)果。其定界符為圓點(diǎn)(.),表示邏輯值的字

35、母前后的圓點(diǎn)不能省略。邏輯型數(shù)據(jù)只有真(.T.、.t.、.Y.或.y.)和假(.F.、.f.、.N.或.n.)兩種,長度固定為1個(gè)字節(jié)。 6.貨幣型(Currency,簡寫為Y) 貨幣型數(shù)據(jù)用來存儲貨幣值,長度固定為8個(gè)字節(jié),最多保留4位小數(shù)。,7.備注型(Memo,簡寫為M)和通用型(General,簡寫為G) 備注型用于存儲較多的字符,可看作是字符型數(shù)據(jù)的特殊形式,用字母M表示。通用型用于存儲OLE(對象鏈接嵌入)對象,用字母G表示。 通用型數(shù)據(jù)中的OLE對象可以是照片、電子表格、聲音、圖表及字符型數(shù)據(jù)等。 記錄在備注型或通用型字段中的信息,并不存放在數(shù)據(jù)表文件中,實(shí)際數(shù)據(jù)存放在與表主文件

36、名相同但擴(kuò)展名為.FPT的文件中,所以沒有數(shù)據(jù)長度限制,僅受限于磁盤空間。 備注型和通用型數(shù)據(jù)所占用的長度固定為4個(gè)字節(jié)的空間用于存放.FPT文件的地址,該文件會自動生成并伴隨表文件的打開而自動打開。,1. 常量:在程序運(yùn)行過程中其值固定不變的數(shù)據(jù),VFP中有字符型、數(shù)值型、浮點(diǎn)型、邏輯型、日期型和日期時(shí)間型6種類型的常量。 1)字符型常量:用定界符括起的字符串,定界符有單引號、雙引號和方括號。 如:1,“ASDF”,123GHJK 2)數(shù)值型常量:如123,3456.7832, -1234.698 3)浮點(diǎn)型常量:如145E+12, -3.45E-3,2.2 常量和變量,4)日期型常量:用大

37、括號括起,如1999-04-12 傳統(tǒng)的日期格式:缺省格式“mm/dd/yy”,月、日都為兩位數(shù),年份可以2位或4位。這種格式受命令語句的設(shè)置影響。 Set date to USA/DMY/YMD Set Century on/off: 嚴(yán)格的日期格式:1980-03-14,該格式不受命令的影響,可以在任何情況下使用,除了在表中輸入數(shù)據(jù)以外。,5)邏輯型常量:用圓點(diǎn)定界符括起, 如.T. , .F. , .Y. , .N. , .t. , .y. , .n. , .f. 6)日期時(shí)間型常量:如03-14-99 12:23:11 7)貨幣型常量 貨幣型常量用于表示貨幣值,表示形式與數(shù)值型常量相似

38、,但不能用科學(xué)記數(shù)法,且小數(shù)點(diǎn)后最多取四位。在表示時(shí)可用“$”開頭,如$568.30。,定界符必須是英文半角字符 不同定界符可以互相嵌套的,但不允許交錯(cuò)出現(xiàn),2. 變量:在命令操作和程序運(yùn)行過程中其值可以改變的量。 VFP變量可以分為字段變量、內(nèi)存變量,其中內(nèi)存變量又可分為簡單的內(nèi)存變量、數(shù)組變量、系統(tǒng)變量。 變量的命名規(guī)則: (1) 必須以字母、漢字或下劃線開頭,不能含有空格,如3m、2 a是不合法的。 (2) 由數(shù)字、字母、漢字和下劃線組成,如x、a2、城市、Class_1都是合法的。 (3) 長度為1128個(gè)字符,每個(gè)漢字占2個(gè)字符。 (4) 不能使用VFP的保留字,如DELETE、CR

39、EATE等都是不合法的。,常量的類型:,注意:當(dāng)內(nèi)存變量與字段變量同名時(shí),優(yōu)先訪問字段變量。若要訪問內(nèi)存變量需要在變量名前面加上前綴M-或M. ,以區(qū)別于字段變量。但對內(nèi)存變量賦值時(shí)不能加前綴,系統(tǒng)默認(rèn)為內(nèi)存變量。 例2.1:USE 學(xué)生表 學(xué)分 I, 學(xué)時(shí) I,先行課 C(4) 【例4.3】用SQL CREATE命令建立選課表。 CREATE TABLE 選課表(學(xué)號 C(9), 課程號 C(4), 成績 F(5,2),2. 修改表結(jié)構(gòu) 修改表結(jié)構(gòu)要使用ALTER TABLE命令,該命令有三種格式。 (1)格式1:ALTER TABLE ADD | ALTER COLUMN (,) NULL

40、 | NOTNULL CHECK ERRORDEFAULT PRIMARY KEY | UNIQUEREFERENCES TAG 功能:為指定的表添加字段或修改已有的字段。,注意:使用該格式可以修改字段的類型、寬度、有效性規(guī)則、錯(cuò)誤信息、默認(rèn)值,定義主關(guān)鍵字和聯(lián)系等;但是不能修改字段名,不能刪除字段,也不能刪除已經(jīng)定義的規(guī)則。 【例4.4】為學(xué)生表增加一個(gè)備注類型的家庭住址字段。 ALTER TABLE 學(xué)生表 ADD 家庭住址 M 【例4.5】將學(xué)生表的姓名字段的寬度由原來的8改成6。 ALTER TABLE 學(xué)生表 ALTER 姓名 C(6),(2)格式2: ALTER TABLE ALT

41、ER COLUMN NULL | NOTNULL SET DEFAULT SET CHECK ERROR DROP DEFAULTDROP CHECK 功能:修改指定表中指定字段的DEFAULT和CHECK約束規(guī)則。,【例4.6】修改或定義學(xué)分字段的有效性規(guī)則,要求學(xué)分大于零,否則提示錯(cuò)誤信息。 ALTER TABLE 課程表 ALTER 學(xué)分 SET CHECK 學(xué)分0 ERROR 學(xué)分該大于0! 【例4.7】刪除學(xué)分字段的有效性規(guī)則。 ALTER TABLE 課程表 ALTER 學(xué)分 DROP CHECK,(3)格式3: ALTER TABLE DROP COLUMN SET CHECK

42、ERROR DROP CHECK ADD PRIMARY KEY TAG FOR DROP PRIMARY KEY ADD UNIQUE TAG FOR DROP UNIQUE TAG ,【例4.8】將學(xué)生表的家庭住址改名籍貫。 ALTER TABLE 學(xué)生表 RENAME COLUMN 家庭住址 TO 籍貫 【例4.9】刪除學(xué)生表中的籍貫字段。 ALTER TABLE 學(xué)生表 DROP COLUMN 籍貫 【例4.10】將選課表的學(xué)號和課程號定義為候選索引,索引名是S_C。 ALTER TABLE 選課表 ADD UNIQUE 學(xué)號+課程號 TAG S_C 【例4.11】刪除選課表的候選索引

43、。 ALTER TABLE 選課表 DROP UNIQUE TAG S_C,3. 刪除表 【格式】DROP TABLE 【說明】刪除表時(shí)最好打開相應(yīng)的數(shù)據(jù)庫,在數(shù)據(jù)庫中完成操作。 【例4.12】刪除選課表。 DROP TABLE 選課表,4.2 數(shù)據(jù)操作,數(shù)據(jù)操縱主要包括添加、刪除和修改等數(shù)據(jù)處理。 1、插入記錄 插入(追加)記錄的方法,可以直接用表達(dá)式給新插入記錄的各字段賦值,也可以使用數(shù)組或內(nèi)存變量給新記錄的字段賦值。 【格式1】INSERT INTO VALUES () 【例4.13】向?qū)W生表中插入元組(200602218, 李明,男,1988-07-15,機(jī)電一體化)。 INSERT

44、INTO 學(xué)生表 VALUES(200602218, 李明,男,1988-07-15,機(jī)電一體化),【格式2】INSERT INTO FROM ARRAY | FROM MEMVAR 將數(shù)組或內(nèi)存變量的值賦給表文件中的各字段。 【例如】用數(shù)組方式追加記錄: DIMENSION arr(5) arr(1)=200605011 arr(2)= 夏雨薇 arr(3)= 女 arr(4)=1989/09/02 arr(5)= 06國際貿(mào)易 INSERT INTO 學(xué)生表 FROM ARRAY arr 注意:數(shù)組元素序號與字段序號對應(yīng),若某個(gè)數(shù)組元素沒有賦明確的值,則相應(yīng)的字段為默認(rèn)值或空值。,用內(nèi)存變

45、量方式追加記錄: 學(xué)號=200626068 姓名=柳依依 性別=女 專業(yè)=06社會工作 出生日期=1989/02/21 INSERT INTO 學(xué)生表 FROM MEMVAR 注意:內(nèi)存變量的名稱必須與字段名相同。如果同名的內(nèi)存變量不存在,則相應(yīng)的字段為默認(rèn)值或空值。,2、更新記錄 【格式】UPDATE SET =, = WHERE 【功能】更新指定表文件中滿足WHERE條件的記錄數(shù)據(jù)。其中SET子句用于設(shè)置指定字段和修改的值,WHERE子句用于指定更新的記錄,如果省略WHERE,則更新表中所有記錄。,【例4.14】給所有學(xué)生出生年份加1。 UPDATE 學(xué)生表SET 出生日期=DATE(YE

46、AR(出生日期)+1),; MONTH(出生日期),DAY(出生日期) 【例如】將選課表中所有課程號為0002的成績加上5分,然后再將選課表中所有記錄的成績提升10%。 UPDATE 選課表 SET 成績 = 成績 + 5 WHERE 課程號=02 UPDATE 選課表 SET 成績 = 成績 * (1+ 0.1),3、刪除記錄 【格式】DELETE FROM WHERE 【說明】WHERE指定被刪除的記錄應(yīng)滿足的條件,沒有WHERE子句則刪除表中的全部記錄。此命令執(zhí)行邏輯刪除,即在刪除的記錄前加上刪除標(biāo)記“*”,若想物理刪除記錄,則需要接著使用PACK命令。 【例4.15】刪除李明的學(xué)生信息

47、。 DELETE FROM 學(xué)生表 WHERE 姓名=李明 【例如】刪除學(xué)生表中所有88年出生的記錄。 DELETE FROM 學(xué)生表; WHERE YEAR(出生日期) =1988,4.3 數(shù)據(jù)查詢功能,SQL查詢可以完成單表或多表中數(shù)據(jù)的查詢處理,采用 Select語句結(jié)構(gòu)完成查詢。該語句即可以在命令窗口單獨(dú)執(zhí)行,也可以嵌入在程序中完成查詢處理。 【格式】 SELECT ALLDISTICT 別名. 輸出項(xiàng) AS 列名, 別名. 輸出項(xiàng) AS 列名 FROM , , WHERE GROUP BY HAVING ORDER BY ASCDESC,【功能】根據(jù)where子句中的條件表達(dá)式,從指

48、定的表或視圖中找出滿足條件的元組,按照select子句中指定的列和順序顯示查詢到的元組結(jié)果。 【說明】Select子句:說明要輸出的結(jié)果元組中需要的字段 From子句:說明查詢的數(shù)據(jù)來源,包括表和視圖 Where子句:說明查詢的條件,Group by子句:用于對查詢結(jié)果進(jìn)行分組,可以利用分組進(jìn)行分組匯總 Having子句:與group by結(jié)合使用,用于限定分組必須要滿足的條件。 Order by子句:對查詢的結(jié)果進(jìn)行排序 SQL的查詢主要有簡單查詢、聯(lián)接查詢、嵌套查詢、聚集(計(jì)算)查詢等,1.簡單查詢(主要通過例子說明查詢的使用) 【例4.16】查詢課程表的所有信息(*的使用) SELECT

49、 * FROM 課程表 WHERE (學(xué)生表.學(xué)號=選課表.學(xué)號) ; AND (選課表.課程號=課程表.課程號) ; AND (選課表.成績90) 【注意】 (1)當(dāng)FROM后的多個(gè)關(guān)系中有同名字段時(shí),須用前綴指明字段所屬的表; (2)多表聯(lián)接查詢時(shí)要指明查詢的聯(lián)接條件。,In謂詞的使用(表示包含的關(guān)系) 從選課表sc中查詢選修了0001或0002課程的所有學(xué)生的成績信息。 Select * From 選課表 Where 課稱號 in (0001,0002) 【說明】In謂詞的使用相當(dāng)于or的用法 相當(dāng)于Where 課稱號=01 or 課稱號=02 相反的操作:Where 課稱號 not i

50、n (0001,0002),(1) BETWEENAND 表示在和之間 【例4.21】查詢出成績在8085范圍內(nèi)的學(xué)生姓名和成績。 SELECT 姓名,成績 FROM 學(xué)生表,選課表 ; WHERE (學(xué)生表.學(xué)號=選課表.學(xué)號) ; AND (選課表.成績 BETWEEN 80 AND 85) 【說明】此條件等價(jià)于(成績=80)and(成績=85),但更簡潔。 “不在之間”可用 NOT BETWEENAND。,4. 特殊操作符,(2) LIKE 【例4.22】查詢出管理專業(yè)的學(xué)生信息。 SELECT * FROM 學(xué)生表 ; WHERE 專業(yè) LIKE %管理 【說明】通配符% 表示0個(gè)或多

51、個(gè)字符,_ 表示1個(gè)字符。 (3)不等于“!=”可用否定運(yùn)算符NOT表示 【例4.23】查詢專業(yè)不是機(jī)械設(shè)計(jì)自動化和機(jī)電一體化的學(xué)生信息。 SELECT * FROM 學(xué)生表WHERE NOT (專業(yè)=機(jī)械設(shè)計(jì)自動化 OR 專業(yè)=機(jī)電一體化),SELECT * FROM 學(xué)生表WHERE 專業(yè)!=機(jī)械設(shè)計(jì)自動化 AND 專業(yè)!=機(jī)電一體化,如果沒有指定查詢結(jié)果的顯示順序,DBMS將按其最方便的順序(通常是元組在表中的先后順序)輸出查詢結(jié)果。 用戶也可以用ORDER BY子句指定按照一個(gè)或多個(gè)屬性列的升序(ASC)或降序(DESC)重新排列查詢結(jié)果。如未指明排序方式,系統(tǒng)默認(rèn)按升序排列。 【例4

52、.24】查詢?nèi)w學(xué)生情況,查詢結(jié)果按所在系升序排列,對同一系中的學(xué)生按年齡降序排列。 SELECT * FROM 學(xué)生表 ORDER BY 專業(yè), 出生日期 DESC 【例4.25】查詢選修了003號課程的學(xué)生的學(xué)號、課程號和成績,查詢結(jié)果按分?jǐn)?shù)的降序排列。 SELECT * FROM 選課表 WHERE 課程號=0003 ORDER BY 成績 DESC,5. 記錄排序,SELECT子句不僅可以是表中的屬性列,也可以是表達(dá)式,即可以將查詢出來的屬性列經(jīng)過一定的計(jì)算后列出結(jié)果。SQL語句可以直接對查詢結(jié)果進(jìn)行計(jì)算,有如下計(jì)算函數(shù)。 (1) COUNT:計(jì)數(shù) (2) SUM:求和 (3) AVG

53、:計(jì)算平均值 (4) MAX:求最大值 (5) MIN:求最小值 【例4.26】查詢?nèi)w學(xué)生的姓名、年齡并把列標(biāo)題改為年齡,并按出生日期升序排序。 SELECT 姓名,YEAR(DATE()-YEAR(出生日期) AS 年齡 FROM 學(xué)生表 ORDER BY 出生日期,6.計(jì)算查詢,7. 分組與計(jì)算查詢 【例4.27】查詢各個(gè)課程號與相應(yīng)的選課人數(shù)、平均成績和最高分,結(jié)果如表4.11所示。 SELECT 課程號, COUNT(學(xué)號) 選課人數(shù), AVG(成績) 平均成績, ; MAX(成績) 最高分 FROM 選課表 GROUP BY 課程號 8. 利用空值查詢 判斷是否為空(IS NULL

54、)及是否非空(IS NOT NULL) 【例4.28】找出沒有選課的學(xué)生信息。 SELECT * FROM 選課表WHERE 成績 IS NULL 【注】空值查詢不能用“=NULL”,因?yàn)榭罩挡皇且粋€(gè)確定的值,不能用“=”運(yùn)算符比較。,9. 別名與自聯(lián)接查詢 在聯(lián)接操作中,經(jīng)常需要使用關(guān)系名作前綴,有時(shí)這樣比較麻煩。因此SQL允許在FROM短語中為關(guān)系名定義別名。別名并非必須的,但在關(guān)系的自聯(lián)接操作中別名必不可少。 (1)為了簡化關(guān)系名 【格式】 【例4.29】利用別名查詢成績90分的學(xué)生姓名、課程名及成績 SELECT 姓名,課程名,成績 FROM 學(xué)生表 S,課程表 C,選課表 G ; W

55、HERE (C.學(xué)號=G.學(xué)號); AND (G.課程號=C.課程號); AND (G.成績90),(2)自聯(lián)接查詢 自聯(lián)接:將同一關(guān)系與其自身進(jìn)行聯(lián)接稱自聯(lián)接。 【例4.30】根據(jù)課程表關(guān)系列出課程的先行課清單。 SELECT S.課程名, 的先行課是:,C.課程名 ; FROM 課程表 S,課程表 C ; WHERE S.先行課=C.課程號,10.內(nèi)外層互相關(guān)聯(lián)嵌套查詢 【例4.31】列出選課表里每門課程的最高分并按課程號升序排序。 SELECT C.課程號,C.成績 ; FROM 選課表 C ; WHERE C.成績=( ; SELECT MAX(成績) ; FROM 選課表 N ; W

56、HERE C.課程號 = N.課程號 ; )ORDER BY C.課程號,11. 超聯(lián)接查詢 超聯(lián)接:首先保證一個(gè)表中滿足條件的元組都在結(jié)果表中;然后將滿足聯(lián)接條件的元組與另一個(gè)表的元組進(jìn)行聯(lián)接,不滿足聯(lián)接條件的則將應(yīng)來自另一表的屬置為空值。 【格式】SELECT FROM INNER|LEFT|RIGHT|FULL JOIN ON WHERE 【說明】 INNER JOIN普通聯(lián)接,稱內(nèi)部聯(lián)接。 LEFT JOIN 為左聯(lián)接。 RIGHT JOIN為右聯(lián)接。 FULL JOIN 以稱為全聯(lián)接。,【例4.32】內(nèi)部聯(lián)接:只有滿足聯(lián)接條件的記錄才出現(xiàn)在查詢結(jié)果中。 SELECT 學(xué)生表.學(xué)號,學(xué)

57、生表.姓名,成績 FROM 學(xué)生表; INNER JOIN 選課表 ON 學(xué)生表.學(xué)號 = 選課表.學(xué)號 等價(jià)于: SELECT 學(xué)生表.學(xué)號,學(xué)生表.姓名,成績 FROM 學(xué)生表; JOIN 選課表 ON 學(xué)生表.學(xué)號=選課表.學(xué)號 又等價(jià)于: SELECT 學(xué)生表.學(xué)號,學(xué)生表.姓名,成績 FROM 學(xué)生表,選課表; WHERE 學(xué)生表.學(xué)號=選課表.學(xué)號,【例4.33】左聯(lián)接:除滿足是聯(lián)接條件的記錄出現(xiàn)在查詢結(jié)果中外,第一個(gè)表中不滿足聯(lián)接條件的記錄也出現(xiàn)在查詢結(jié)果中,相對應(yīng)的第二個(gè)表的記錄部分為NULL。 SELECT 學(xué)生表.學(xué)號,學(xué)生表.姓名,成績 FROM 學(xué)生表; LEFT JO

58、IN 選課表 ON 學(xué)生表.學(xué)號=選課表.學(xué)號 【例4.34】右聯(lián)接:除滿足聯(lián)接條件的記錄出現(xiàn)在查詢結(jié)果中外,第二個(gè)表中不滿足聯(lián)接條件的記錄也出現(xiàn)在查詢結(jié)果中,相對應(yīng)的第一個(gè)表的記錄部分為NULL。 SELECT 學(xué)生表.學(xué)號,學(xué)生表.姓名,成績 FROM 學(xué)生表; RIGHT JOIN 選課表 ON 學(xué)生表.學(xué)號=選課表.學(xué)號,【例4.35】全聯(lián)接:除滿足條件的記錄出現(xiàn),兩表中不滿足聯(lián)接條件的記錄也出現(xiàn)在查詢結(jié)果中。即兩個(gè)表中的條件不管是否滿足聯(lián)接條件將都在目標(biāo)表或查詢結(jié)果中出現(xiàn),不滿足聯(lián)接條件的記錄對應(yīng)部分為NULL。 SELECT 學(xué)生表.學(xué)號,學(xué)生表.姓名,成績 FROM 學(xué)生表; F

59、ULL JOIN 選課表 ON 學(xué)生表.學(xué)號=選課表.學(xué)號 12.集合的合并運(yùn)算(UNION) SQL支持集合的并運(yùn)算,要求兩個(gè)查詢結(jié)果具有相同的字段和字段個(gè)數(shù)。 【例4.36】查詢學(xué)生表中專業(yè)是“建筑工程技術(shù)”和“工程管理”的學(xué)生信息。 SELECT * FROM 學(xué)生表 WHERE 專業(yè)=建筑工程技術(shù) UNION ; SELECT * FROM 學(xué)生表 WHERE 專業(yè)=工程管理,Not exist、 all、 any的使用 1)exists謂詞:即檢查子查詢中是否存在滿足條件的元組或不存在滿足條件的元組。 例如:查詢沒有選修任何課程的學(xué)生信息 Select * from 學(xué)生表 where not exists ( ; select * from 選課表 where ; 學(xué)生表.學(xué)號=學(xué)號),補(bǔ)充內(nèi)容,注意:exists不是運(yùn)算符號,所以exists前后都不能有比較項(xiàng)或運(yùn)算符,而且子查詢中select后一般為*。,2)ALL和ANY的使用 當(dāng)子查詢的結(jié)果為多個(gè)值時(shí),而又有比較運(yùn)算符時(shí),使用ALL或ANY謂詞。 All:表示與子查詢的結(jié)果中所有

溫馨提示

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

最新文檔

評論

0/150

提交評論