數(shù)據(jù)庫及其應(yīng)用_第1頁
數(shù)據(jù)庫及其應(yīng)用_第2頁
數(shù)據(jù)庫及其應(yīng)用_第3頁
數(shù)據(jù)庫及其應(yīng)用_第4頁
數(shù)據(jù)庫及其應(yīng)用_第5頁
已閱讀5頁,還剩34頁未讀, 繼續(xù)免費閱讀

下載本文檔

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

文檔簡介

1、數(shù)據(jù)庫及其應(yīng)用 學(xué)習(xí)大綱 第1章 數(shù)據(jù)庫系統(tǒng)的基本概念1.1 信息、數(shù)據(jù)和數(shù)據(jù)處理計算機是處理數(shù)據(jù)的,而數(shù)據(jù)處理的基礎(chǔ)首先是數(shù)據(jù)的組織、存儲,然后是查詢檢索、維護、加工和利用。掌握以下幾個概念和術(shù)語: 信息現(xiàn)實世界在人們頭腦中的反映,是一個抽象概念,用以觀察、認識和改造世界。 數(shù)據(jù)用以載荷信息的符號。該符號是人為規(guī)定的,在不同的領(lǐng)域有不同的符號表示。計算機中以0、1兩個符號的編碼表示各種信息。 信息與數(shù)據(jù)二者既有區(qū)別又有聯(lián)系,數(shù)據(jù)是信息的載體;信息是數(shù)據(jù)符號的內(nèi)涵。同一信息可以有不同的數(shù)據(jù)形式;同一數(shù)據(jù)也可能有不同的解釋。 數(shù)據(jù)處理即信息處理。將輸入計算機中的原始數(shù)據(jù)經(jīng)過加工計算產(chǎn)生新的數(shù)據(jù),

2、這新的數(shù)據(jù)代表了新的信息,用以指導(dǎo)工作和輔助決策。 數(shù)據(jù)管理數(shù)據(jù)處理包括數(shù)據(jù)計算和數(shù)據(jù)管理,前者用于較小范圍的科學(xué)計算領(lǐng)域;后者廣泛用于各個領(lǐng)域,指數(shù)據(jù)的收集、整理、組織、存儲、查詢、維護和傳遞等操作。1.2 數(shù)據(jù)庫管理技術(shù)的發(fā)展 自由管理階段>文件管理階段>數(shù)據(jù)庫階段(無專門數(shù)據(jù)管理 (文件管理 (數(shù)據(jù)庫管理 功能) 系統(tǒng)) 系統(tǒng))1.3 數(shù)據(jù)庫系統(tǒng)的組成與結(jié)構(gòu)掌握以下幾個概念和術(shù)語: 數(shù)據(jù)庫DB將數(shù)據(jù)按一定的數(shù)據(jù)結(jié)構(gòu)組織起來存儲在磁盤等外部介質(zhì)上,既能保證數(shù)據(jù)間的必要聯(lián)系,又能使冗余度達到最小。 數(shù)據(jù)庫管理系統(tǒng)DBMS數(shù)據(jù)庫系統(tǒng)中用于數(shù)據(jù)管理的軟件。包括對數(shù)據(jù)庫的定義、數(shù)據(jù)的查

3、詢、數(shù)據(jù)的修改維護、數(shù)據(jù)庫的運行等各種操作。一、數(shù)據(jù)庫系統(tǒng)的組成 作為一個整體的數(shù)據(jù)庫系統(tǒng),其組成除了計算機的軟、硬件環(huán)境外,主要由數(shù)據(jù)庫、數(shù)據(jù)庫管理系統(tǒng)、應(yīng)用程序(用戶使用數(shù)據(jù)庫時的各種程序)及專職的數(shù)據(jù)庫管理員共同組成。二、數(shù)據(jù)庫系統(tǒng)體系結(jié)構(gòu) 三級組織結(jié)構(gòu): 外模式模式(又稱概念模式)內(nèi)模式其中: 內(nèi)模式:又稱存儲模式,是具體描述數(shù)據(jù)如何實現(xiàn)物理存儲。是系統(tǒng)程序員的視圖。 概念模式:又稱模式,是對數(shù)據(jù)庫整體的邏輯描述,并不涉及物理實現(xiàn)。是數(shù)據(jù)庫管理員面對的視圖。 外模式:面向用戶的模式,即用戶眼中的數(shù)據(jù)庫,故稱“用戶視圖”。三個模式之間的關(guān)系: 三個模式站在不同的角度看待數(shù)據(jù)庫,形成了用戶

4、觀、總體觀和存儲觀;總體觀和存儲觀只有一個,而用戶觀則根據(jù)用戶的不同應(yīng)用可能有多個。 從數(shù)據(jù)存儲來看,其中只有內(nèi)模式才是真正存儲數(shù)據(jù)的,其它2個均為邏輯描述。三個模式之間的映射: 在三個模式之間存在著兩種映射:一是將用戶數(shù)據(jù)庫與概念數(shù)據(jù)庫聯(lián)系起來的“外模式/模式”間的映射;另一是將概念數(shù)據(jù)庫與物理數(shù)據(jù)庫聯(lián)系起來的“模式/內(nèi)模式”間的映射。三、數(shù)據(jù)庫管理系統(tǒng)DBMS 它是數(shù)據(jù)庫系統(tǒng)的重要組成部分 DBMS的功能 數(shù)據(jù)庫定義功能 由DDL數(shù)據(jù)描述語言完成 模式間映射功能 數(shù)據(jù)庫操縱功能 由DML數(shù)據(jù)操縱語言實現(xiàn) 提供程序設(shè)計語言功能 2種語言:宿主型和自主型 數(shù)據(jù)庫運行控制功能 數(shù)據(jù)庫維護功能 第

5、二章 數(shù)據(jù)模型2.1 什么是數(shù)據(jù)模型 數(shù)據(jù)模型既包括實體的集合又包括實體間聯(lián)系的集合。利用這種聯(lián)系才能找到相關(guān)聯(lián)的一串?dāng)?shù)據(jù)。2.2 實體聯(lián)系模型 掌握有關(guān)術(shù)語:實體(三種)、屬性(實體所具有的性質(zhì))、實體型(實體集中各實體共有的特征描述)、實體值(當(dāng)各特征有了具體內(nèi)容后,這些特征便確定了一個實體集中的個體,就叫一個具體的實體值)、實體集(同一類型的實體集合)、值域(屬性的取值范圍)、主關(guān)鍵字(用于區(qū)別實體集中不同個體的屬性)、外來關(guān)鍵字(某屬性雖非該實體的主鍵,但卻是另一實體的主鍵) 用ER圖方法分析實體間的聯(lián)系2.3 數(shù)據(jù)庫類型根據(jù)不同的數(shù)據(jù)模型結(jié)構(gòu)而定義了不同的數(shù)據(jù)庫類型。主要有三種數(shù)據(jù)模

6、型:層次模型、網(wǎng)絡(luò)模型和關(guān)系模型 2.3.1 層次模型2.3.2 網(wǎng)絡(luò)模型2.3.3 關(guān)系模型用二維表的形式來表示實體及其聯(lián)系。 二維表(亦稱關(guān)系)包括: 表頭 (亦稱關(guān)系框架、表結(jié)構(gòu)、屬性名) 表體(即表的具體內(nèi)容,由一條條記錄組成)2.4 從ER圖導(dǎo)出關(guān)系模型第3章 關(guān)系數(shù)據(jù)庫理論基礎(chǔ)3.1 關(guān)系的數(shù)學(xué)定義 域(Domain)值的集合,即:可能取值的范圍。域中數(shù)據(jù)個數(shù)稱為域的基數(shù)。 如 男、女(性別域,基數(shù)2) 已婚、未婚、離異、喪偶(婚姻 狀況域,基數(shù)4) 笛卡爾積(Cartesian Product)一組域的所有各種組合,其中每一種組合狀況稱為一個元組。 如:上例中 D1=性別域男、女

7、 D2=婚姻 狀況域已婚、未婚、離異、喪偶 其笛卡爾積可表示為: D1*D2=男,已婚男,未婚男,離異男,喪偶女,已婚女,未婚女,離異女,喪偶 共有8個元組。 引例:給出三個域: D1=男人集合(MAN)=王兵,李平,張軍 D2=女人集合(WOMAN)=丁枚,吳芳 D3=兒童集合(CHILD)=王一,李一,李二請寫出他們組合的笛卡爾積。 關(guān)系D1*D2* *Dn的子集叫做在域D1,D2, Dn上的關(guān)系(Relation)。關(guān)系是一個二維表,表的每行對應(yīng)一個元組,表的每列對應(yīng)一個域,每列起一個名字,稱為屬性。下面我們在上述的例子中取出笛卡爾積的一個子集來構(gòu)造一個關(guān)系:這個關(guān)系的名字為家庭,域名為

8、男人、女人、兒童,表示為:家庭(丈夫、妻子、孩子)關(guān)系是笛卡爾積的子集,而只有取某一子集才有一定實際意義。例如上例中,在18個元素中,只有3個有實際意義,而其他元素作為關(guān)系是無意義的。請把以上有實際意義的關(guān)系列成一個二維表。3.2 關(guān)系的性質(zhì)作為以二維表形式表示的關(guān)系,必須具備以下性質(zhì): 屬性名必須是不可再分的簡單數(shù)據(jù)項 列是同質(zhì)的 列的前后次序無關(guān)緊要 行的前后次序無關(guān)緊要 每行代表一個具體實體,稱為表中的元組。表中不能有完全相同的兩行。3.3 關(guān)系數(shù)據(jù)描述語言DDL 1) 有二種:問答式和語言描述式 2)關(guān)系模式的三類完整性規(guī)則 實體完整性 關(guān)系中的主鍵不允許為空 引用完整性 不同關(guān)系之間

9、的聯(lián)系是通過“外部關(guān)鍵字”實現(xiàn)的,當(dāng)一個關(guān)系通過外部鍵引用另一個關(guān)系中的記錄時,它必須能在被引用的關(guān)系中找到這個記錄,否則無法實現(xiàn)聯(lián)系。 用戶定義的完整性 指對關(guān)系模式中的各個數(shù)據(jù)的數(shù)據(jù)類型、長度、取值范圍等的約束,由用戶通過DBMS提供的數(shù)據(jù)語言進行統(tǒng)一的控制。3.4 關(guān)系數(shù)據(jù)操縱語言DML 關(guān)系數(shù)據(jù)語言建立在關(guān)系代數(shù)基礎(chǔ)上,具有以下特點: 以關(guān)系為單位進行數(shù)據(jù)操作,操作的結(jié)果也是關(guān)系。 非過程性強,很多操作只需指出做什么,而無須步步引導(dǎo)如何作。 以關(guān)系代數(shù)為基礎(chǔ),借助傳統(tǒng)的集合運算和專門的關(guān)系運算,使關(guān)系數(shù)據(jù)語言有很強的數(shù)據(jù)操縱能力。3.5 關(guān)系代數(shù) 因為數(shù)據(jù)庫中的關(guān)系是一個集合,關(guān)系中的

10、“元組”即是“集合中的元素”,所以關(guān)系代數(shù)的關(guān)系運算用于數(shù)據(jù)庫的操作。一、集合運算 傳統(tǒng)的集合運算:并集:由2個關(guān)系R和S中的所有元素構(gòu)成新的關(guān)系。記為RS。交集:由2個關(guān)系R和S中的所有共同元素構(gòu)成新的關(guān)系。記為RS 。差集:由屬于R而不屬于S的所有元素組成的新的關(guān)系 。記為R-S。 專門的關(guān)系運算選擇運算(selection):從關(guān)系中挑選出滿足條件的記錄(行)生成新關(guān)系。即生成水平方向的子集。投影運算(projection):從關(guān)系中挑選出若干字段(列)生成新關(guān)系。即生成垂直方向的子集。連接運算(join):連接2個關(guān)系所生成的新關(guān)系。由不同的連接類型和連接條件組成不同的結(jié)果。二、相關(guān)術(shù)

11、語: 域、笛卡爾積、選擇、投影、連接、自然連接。3.6 關(guān)系規(guī)范化一、關(guān)系中的函數(shù)依賴 1.函數(shù)依賴概念只要關(guān)系中的主鍵一旦取值,其它非主屬性值必隨之確定,則稱關(guān)系中的非主屬性函數(shù)依賴于主鍵。2.完全函數(shù)依賴與部分函數(shù)依賴當(dāng)主鍵由2個以上的字段組合時,非主屬性必須函數(shù)依賴于組成主鍵的所有字段,才稱為“完全函數(shù)依賴”。否則,是“部分函數(shù)依賴”。3.傳遞函數(shù)依賴屬性之中存在間接依賴則稱“傳遞函數(shù)依賴”。二、范式與規(guī)范化1.范式(Normal form 簡稱NF)滿足一定條件的規(guī)范模式。分為一級(1NF)、二級(2NF)、三級(3NF)其中: 1NF各屬性項均為平滑的基本項。 2NF各非主屬性項均完

12、全函數(shù)依賴于主鍵。 3NF各非主屬性項與主鍵均不存在傳遞函數(shù)依賴。2.關(guān)系規(guī)范化 規(guī)范化過程是一個不斷分解關(guān)系的過程,以逐步達到較高的范式要求。分解的要求; 分解必須是無損的,不能丟失原信息。 分解后的關(guān)系要相互獨立,避免對一個關(guān)系的修改而波及另一個。應(yīng) 用 篇第五章 FoxPro 綜述5.1 FoxPro的特點、文件類型及主要技術(shù)指標 掌握幾個主要的文件類型及擴展名 了解幾個主要的技術(shù)指標 FoxPro 的安裝、啟動及其用戶界面 掌握FoxPro 的各種啟動方法并熟悉其界面窗口 菜單的各項功能及菜單操作 命令窗口中的單命令操作方式5.3 FoxPro 中的數(shù)據(jù)類型、常量、變量、運算符與表達式

13、 1.數(shù)據(jù)類型 C型、N型、F型、L型、D型、M型、G型 2.常量 只有4種:字符型、數(shù)值型、日期型、邏輯型 3.變量 3種:字段變量、內(nèi)存變量、數(shù)組變量注意:其中同名的字段變量優(yōu)先,但可以用M->來強調(diào)內(nèi)存變量。4. 運算符 算術(shù)運算符、字符串運算符、關(guān)系運算符、邏輯運算符。其中字符串運算符補充 :$(包含運算符),其運算結(jié)果為邏輯值.T. 或 .F.。例:“海淀區(qū)” $“北京市海淀區(qū)” 結(jié)果:.T. “海淀區(qū)” $ “北京海淀” 結(jié)果:.F.5. 表達式 與四類運算符相對應(yīng)有四類表達式: 算術(shù)表達式 A+B 字符串運算表達式 “中國 ”+ “北京”=“中國 北京” 或: “中國 ”-

14、 “北京”=“中國北京 ” 關(guān)系表達式 A<=B 或 “中國”> “美國” 邏輯表達式 A> B .and. C< D 根據(jù)表達式的運算結(jié)果的數(shù)據(jù)類型,以上又可分為字符型表達式、數(shù)值型表達式、日期型表達式和邏輯型表達式。5.4 FoxPro 命令的一般格式1.命令格式2.命令的書寫3.命令的執(zhí)行方式5.5 內(nèi)存變量的操作1.賦值操作(賦值號=、STORE命令)2.保存操作 分為3種格式:SAVE TO <內(nèi)存變量文件名> SAVE TO <內(nèi)存變量文件名> ALL LIKE <通配項>SAVE TO <內(nèi)存變量文件名> A

15、LL EXCEPT <通配項>3.恢復(fù)操作(RESTORE FROM <內(nèi)存變量文件名> )4.清除操作(3種語句格式)5.顯示操作(2種:LIST和DISPLAY命令)6.輸出操作(2種:?和?)5.6 數(shù)組操作1.定義數(shù)組(DIMENSION語句)2.給數(shù)組賦值(“=”和STORE語句)5.7 函數(shù) 函數(shù)的一般形式: 函數(shù)名(<參數(shù)表>) 即: 函數(shù)名(<參數(shù)1>,<參數(shù)2>,,<參 數(shù)n >)說明:對于每一個函數(shù)要求了解:j 該函數(shù)的格式 k 該函數(shù)的功能 l 該函數(shù)的數(shù)據(jù)類型,包括參數(shù)的類型和函數(shù)返回值(即:函數(shù)結(jié)

16、果)的類型 數(shù)值函數(shù) 字符串函數(shù) 日期和時間函數(shù) 類型轉(zhuǎn)換函數(shù) 測試函數(shù)補充:1)Right(表達式,n) 功能:從字符表達式的右邊截取n個字符 類型:表達式為C型;n為N型;函數(shù)返回值 為C型 例: Right(“中國人民”,4) 結(jié)果:人民2) Left(表達式,n) 功能:從字符表達式的左邊截取n個字符 類型:同上 例: Left (“中國人民”,4) 結(jié)果:中國練習(xí):1. 寫出下列命令的執(zhí)行結(jié)果 ? INT(156.7) ? SQRT(36) ? MIN(-1,1,10) ? MAX(-1,1,10) ? MOD(13,6) ? ROUND(234.137,2) ? AT (“海淀”,

17、“北京市海淀區(qū)”)8)?RIGHT( “ 李大華”,2 )9)?3+2410) ?LEN( “4+23”)11) ? TYPE(“DATE( )”)12) ? “BYE” $ “GOOD BYE”13) ? TYPE(“123”)14) ? LEFT(“中國人民”,2)+RIGHT(“人民萬歲”,2)15) ? VAL(“532xyz”)+3616) ? VAL(“123”)+LEN(“abcd”)2.求下列邏輯表達式的值 設(shè)X=0, Y=1, X1=“BC”, Y1=.F.2)X>Y.AND.X<Y.OR.NOT.Y1.AND.NOT.X1=“BC”3. 根據(jù)問題要求,寫出Fox

18、Pro表達式1) 10<y<=1002) 總分在90以上的女同學(xué)3)年齡小于40 的教授4)平均成績在8090之間的姓“白”的同學(xué)5)求出“1234”前兩位數(shù)字6)求出三個數(shù)中最大數(shù)的2倍7)將2001年9月28日中的年份分離出來8)“計算機”或“英語”成績不合格的同學(xué)9)查看當(dāng)前工作區(qū)中當(dāng)前記錄號練習(xí)4. 寫出以下結(jié)果:1) 表達式VAL(SUBSTR(“長城386”,7,1)*LEN(IBMPC)2) 設(shè)A=456,則32+&A的結(jié)果是_.3) P1=中國人民,則?“偉大的&P1.萬歲!”的輸出結(jié)果是_.練習(xí)中要注意的問題: 標點符號一律用西文下的符號 賦值語句

19、要一句一句來 練習(xí)3和練習(xí)4寫在紙上交來。練習(xí)3的前提是:假設(shè)在 .dbf文件中有“總分”、“性別”、“年齡”、“職稱”、“姓名”等字段,請你用允許的表達式形式把各句話表達出來。第六章 數(shù)據(jù)庫的基本操作6.1 建立數(shù)據(jù)庫1.先定義庫文件結(jié)構(gòu) 命令:CREATE <文件名>注意:<文件名>是包含盤符、路徑的文件全名2.錄入數(shù)據(jù) 1)立即錄入(回答input data record now?) 2)用APPEND語句追加(追加在最后)3.顯示記錄 LIST|DISPLAY <范圍>FILD <字段名表>FOR|WHILE <條件>4.打開

20、庫文件 USE <庫文件名>5.關(guān)閉庫文件 USE|CLOSE DATABASES6.2 庫文件的維護與修改1. 庫文件的顯示1)文件結(jié)構(gòu)的顯示 LIST STRUCTURE 或 DISPLAY STRUCTURE2)文件內(nèi)容的顯示(LIST/ DISPLAY注意完整格式的各可選項含義)2. 庫文件的修改 1)文件結(jié)構(gòu)的修改(先打開庫文件) MODIFY STRUCTURE 2)文件內(nèi)容的修改(插入、刪除和編輯)3. 記錄的指針定位FOX系統(tǒng)提供了一個總是指向當(dāng)前記錄的“指針”,此指針隨著庫文件的操作而移動。 1)絕對移動 GO TOP 將指針指向第一條記錄 GO BOTTOM 將

21、指針指向最后一條記錄 GO n 或 GO <數(shù)值表達式> 將指針指向指定的記錄 2)相對移動 SKIP n 或 SKIP< 數(shù)值表達式> “正”向下移,“負”向 上移;缺省默認為1。 3)三個有關(guān)的函數(shù) BOF() 測試文件的開始,函數(shù)的結(jié)果為邏輯值.T.或.F. EOF() 測試文件的結(jié)束,函數(shù)的結(jié)果為邏輯值.T.或.F. RECN() 測試文件的當(dāng)前記錄是哪一條,函數(shù)的結(jié)果為數(shù)值n。 記錄的插入 INSERT BEFORE BLANK 一定要先明確當(dāng)前記錄的定位,然后再進行插入操作。 第一選項意為在當(dāng)前記錄之前插入,缺省默認為后插入;第二選項意為插入一條空記錄,該命

22、令執(zhí)行后并不產(chǎn)生等待輸入的窗口。5. 記錄的刪除 1)邏輯刪除 DELETE <范圍> FOR|WHILE <條件>注意各個可選項的有無及含義,缺省范圍意為只刪當(dāng)前一條。 此命令并未真正刪除,僅在記錄前做一刪除標志。2)恢復(fù)邏輯刪除 RECALL <范圍> FOR|WHILE <條件>此命令的功能是去掉刪除標記,恢復(fù)為正常記錄。 注意各個可選項的有無及含義,缺省范圍意為只恢復(fù)當(dāng)前一條記錄。3)物理刪除 PACK 將帶有刪除標記的所有記錄徹底 刪除,它們將不可能再恢復(fù)。 ZAP 直接刪除已打開的庫文件中的全部記錄,只剩庫結(jié)構(gòu)。4)與邏輯刪除有關(guān)的系

23、統(tǒng)參數(shù) SET DELETE OFF | ON功能:設(shè)置在邏輯刪除之后,系統(tǒng)是否認可的規(guī)定(取ON時認可刪除;取OFF時不認可刪除)。6 . 記錄內(nèi)容的修改1)全屏幕編輯狀態(tài)修改 EDIT|CHANGE <范圍> FILD <字段名表>FOR|WHILE <條件> 注意命令中選擇項的含義 體會執(zhí)行該命令時的全屏幕編輯狀態(tài) 注意備注型字段的修改操作(按<Ctrl+PgDn>、<Ctrl+PgUp>或雙擊鼠標進入備注字段編輯窗口,修改后按<Ctrl+W>保存,并退出備注字段編輯窗口;若按ESC鍵或<Ctrl+Q>則

24、放棄修改并退出。 ) 2)瀏覽編輯修改 BROWSE命令 注意執(zhí)行該命令后屏幕上顯示的格式(與LIST命令不同) 注意命令中各選擇項的含義3)成批替換修改 REPLACE <范圍> <字段1> WITH <字段2> FOR|WHILE <條件> 例:將每個人的工資都提高50 元 REPLACE ALL 工資 WITH 工資+50 練習(xí): 將所有工齡在30年以上的女教授的工資提高10%6.3 庫文件的排序與索引1.排序文件依據(jù)某個指定字段的值將記錄順序重新排列,生成一個新庫文件 SORT TO <文件名> ON <字段1>

25、/A/C/D<范圍>FILD <字段名表> FOR|WHILE <條件>例:將按“工資”項的從高到低排列,產(chǎn)生新的名為文件,只取姓名、職稱、工資三個字段。 將先按“工資”項的從高到低,如果相同再按姓名的升序排列。2.索引文件依據(jù)某個指定字段的值生成索引表,再以索引表的順序邏輯排列記錄 注意索引文件與排序文件的區(qū)別 a)文件后綴不同(.dbf|.idx) b)形成后的物理文件和邏輯文件的不同 c)執(zhí)行命令的系統(tǒng)開銷不同 索引文件的類型單索引文件(.idx)和復(fù)合索引文件(.cdx)單索引文件只有命令操作方式,而無菜單操作。復(fù)合索引文件又分為兩種:結(jié)構(gòu)復(fù)合索引和

26、非結(jié)構(gòu)復(fù)合索引,前者:與主文件名同(僅后綴不同),且與主文件同步打開、維護;可用命令和菜單2種方式操作;后者:需要單獨取文件主名(后綴仍為.CDX),用時需單獨用命令打開,無菜單操作方式。復(fù)合索引文件其索引表中可容納多個用TAG標識的索引項,打開一個復(fù)合索引文件相當(dāng)于打開了多個單一索引文件。索引文件的有關(guān)操作 1)索引文件的建立 INDEX ON <關(guān)鍵字段名> TO <索引文件名> 命令中的<關(guān)鍵字段名>可以是多個字段,但要以+號連接成一個表達式形式,前提條件是類型必須相同,因此對于類型不同的字段,一定要事先進行轉(zhuǎn)換(利用轉(zhuǎn)換函數(shù))。 用此命令建立起的索引

27、文件,系統(tǒng)自動加了.idx后綴,且自動呈打開狀態(tài)。 一個.dbf文件允許建立多個索引文件,但每建一個新的則把前一個已打開的索引文件關(guān)閉,但若選擇了ADDITIVE短語則可以所建立的多個索引文件同時存在,此時最后建立的一個為主索引,即由它來控制邏輯順序。2)索引文件的打開 A)USE <庫文件名> INDEX <索引文件名表> 此命令為在打開.dbf文件的同時一并打開.idx文件,當(dāng)多個索引文件時,以,隔開,規(guī)定第一個為主索引。 B)SET INDEX TO <索引文件名表> 此命令為在先打開.dbf文件后,再補充打開一個或幾個.idx文件。3)索引文件的關(guān)閉

28、 SET INDEX TO 或CLOSE INDEX 或 USE 均可4)指定主索引 SET ORDER TO <數(shù)值表達式>/<索引文件名> 此命令是改變默認而特別指定主索引。5)重建索引文件 REINDEX6.4 數(shù)據(jù)查詢1.順序查詢 順序查詢是按記錄的排列順序在指定范圍內(nèi)逐個尋找滿足條件的記錄。查詢效率較低。 LOCATE命令 CONTINUE命令 a)執(zhí)行該命令即將指針定位在第一個滿足條件的記錄上,若要繼續(xù)往下查找,要緊接給出CONTINUE命令。 b)注意輔助該命令的執(zhí)行,F(xiàn)OUND()、EOF()兩函數(shù)的配合使用。2.索引查詢 這是在已建立了索引文件的基礎(chǔ)上

29、的查詢,必須先打開相關(guān)的索引文件,并設(shè)好主索引。這種查詢效率高。FIND命令 a)此命令功能是查找索引關(guān)健字值與要查找的字符串或數(shù)值相等的記錄。它僅限C型、N型,而不能是D型、L型。當(dāng)要查找的是字符串時,可省略定界符。 b)SET EXACT OFF/ON 狀態(tài)的設(shè)置關(guān)系到是否模糊查找。SEEK命令C) 此命令與FIND相似,不同點在于它可以查找包括N型、C型、D型、L型在內(nèi)的各種類型數(shù)據(jù),在查找C型的字符串常量時需加定界符,不加定界符視為變量名。 D)對于多關(guān)健字表達式的索引,要查找的也必須是同樣順序的表達式。再次提醒表達式的類型一定要一致。練習(xí):1)在中索引查找王林的記錄。 use rsd

30、a inde on 姓名 to XM find 王林 seek “王林”6.5 數(shù)據(jù)庫文件的其它操作對庫文件中的N型字段的值進行計數(shù)、求和、求平均、匯總等操作。1.計數(shù)命令 COUNT命令例:分別統(tǒng)計出全班的男、女生人數(shù)。 use 學(xué)生.dbf count all for 性別=“男” to M count all for 性別=“女” to W ?M,W2.求和命令 SUM命令注意:命令中數(shù)值表達式可以是單字段、用“,”號隔開的多字段也可以是數(shù)值字段組合表達式。例:1)求中所有人員的基本工資總和,并存入jbgz中。 2)求中男教師的基本工資總額、津貼總額、獎金總額,扣款總額并分別存入M1、M

31、2、M3、M4中。 3)在中對數(shù)值型字段的各種組合表達式分別進行求和計算,并分別存入jbjt、jbjtjj、jbjtjjkk中。 4)求中所有教師的實發(fā)工資。1)sum all 基本工資 to jbgz2)sum all 基本工資,津貼,獎金,扣款 to M1、M2、M3、M4 for 性別=“男”3)sum all 基本工資+津貼 to jbjt sum all 基本工資+津貼+獎金 to jbjtjj sum all 基本工資+津貼+獎金-扣款 to jbjtjjkk4)REPLACE ALL 實發(fā)工資 WITH 基本工資+津貼+獎金-扣款 注意:REPLACE命令和SUM命令的區(qū)別,前者

32、是對橫向求和,而后者是對數(shù)值型字段縱向求和。3.求平均值命令 AVERAGE命令該命令的其他方面均與SUM命令相同。練習(xí):求所有教師工資中各項的平均數(shù)及所有女教師的實發(fā)工資平均數(shù)。aver 基本工資,津貼,獎金,扣款 to p1,p2,p3,p4aver all 基本工資+津貼+獎金-扣款 to p5 for 性別="女"4.分類匯總命令 TOTAL命令 該命令執(zhí)行之前,必須先排序或索引,以做好按關(guān)鍵字分類的準備工作。練習(xí):在中,按職稱統(tǒng)計基本工資。inde on 職稱 to rs1listtotal on 職稱 to rstotal field 基本工資use rstot

33、alList(得到的結(jié)果表應(yīng)該有幾條記錄?)從結(jié)果可以看出,除了求和的數(shù)值型字段外,其余的字段都是各類里的第一條字段的值,它們已沒有實際意義了。若沒有給出FIELDS<字段名表>,則對所有的數(shù)值型字段求和。如: total on 職稱 to rstota2因為沒有FIELDS 字段名表,所以是對基本工資,津貼,獎金,扣款等所有數(shù)值型字段進行統(tǒng)計。5.庫文件的復(fù)制 COPY命令注意:是將當(dāng)前已打開的庫文件復(fù)制。例1:將生成一個備份文件。 USE a:rsda COPY TO a:r1 USE a:r1 LIST例2:只將中的講師的姓名、職稱和基本工資做一個備份文件。 copy to

34、a:r2 fiel 姓名、職稱、基本工資 for 職稱=“講師” 6.庫文件結(jié)構(gòu)的復(fù)制 COPY STRUCTURE命令例:復(fù)制的姓名、職稱、基本工資等部分字段為新文件r3的表結(jié)構(gòu)。 copy structure to r3 fiel 姓名,職稱,基本工資7.數(shù)據(jù)庫文件與文本數(shù)據(jù)文件間的相互復(fù)制 1)數(shù)據(jù)庫文件復(fù)制成文本數(shù)據(jù)文件注意:同樣是COPY TO命令,但比較與5.庫文件的復(fù)制 的不同: 后面增加了必寫項SDF(標準格式)/DELIMITED(非標準格式),注意含義 當(dāng)復(fù)制完后,可以用TYPE命令顯示2)文本數(shù)據(jù)文件中的數(shù)據(jù)復(fù)制成數(shù)據(jù)庫文件 APPEND FROM命令3)任何類文件的復(fù)制

35、 COPY FILE <源文件名> TO <目標文件名>注意:源文件必須未被打開;源、目標文件名必須帶后綴。6.6 多重數(shù)據(jù)庫文件的操作 1.工作區(qū)概念 用來存放文件的內(nèi)存空間。因為文件被訪問必須先從磁盤調(diào)入內(nèi)存,稱為“打開”。 此前僅討論單工作區(qū),即系統(tǒng)默認的第一號區(qū)。FOXPRO允許開辟至多225個區(qū),即:至多同時打開225個庫文件。 工作區(qū)的命名:數(shù)字編號(1225)/字母編號/工作區(qū)中的庫文件名 雖可在多個工作區(qū)同時打開多個庫文件,但當(dāng)前工作區(qū)僅有一個,只有當(dāng)前工作區(qū)中的庫文件才能被操作。 一個工作區(qū)中只能打開一個庫文件。 系統(tǒng)啟動時自動選擇1號區(qū)為當(dāng)前區(qū)。 各

36、工作區(qū)對各自的文件有各自的指針指示著當(dāng)前記錄,若在本區(qū)操作本庫,不會移動它庫的指針。2.選擇工作區(qū)的命令 SELECT <工作區(qū)號> 選擇該工作區(qū)放入庫文件,此庫文件即為可操作的當(dāng)前文件,但它可以訪問非當(dāng)前區(qū)已打開的別的文件,可讀、可引用,但必須使用前綴。注意:僅指當(dāng)前指針所指的那條記錄的字段值。3.庫文件之間的關(guān)聯(lián) SET RELATION TO命令即建立一種關(guān)聯(lián),使在當(dāng)前庫操作時,別庫的指針也能隨之移動。4.庫文件的連接 JOIN WITH命令橫向連接成一個文件5.庫文件的更新UPDATE ON <關(guān)鍵字段> FROM <工作區(qū)號> REPLACE &l

37、t;字段名1> WITH <表達式1>需要強調(diào)的幾點: 工作區(qū)的表示:在SELECT中可以用1、2、3但在其他語句中要用字母或別名(別名是在完整的打開語句中給出的) JOIN連接,一般都要給出FOR條件才有意義,否則會造成毫無意義的笛卡爾集。 兩個庫文件的SET RELATION關(guān)聯(lián),前提一定是被關(guān)聯(lián)的子庫要按關(guān)聯(lián)字段先進行索引,然后再回到主工作區(qū)給出SET RELATION關(guān)聯(lián)命令。同時可以和兩個以上的庫文件進行關(guān)聯(lián),但此時一定要加ADDITIVE選項。 兩庫關(guān)聯(lián)的更新操作UPDATE語句,前提是主庫、子庫都要先按關(guān)鍵字段索引。6.7 結(jié)構(gòu)化查詢語言SQL SQL(Stru

38、ctured Query Language)本是一種標準的關(guān)系數(shù)據(jù)庫語言,因它的非過程化特點(忽略操作的具體過程描述,只表述要得到的結(jié)果),而被封為第四代語言。本語言的特長是查詢,但也有數(shù)據(jù)庫文件的定義及其他操縱語句。1.建立數(shù)據(jù)庫文件 CREATE TABLE命令功能: 建立庫文件,并定義表結(jié)構(gòu)中每個字段的名稱、類型、寬度和小數(shù)位。格式: CREATE TABLE | DBF <庫文件名> (<字段名1> <字段類型> (<字段寬度> ,<小數(shù)位> ) ,<字段名2> ) | FROM ARRAY <數(shù)組名>

39、例1:CREATE TABLE 學(xué)生檔案 (學(xué)號 C(5),系別 C(8),姓名 C(8),家庭地址 C(30),簡歷 M,入學(xué)時間 D)例2: CREATE TABLE 學(xué)生 FROM ARRA X(5,4) 說明:注意格式,表名后面的小括號是必有的;在表名和小括號之間要有一個空格。 若從數(shù)組導(dǎo)入數(shù)據(jù),則數(shù)組的列數(shù)必須是4,而行數(shù)取決于字段的多少。2、INSERT INTO 插入記錄一、功能:在表的尾部添加一條記錄或在當(dāng)前記錄后插入一條記錄二、格式:INSERT INTO <庫文件名> (<字段名1> , <字段名2> VALUES (<表達式1&g

40、t;, <表達式2>) 或 INSERT INTO <庫文件名> FROM ARRAY<數(shù)組名> 例:INSERT INTO 學(xué)生.dbf (學(xué)號,姓名,性別,出生年月,分數(shù))VALUES(“4444”, “ dddddddd”,“女”,ctod(“01/05/82”),88.5)3、DELEDE FROM 刪除記錄功能:刪除滿足條件的記錄格式:DELETE FROM <庫文件名> WHERE <條件>例:將年齡大于20 歲的女同學(xué)的記錄刪除。 Dele from KWJ where 年齡>20 .and.性別=“女”4、UPD

41、ATE 修改記錄功能:根據(jù)給定的各表達式的值,修改滿足條件記錄的各字段值。例:將“王立”同學(xué)的年齡改為“19” upda KWJ set 年齡=19 where 姓名=“王立” (用Foxpro命令: use KWJ replace 年齡 with 19 for 姓名=“王立”)5、數(shù)據(jù)查詢 SELECT命令功能:從一個或多個庫文件中查找到符合條件的記錄集稱結(jié)果表。 1)最基本的查詢語句格式只有SELECT子句和FROM子句例:j select * from AA &&查詢AA表的所有,結(jié)果表是整個AAk select 學(xué)號,姓名,籍貫 from AA &&只顯

42、示庫文件中指定的幾列 l select AVG(數(shù)學(xué)) as 數(shù)平均,MAX(英語) as 英最高,COUNT(*) as 記錄數(shù) from AA &&該例說明select后面不僅可以是字段名,還允許是規(guī)定內(nèi)的函數(shù)(5個),但求出的結(jié)果必須放在新起的字段名中(AS后的字段名)。該句的查詢結(jié)果為一條記錄。m Select 訂單.訂單編號,訂單.顧客編號,訂單明細.商品編碼,訂單明細.單價 from 訂單,訂單明細&&該命令將從兩個庫文件中查找到所要的各字段,各字段名前要指明前綴.(此命令產(chǎn)生1:多的所有組合).n Select 訂單.訂單編號,訂單.顧客編號,訂單

43、明細.商品編碼,訂單明細.單價 from 訂單,訂單明細 into TABLE<表名>&&把查找的結(jié)果放到一個新表中,或to print或to screen均可。2)有條件的查詢語句格式(要查找滿足什么條件的記錄)允許的條件有兩類:1)連接條件_ 當(dāng)FROM 后面不止一個庫文件時, 要指定連接的條件. 如上例m:Select 訂單. 訂單編號, 訂單. 顧客編號, 訂單明細. 商品編碼, 訂單明細. 單價 from 訂單, 訂單明細 后面應(yīng)加: where 訂單. 訂單編號= 訂單明細. 訂單編號 結(jié)果是當(dāng)兩個庫文件的訂單編號一致時, 顯示相應(yīng)的各字段.2)過濾條件

44、_ 相當(dāng)于FOR 語句. 即查找滿足條件的記錄. 只是它允許的< 比較符> 更多: j 原來已掌握的6 種(> 、>= 、< 、<= 、<> 、=) 如: 姓名=“ 張三” 年齡=19 英語>90 等 k 數(shù)學(xué) l 訂單. 訂單編號 in (1000001,100102,100201) && 必匹配其中之一, 等價于三者的OR.關(guān)于以上查詢格式的說明: 查詢結(jié)果默認輸出到BROWS窗口 本語句先從FROM短語中確認所需數(shù)據(jù)庫文件是否已打開,若未打開,SELECT語句會自動在未被選取的最低工作區(qū)打開它,但用完后不自動關(guān)閉。 對

45、于多庫的操作,注意前綴要用數(shù)據(jù)庫名或數(shù)據(jù)庫別名,而不接受A、B、C等字母(但可在FROM子句中臨時定義別名,如P118例(4)3)查詢后分組小計格式帶GROUP BY短語用GROUP BY子句把SELECT命令的查詢結(jié)果按指定字段名(即:按指定列)分成集合組。例1:按籍貫統(tǒng)計英語、計算機、數(shù)學(xué)各科的平均分:SELECT 籍貫,AVG(英語),AVG(計算機),AVG(數(shù)學(xué)) FROM 成績 GROUP BY 籍貫例2:計算出各系學(xué)生的人數(shù)(結(jié)果表的記錄個數(shù)取決于有幾個系) SELE 系別,COUNT(*) as 人數(shù) FROM kwj GROU BY 系別或:SELE 系別,COUNT(*)

46、as 人數(shù) FROM kwj GROU BY 1以上問題用Foxpro命令如何描述?(相當(dāng)于FOXPRO中先索引,再TOTAL的功能)4)將查詢結(jié)果排序帶ORDER BY短語該子句的功能是對查詢結(jié)果進行排序,而排序的依據(jù)可以是:一個或多個字段名或該字段在結(jié)果表中的列序號。例1:將學(xué)生庫中的女生記錄按分數(shù)的降序排列:SELECT 姓名,性別,分數(shù) FROM 學(xué)生 ORDER BY 分數(shù) WHERE 性別=女例2:按學(xué)歷統(tǒng)計平均分,并按平均分從高到低排列。sele 學(xué)歷,AVG(分數(shù)) AS 平均分 FROM KWJ GROU BY 學(xué)歷 ORDE BY 2練習(xí):從學(xué)生和成績兩庫中按計算機分數(shù)的從

47、高到低列出姓名、性別、英語、計算機、數(shù)學(xué)成績。第7章 FOXPRO 程序設(shè)計FOXPRO 允許兩種工作方式:一是交互的運行方式(單命令方式和菜單方式都屬于此類),另一種是程序方式(又稱命令文件方式),即將若干條命令按照一定的邏輯結(jié)構(gòu)存儲在一個程序文件(擴展名為.PRG)中,可隨時一并運行。7.1 FoxPro 程序文件的建立和運行7.1.1 命令文件的建立和修改命令: MODIFY COMMAND <程序文件命>/?說明: 無文件名為新建,待存盤時再輸入文件名;有文件名為對已有的文件進行修改;?將引出對話框供選擇。 后綴默認為.PRG。 當(dāng)在命令窗口輸入此命令后,則在主窗口出現(xiàn)一新

48、的空白窗口(稱為文本編輯窗口)等待輸入命令文件內(nèi)容,輸入完后以 Ctrl+W 鍵或Ctrl+Esc鍵存盤(以文本方式存儲)。 可以用菜單方式完成同樣操作:“文件”“新建”“程序”7.1.2 程序文件的執(zhí)行 DO <程序文件名>7.1.3 程序文件的基本組成 輸入數(shù)據(jù)處理數(shù)據(jù)輸出數(shù)據(jù) 由基本的這三部分組成。7.2 基本輸入/輸出命令 輸入命令:第一類:預(yù)先賦值(即把變量的值直接寫在賦值語句中) 1) “=” 賦值:<變量名> = <表達式> 例:X=35 Name =“學(xué)生檔案” (一次只能給一個變量賦值,可接受表達式) 2) STORE 命令: STORE

49、<表達式> TO <變量名1>, <變量名2>,······ 例: STORE 2.5 TO X1,X2,X3(可將同一值賦給多個變量,即一次可給多個變量賦值;可接受表達式)第二類:臨時交互式輸入 此類的共同點是只把賦值功能的語句寫在程序中,而具體的值待執(zhí)行這條語句時臨時敲入。 1) INPUT 命令例: INPUT “X=” TO X (待程序運行到此句時,再從鍵盤敲入) X=100 &&輸入的變量為N型 INPUT “姓名:” TO XM 姓名:王大力 &&輸入的變量為C型 INPUT “輸入內(nèi)容為:” TO bds 輸入內(nèi)容為: 3*5 &&輸入表達式,說 明該命令有計算功能2) ACCEPT 命令 該命令只接受 C 型數(shù)據(jù),故不必用定界符括起例: ACCEPT “姓名:” TO XM 姓名: 王大力3) WAIT 命令 該命令起暫停作用,只要再輸入一個字符(不必回車),系統(tǒng)便繼續(xù)操作。 該命令的用途: 若要顯示的內(nèi)容太長一屏放不下時,可加WAIT命令使中間停頓,待看清之后按一個任意鍵即可繼續(xù)執(zhí)行。 在界面設(shè)計時,等待用戶回答Y/N時,安排此語句。

溫馨提示

  • 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)方式做保護處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負責(zé)。
  • 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。

評論

0/150

提交評論