版權(quán)說(shuō)明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)
文檔簡(jiǎn)介
資料庫(kù)應(yīng)用與開(kāi)發(fā)第一章概述第一節(jié)資料庫(kù)系統(tǒng)概述一、數(shù)據(jù)處理方法的演變資料庫(kù)應(yīng)用系統(tǒng)訂票系統(tǒng)銀行系統(tǒng)企業(yè)管理資訊系統(tǒng)學(xué)校教務(wù)管理系統(tǒng)……1.數(shù)據(jù)處理的特點(diǎn)數(shù)據(jù)存儲(chǔ):長(zhǎng)期保存、大容量數(shù)據(jù)即時(shí)處理基本數(shù)據(jù)操作:查詢,更新(增、刪、改)
——基於大容量存儲(chǔ)數(shù)據(jù)的操作對(duì)數(shù)學(xué)運(yùn)算能力要求相對(duì)不高,通常是簡(jiǎn)單的算術(shù)運(yùn)算、統(tǒng)計(jì)運(yùn)算面向多種應(yīng)用(多用戶):共用、併發(fā)訪問(wèn)數(shù)據(jù)安全性要求數(shù)據(jù)完整性要求2.資料庫(kù)技術(shù)的產(chǎn)生發(fā)展:技術(shù)本身的發(fā)展 實(shí)際需求的要求數(shù)據(jù)管理方法的演變經(jīng)歷了三個(gè)階段:人工管理階段檔系統(tǒng)階段資料庫(kù)系統(tǒng)階段
-數(shù)據(jù)的結(jié)構(gòu)化,面向整體的觀點(diǎn)組織數(shù)據(jù)
-數(shù)據(jù)共用,可控冗餘度
-高度的數(shù)據(jù)和程式獨(dú)立性
-提供安全性、完整性及併發(fā)訪問(wèn)等控制功能三、資料庫(kù)應(yīng)用與開(kāi)發(fā)
用資料庫(kù)管理系統(tǒng)(資料庫(kù)語(yǔ)言及其工具)解決實(shí)際問(wèn)題,其過(guò)程分兩步:
-資料庫(kù)設(shè)計(jì)
-資料庫(kù)的實(shí)現(xiàn)及其操作用數(shù)據(jù)模型描述現(xiàn)實(shí)世界的問(wèn)題,並對(duì)數(shù)據(jù)模型實(shí)施操作,實(shí)現(xiàn)相應(yīng)的數(shù)據(jù)處理。1.資料庫(kù)設(shè)計(jì)
用關(guān)係數(shù)據(jù)模型描述現(xiàn)實(shí)世界,即設(shè)計(jì)關(guān)係(表)、主碼、索引、外碼、關(guān)聯(lián)等。所需基礎(chǔ)知識(shí):
資訊系統(tǒng)分析與設(shè)計(jì)/
管理資訊系統(tǒng)
——分析現(xiàn)實(shí)世界的資訊需求
資料庫(kù)原理
——設(shè)計(jì)結(jié)構(gòu)良好的資料庫(kù)示例:主碼(Sno+Cno)SnoNameGen.BirthAddr.CnoSubj.TimeCreditScore01張強(qiáng)M78/9/1XC01數(shù)學(xué)9668501張強(qiáng)M78/9/1XC02英語(yǔ)12489001張強(qiáng)M78/9/1XC03物理563.58302田麗F77/2/25WC02英語(yǔ)12489002田麗F77/2/25WC04化學(xué)6448802田麗F77/2/25WC05生物4837503王東M78/11/18XC01數(shù)學(xué)9667803王東M78/11/18XC03物理563.58003王東M78/11/18XC04化學(xué)64492結(jié)構(gòu)不好存在的問(wèn)題數(shù)據(jù)冗餘插入異常刪除異常修改異常2.資料庫(kù)的實(shí)現(xiàn)及其操作
在電腦系統(tǒng)中物理地實(shí)現(xiàn)所設(shè)計(jì)的資料庫(kù),並對(duì)數(shù)據(jù)庫(kù)實(shí)施操作,即使用資料庫(kù)中的數(shù)據(jù)——對(duì)數(shù)據(jù)庫(kù)進(jìn)行增刪改、查詢等操作。工具:資料庫(kù)管理系統(tǒng)(DBMS) 如Oracle,Sybase,SQLServer,DB2,VisualFoxPro等。四、數(shù)據(jù)模型在資料庫(kù)系統(tǒng)中,資料庫(kù)設(shè)計(jì)的核心問(wèn)題就是設(shè)計(jì)一個(gè)好的數(shù)據(jù)模型,數(shù)據(jù)模型的好壞直接影響資料庫(kù)的性能。目前流行的數(shù)據(jù)模型是關(guān)係數(shù)據(jù)模型。
1.關(guān)係數(shù)據(jù)模型
關(guān)係數(shù)據(jù)模型是把現(xiàn)實(shí)世界資訊需求的數(shù)據(jù)邏輯結(jié)構(gòu)歸結(jié)為滿足一定條件的二維表的模型。一個(gè)二維表就是一個(gè)關(guān)係,描述問(wèn)題的所有二維表的集合就構(gòu)成了一個(gè)關(guān)係數(shù)據(jù)庫(kù)。
從理論上定義,關(guān)係是笛卡爾積的任意一個(gè)子集。從直觀上看,關(guān)係就是一個(gè)具有橫行(記錄)和豎列(字段)的一張二維表。日常工作和生活中的各種報(bào)表,如工資表、學(xué)生成績(jī)表、人事檔案表、產(chǎn)品庫(kù)存表、生產(chǎn)報(bào)表等都具有二維表的結(jié)構(gòu),可以很方便地表示成關(guān)係數(shù)據(jù)模型中的一個(gè)關(guān)係。
關(guān)係數(shù)據(jù)模型示例SnoCnoScore01C018501C029001C038302C029002C048802C057503C017803C038003C0492SnoNameGen.BirthAddr.01張強(qiáng)M1978/9/1X02田麗F1977/2/25W03王東M1978/11/18XCnoSubj.TimeCreditC01數(shù)學(xué)966C02英語(yǔ)14412C03物理644C04化學(xué)644C05生物483關(guān)係數(shù)據(jù)模型分析SnoNameGen.BirthAddr.字段記錄數(shù)據(jù)01張強(qiáng)M1978/9/1X02田麗F1977/2/25W03王東M1978/11/18X……結(jié)構(gòu)表中含有幾個(gè)字段:字段名、字段類型、字段寬度、小數(shù)位學(xué)生表相關(guān)術(shù)語(yǔ)之間的聯(lián)繫Database(資料庫(kù)) UniversityDatabase StudentTable,CourseTable,ScoreTable,……Table(表) CnoSubjectTimeCredit C01數(shù)學(xué)966 C02英語(yǔ)14412 C03物理644
……
CnoSubjectTimeCreditRecord(記錄) J101數(shù)學(xué)16010Fields(字段) J101Byte(位元組) 01001010(字母J的ASCII碼)Bit(位) 02.關(guān)係的性質(zhì)一個(gè)關(guān)係中的任意兩個(gè)記錄不能相同;關(guān)係的每列都必須有不同的名字;列是同質(zhì)的,即關(guān)係的每列都是同類型的數(shù)據(jù);關(guān)係的行、列的次序不影響其資訊內(nèi)容,可以任意交換;關(guān)係的每個(gè)分量都必須是不可分的基本資料項(xiàng)目;每個(gè)關(guān)係都必須至少有一個(gè)關(guān)鍵字(即主碼)唯一標(biāo)識(shí)它的記錄。3.關(guān)係的碼定義1:若關(guān)係中的某一字段或一組字段的值能唯一地標(biāo)識(shí)關(guān)係的一個(gè)記錄,則稱該字段或字段組為關(guān)係的候選碼。若一個(gè)關(guān)係有多個(gè)候選碼,則選定其中一個(gè)為主碼。定義2:F是關(guān)係R的某一字段或一組字段,但不是關(guān)係R的主碼,如果F與關(guān)係S的主碼對(duì)應(yīng),則稱F是關(guān)係R的外碼。DnoDnameDlocDmgrD-01財(cái)務(wù)部D-02生產(chǎn)部D-03銷售部D-04供應(yīng)部D-05人事部EnoEnameTitleSalaryDnoE-001張立D-01E-002趙洪新D-01E-003王強(qiáng)D-03E-004齊東D-02E-005孫海D-02E-006劉偉D-03E-007衛(wèi)希凱NullDepartmentTableEmployeeTable碼的示例關(guān)係之間是通過(guò)主碼和外碼相互關(guān)聯(lián)的4.其他二維數(shù)據(jù)組織形式電子錶格(Excel,Lotus)二維數(shù)組文本數(shù)據(jù)檔(*.txt,*.dat)數(shù)據(jù)的引用與數(shù)據(jù)所在的位置有關(guān),即地址相關(guān)。而關(guān)係中數(shù)據(jù)的引用是地址無(wú)關(guān)的——數(shù)據(jù)和程式相互獨(dú)立。第二節(jié)VisualFoxPro簡(jiǎn)介一、VFP的發(fā)展20世紀(jì)70年代末,DbaseⅡ,Ashton-Tate公司1984/1985年DbaseⅢ/DbaseⅢ+1987年FoxBASE+,F(xiàn)OX公司1989年FoxProforDOS1993年FoxProforWindows,微軟公司1995年VisualFoxProVisualFoxProFoxProFoxBasexBase版本號(hào)運(yùn)行平臺(tái)8.0/7.0Windows20006.0Windows95/985.0Windows95/983.0Windows95/982.5/2.6Dos,Windows95/982.0Dos1.0Dos
DosDos發(fā)展相容二、啟動(dòng)VFP,退出VFP啟動(dòng)/運(yùn)行VFP
桌面快捷方式 開(kāi)始菜單-程式-VisualFoxPro退出VFP
在系統(tǒng)菜單“檔”中選擇“退出” 在命令窗口中執(zhí)行“QUIT”命令桌面快捷方式啟動(dòng)VFP用開(kāi)始菜單啟動(dòng)VFP三、VFP的介面初始介面命令窗口系統(tǒng)菜單對(duì)話框工具欄VisualFoxPro6.0的初始介面(一)VisualFoxPro6.0的初始介面(二)VisualFoxPro6.0的系統(tǒng)菜單VisualFoxPro6.0的對(duì)話框四、VF的命令執(zhí)行方式命令方式 在命令窗口中輸入要執(zhí)行的命令,以回車結(jié)束命令,並開(kāi)始執(zhí)行命令。菜單引導(dǎo)方式 在FoxPro的系統(tǒng)菜單中選擇相應(yīng)的菜單選項(xiàng),在對(duì)話框中填寫命令參數(shù),執(zhí)行命令。程式執(zhí)行方式 編寫FoxPro根源程式(命令程式),運(yùn)行程式,按照程式的邏輯結(jié)構(gòu)執(zhí)行程式中的命令。五、關(guān)於VF的命令和函數(shù)除@…
命令、ON…
命令外,VF的命令均以英語(yǔ)動(dòng)詞開(kāi)頭,結(jié)構(gòu)為:命令動(dòng)詞+若干修飾子句;命令中的保留字和函數(shù)名幾乎都採(cǎi)用完全或縮寫的英語(yǔ)單詞,因而容易理解和記憶;命令中的保留字和函數(shù)名不區(qū)分字母的大小寫;在多數(shù)情況下,保留字和函數(shù)名可以簡(jiǎn)化使用其前四個(gè)字母即可。例如,的命令DISPLAYSTRUCTURE可簡(jiǎn)化為DISPSTRU、DISPSTRUCTURE、DISPLAYSTRU,函數(shù)ISUPPER()可簡(jiǎn)化為ISUP()。五、關(guān)於VF的命令和函數(shù)除少數(shù)子句外,命令中起限制和修飾作用的子句,可在命令中以任意順序出現(xiàn)。因此,下述幾個(gè)命令是完全等效的:
LISTFIELDSsno,name,score
FORscore>=590
ALL
OFF
TOPRINTERLISTFORscore>=590
FIELDSsno,name,scoreALLOFFTOPRINTERLISTALLOFFFORscore>=590
FIELDSsno,name,scoreTOPRINTERLISTTOPRINTEROFFALLFORscore>=590
FIELDSsno,name,score
六、命令語(yǔ)法約定<…>選擇該項(xiàng)時(shí),尖括弧中的內(nèi)容必須代之以實(shí)際數(shù)據(jù);[…]任選項(xiàng),表示其中的內(nèi)容可以選擇也可以不選擇;…|…
擇一選項(xiàng),表示應(yīng)從列出的內(nèi)容中選擇一項(xiàng)。一般,用大寫字母識(shí)別字代表FoxPro系統(tǒng)的保留字,小寫字母識(shí)別字為由用戶使用時(shí)填寫的項(xiàng),如檔案名、變數(shù)名等。七、VF的輔助設(shè)計(jì)工具嚮導(dǎo)——嚮導(dǎo)是一種快捷的設(shè)計(jì)工具,它通過(guò)一組對(duì)話框依次與用戶對(duì)話,引導(dǎo)用戶分步完成VFP的某項(xiàng)任務(wù)。VFP6.0有21種嚮導(dǎo),參見(jiàn)P22,表1.2。設(shè)計(jì)器——與嚮導(dǎo)類似,用來(lái)幫助用戶創(chuàng)建或修改VFP應(yīng)用程式所需的構(gòu)件,如表、表單、菜單等。VFP6.0有9種設(shè)計(jì)器,參見(jiàn)P23,表1.3。生成器——幫助用戶在VFP應(yīng)用程式的構(gòu)件中生成並加入某類構(gòu)件,如文本框、表格等。VFP6.0有10種生成器,參見(jiàn)P24,表1.4。八、數(shù)據(jù)類型(熟練掌握)字元型(C):0-254個(gè)位元組的文本數(shù)據(jù),如學(xué)號(hào),姓名,性別,郵遞區(qū)號(hào),電話號(hào)碼,身份證號(hào),產(chǎn)品名稱等。數(shù)值型(N):由正負(fù)號(hào)、整字和小數(shù)點(diǎn)組成且能用於數(shù)值運(yùn)算的數(shù)據(jù),如產(chǎn)量,價(jià)格,庫(kù)存量,成績(jī),工資額等。日期型(D):由年份、月份、日組成的表示日曆日期的數(shù)據(jù),如生日,交貨日期等。邏輯型(L):由真值、假值兩個(gè)值組成的表示邏輯判斷結(jié)果的數(shù)據(jù),如婚否,黨員否等。備註型(M):超過(guò)254個(gè)位元組的長(zhǎng)文本數(shù)據(jù),如工作經(jīng)歷,獎(jiǎng)懲情況等。八、數(shù)據(jù)類型(瞭解)日期時(shí)間型(T):由年份、月份、日、時(shí)、分、秒組成的表示某一時(shí)刻時(shí)間的數(shù)據(jù),如交款時(shí)間,採(cǎi)樣時(shí)間等。整型(N):不帶小數(shù)的數(shù)值,如年齡,成績(jī)等。貨幣型(Y):表示貨幣的數(shù)值,如價(jià)格,工資額等。浮動(dòng)型(N):用科學(xué)記數(shù)法表示的數(shù)值。雙精度型(N):表示高精度要求的數(shù)值。通用型(G):用來(lái)存放多媒體數(shù)據(jù),如照片,圖片等。九、檔類型及其擴(kuò)展名對(duì)照表檔類型擴(kuò)展名檔類型擴(kuò)展名數(shù)據(jù)表備註檔單條目索引檔複合索引檔根源程式檔編譯程序檔表單定義數(shù)據(jù)表表單定義備註檔菜單定義數(shù)據(jù)表菜單定義備註檔生成的菜單程式
編譯菜單程式DBFFPTIDXCDXPRGFXPSCXSCTMNXMNTMPRMPX專案管理資料庫(kù)專案管理備註檔文本檔視圖檔報(bào)表檔報(bào)表備註檔標(biāo)籤檔標(biāo)籤備註檔生成的查詢程式編譯查詢程式可執(zhí)行檔應(yīng)用程式檔PJXPJTTXTVUEFRXFRTLBXLBTQPRQPXEXEAPP第二章表的基本操作建立新表運(yùn)算式記錄指針記錄的增刪改表的其他操作第一節(jié)建立新表建立表:建立表的結(jié)構(gòu)——定義新表 輸入數(shù)據(jù)記錄——對(duì)表的操作之一定義/建立表結(jié)構(gòu):表名(*.DBF)
字段名 字段類型 字段寬度(小數(shù)位) 是否建索引 字段是否可為空1.如何建立新表a)表結(jié)構(gòu)的邏輯設(shè)計(jì)——數(shù)據(jù)模型設(shè)計(jì),即:建立幾個(gè)表每個(gè)表裏包含哪些資料項(xiàng)目每個(gè)資料項(xiàng)目採(cǎi)用什麼數(shù)據(jù)類型每個(gè)表的主碼是否需要建立索引b)在VF中實(shí)現(xiàn)表結(jié)構(gòu)c)向表中輸入初始數(shù)據(jù)記錄2.用表設(shè)計(jì)器創(chuàng)建新表的結(jié)構(gòu)命令方式
CREATEstudent↙菜單引導(dǎo)方式
檔(F)—新建(N)—表(T)—新建檔(N)*菜單引導(dǎo)方式*各類型數(shù)據(jù)的字段寬度系統(tǒng)自動(dòng)設(shè)置:邏輯型:1日期型:8日期時(shí)間型:8整型:4貨幣型:8備註型:4通用型:4由用戶定義:字元型:0-254數(shù)值型:20浮動(dòng)型:20雙精度型:8
小數(shù)點(diǎn)寬度=整數(shù)位+小數(shù)位+1+1
符號(hào)位*關(guān)於備註/通用型字段當(dāng)定義備註/通用型字段時(shí),系統(tǒng)自動(dòng)產(chǎn)生同名的備註檔(*.FPT),作為表檔的輔助檔;在表檔中,備註/通用型字段寬度為4個(gè)位元組,存儲(chǔ)指向備註檔的地址資訊,相當(dāng)於指針;備註/通用型數(shù)據(jù)實(shí)際存儲(chǔ)在備註檔中,所佔(zhàn)用位元組數(shù)根據(jù)實(shí)際情況按512位元組倍數(shù)遞增;備註檔不能單獨(dú)使用。*結(jié)束退出表設(shè)計(jì)器保存退出點(diǎn)《確定》按鈕按<Ctrl+W>鍵不保存退出點(diǎn)《取消》按鈕按<Ctrl+Q>鍵按<Esc>鍵3.打開(kāi)和關(guān)閉表打開(kāi)表
USE<filename>
檔(F)—打開(kāi)(O)—“表(*.dbf)”關(guān)閉表
USE CLOSETABLES CLOSEDATABASES CLOSEALL CLEARALL
窗口(W)—數(shù)據(jù)工作期(D)—“關(guān)閉”按鈕關(guān)於表檔打開(kāi)方式獨(dú)享方式——EXCLUSIVE
對(duì)表結(jié)構(gòu)、表記錄操作沒(méi)有限制只讀方式——SHARED
可以顯示表結(jié)構(gòu),但不可以修改表結(jié)構(gòu)
對(duì)表記錄操作沒(méi)有限制設(shè)置命令:SETEXCLUSIVEON|OFFUSE…EXCLUSIVE|SHARED默認(rèn)為獨(dú)享方式打開(kāi)示例SETEXCLUSIVEONUSEstudent或USEstudentEXCLUSIVESETEXCLUSIVEOFFUSEstudent或USEstudentSHARED4.表中初始數(shù)據(jù)的輸入在上一步保存退出遇“現(xiàn)在輸入記錄”時(shí)選擇Y,則
直接進(jìn)入數(shù)據(jù)輸入窗口。在上一步保存退出遇“現(xiàn)在輸入記錄”時(shí)選擇N,則 從鍵盤直接錄入:BROWSE命令(按Ctrl+Y鍵)
APPEND命令
顯示(V)—流覽(B)
從數(shù)組中間接輸入:APPENDFROMARRAY
命令 從其他檔間接輸入:APPENDFROM
命令BROWSE[FIELDS<fieldlist>][FONT<font>[,<size>]]
[STYLE<style>]
[FOR<expL1>[REST]][FORMAT][FREEZE<fieldname>]
[KEY<expr1>[,<expr2>]][LAST|NOINIT]
[LOCK<expN1>][LPARTITION][NAME<objectname>]
[NOAPPEND][NODELETE][NOEDIT|NOMODIFY]
[NOLGRID][NORGRID][NOLINK][NOMENU]
[NOOPTIMIZE][NOREFRESH][NORMAL][NOWAIT]
[PARTITION<expN2>[LEDIT][REDIT]]
[PREFERENCE<expC1>][SAVE]
[TIMEOUT<expN3>][TITLE<expC2>]
[VALID[:F]<expL2>[ERROR<expC3>]]
[WHEN<expL3>][WIDTH<expN4>]
[WINDOW<windowname1>]
[IN[WINDOW]<windowname2>|INSCREEN]
[COLORSCHEME<expN5>]命令格式:APPEND[BLANK][IN<expN>|<expC>][NOMENU]兩種方式:
APPENDBLANKIN<expN>|<expC>
以非交互方式直接追加一個(gè)空記錄。
APPENDIN<expN>|<expC>
以交互方式追加數(shù)據(jù)記錄。以交互方式追加數(shù)據(jù)記錄APPENDFROM<filename>|?
[FIELDS<fieldlist>][FOR<expL>]
[[TYPE][DELIMITED[WITH<delimiter>|WITHBLANK|WITHTAB
|WITHCHARACTER<delimiter>]
|DIF|FW2|MOD|PDOX|RPD|SDF|SYLK
|WK1|WK3|WKS|WR1|WRK|CVS
|XLS|XL5[SHEET<sheetname>]|XL8[SHEET<sheetname>]]]
[AS<codepage>]5.表結(jié)構(gòu)的修改何時(shí)需要修改表結(jié)構(gòu) 增加字段 刪除字段 修改字段名、類型、寬度、小數(shù)位、置空否 修改索引修改表結(jié)構(gòu)的命令
MODIFYSTRUCTURE菜單引導(dǎo)修改表結(jié)構(gòu) 顯示(V)—表設(shè)計(jì)器(L)6.顯示數(shù)據(jù)記錄交互方式:同時(shí)可編輯數(shù)據(jù)記錄
BROWSE命令 顯示(V)—流覽(B)非交互方式:僅顯示、不可編輯數(shù)據(jù)記錄
LIST命令
DISPLAY命令(1)LIST/DISPLAY命令格式LIST[[FIELDS]<fieldlist>]
[<Scope>][FOR<expL1>][WHILE<expL2>]
[OFF][NOCONSOLE][NOOPTIMIZE]
[TOPRINTER[PROMPT]|TOFILE<filename>]DISPLAY[[FIELDS]<fieldlist>]
[<Scope>][FOR<expL1>][WHILE<expL2>]
[OFF][NOCONSOLE][NOOPTIMIZE]
[TOPRINTER[PROMPT]|TOFILE<filename>](2)LIST/DISPLAY命令解釋FIELDS<fieldlist>
指定輸出的字段(列選擇)<scope>
指定輸出的數(shù)據(jù)記錄的範(fàn)圍(行選擇)FOR<expL>或WHILE<expL>
指定輸出的數(shù)據(jù)記錄的條件(行選擇)TOPRINTER[PROMPT]|TOFILE<filename>
指定數(shù)據(jù)輸出到何處,顯示器,印表機(jī),檔? 默認(rèn)為輸出到顯示器。(3)關(guān)於範(fàn)圍選擇子句
範(fàn)圍選擇子句<scope>按指定的範(fàn)圍選擇命令要操作的數(shù)據(jù)記錄。它有四種形式:ALL:限定可對(duì)檔中的所有記錄操作;NEXT<n>:對(duì)檔中當(dāng)前記錄之後的n個(gè)記錄操作;REST:對(duì)檔中當(dāng)前記錄之後的剩餘記錄操作;RECORD<n>:限定只對(duì)檔中的第n個(gè)記錄操作。(4)LIST和DISPLAY命令的差別當(dāng)命令中無(wú)<scope>、FOR、WHILE子句時(shí),
LIST默認(rèn)為輸出資料庫(kù)中所有的記錄;
DISPLAY僅輸出當(dāng)前記錄。LIST為連續(xù)輸出數(shù)據(jù);
DISPLAY在輸出結(jié)果滿一屏?xí)r,系統(tǒng)自動(dòng)暫停,按任意鍵後繼續(xù)顯示。(5)示例LISTFIELDSsno,name,majorFORgender="女"(5)示例GOTOPLISTsno,name,majorNEXT5(5)示例SKIPDISPLAY(5)示例DISPLAYALL7.顯示表結(jié)構(gòu)LISTSTRUCTURE
[IN<expN>|<expC>]
[NOCONSOLE]
[TOPRINTER[PROMPT]|TOFILE<filename>]DISPLAYSTRUCTURE
[IN<expN>|<expC>]
[NOCONSOLE]
[TOPRINTER[PROMPT]|TOFILE<filename>]第二節(jié)運(yùn)算式運(yùn)算式的構(gòu)成:變數(shù),常量,函數(shù),運(yùn)算符
類型,值變數(shù):字段變數(shù),記憶體變數(shù)函數(shù):系統(tǒng)函數(shù),用戶定義函數(shù)運(yùn)算符:P49,表2.6
算術(shù)運(yùn)算符 關(guān)係運(yùn)算符優(yōu)先順序
邏輯運(yùn)算符運(yùn)算對(duì)象 字元運(yùn)算符(+,-)1.常量(1)數(shù)值型/貨幣型/浮動(dòng)型/整型/雙精度型常量:
100-305.231.05E+5字元型常量:雙引號(hào):"GoodMorning!"
單引號(hào):'Good'
方括號(hào):[Morning]1.常量(2)日期型常量:
{^yyyy-mm-dd}或{^yyyy/mm/dd}或{^yyyy.mm.dd}{^2001/09/26}日期時(shí)間型常量:
{^yyyy-mm-dd[hh[:mm[:ss]][a|p]]}{^2001/09/294:10p}邏輯型常量:真值:.T..Y..t..y.
假值:.F..N..f..n.2.變數(shù)字段變數(shù): 可為任意數(shù)據(jù)類型。記憶體變數(shù),可是如下數(shù)據(jù)類型:
N,數(shù)值型(貨幣型/浮動(dòng)型/整型/雙精度型) C,字元型(備註型) D,日期型
T,日期時(shí)間型
L,邏輯型 不能是通用型的。3.運(yùn)算式示例(1)25+100-(12*8-7)+54/9數(shù)值42"Good
"+"afternoon!"字串"Goodafternoon!""Good"-"afternoon!"字串"Goodafternoon!"{^2004/10/01}>{^2004/09/26}邏輯真值{^2004/09/294:00p}>{^2004/09/298:00}
邏輯真值"abcd"="ABCD" 邏輯假值"abcd"="ABCD"AND50>10*4 邏輯假值"abcd"="ABCD"OR50>10*4 邏輯真值婚否=.F. 無(wú)效運(yùn)算式NOT婚否 有效運(yùn)算式3.運(yùn)算式示例(2){^2004/10/01}+10日期2004年10月11日{(diào)^2004/03/01}-1日期2004年2月29日{(diào)^2004/10/01}-{^2004/09/26}數(shù)值5{^2004/09/294:10:00p}+10
日期時(shí)間型2004年9月29日下午4時(shí)10分10秒{^2004/09/294:10:00p}-30
日期時(shí)間型2004年9月29日下午4時(shí)9分30秒{^2004/09/298:10}-{^2004/09/298:00}
數(shù)值6004.顯示運(yùn)算式命令格式:?<Expr>示例:
?25+100-(12*8-7)+54/9?{^2004/10/01}+10?{^2004/10/01}-{^2004/09/29}?{^2004/09/294:10p}?{^2004/09/294:10p}-30?{^2004/10/01}>{^2004/09/26}?"abcd"="ABCD"OR50>10*4?"abcd"="ABCD"注:日期型/日期時(shí)間型變數(shù)定義格式和顯示格式不一定相同。第三節(jié)記錄指針FoxPro系統(tǒng)在數(shù)據(jù)輸入時(shí),依據(jù)其輸入的先後順序自動(dòng)為每個(gè)記錄賦予一個(gè)記錄號(hào),最先輸入的記錄的記錄號(hào)為1,其次為2,依此類推。用戶對(duì)表檔中某個(gè)資料項(xiàng)目的訪問(wèn),除要指定資料項(xiàng)目所在字段(列)的字段名外,還要給出它所在的記錄(行)。FoxPro系統(tǒng)內(nèi)部有個(gè)用以指向當(dāng)前操作記錄(稱為當(dāng)前記錄)的記錄指針,通過(guò)記錄指針定位命令,可將它移到預(yù)定的位置上。1.與記錄指針有關(guān)的函數(shù)函數(shù)格式:RECNO([<expN>|<expC>])功能:返回指定表的當(dāng)前記錄號(hào)。返回值類型:N函數(shù)格式:EOF([<expN>|<expC>])功能:測(cè)試指定表的記錄指針是否指向檔尾。返回值類型:L函數(shù)格式:BOF([<expN>|<expC>])功能:測(cè)試指定表的記錄指針是否指向檔頭。返回值類型:L*說(shuō)明(設(shè)表中共有N條數(shù)據(jù)記錄)記錄物理順序RECNO()EOF()BOF()表頭第1條記錄第2條記錄……第k條記錄……第N條記錄表尾112……K……NN+1FFF……F……FTTFF……F……FF*示意圖BeginofFlieEndofFlie123
…NEOF()=.T.→BOF()=.T.→RECNO()有效記錄指針定位的幾種方法記錄指針絕對(duì)移動(dòng)——GOTO命令記錄指針相對(duì)移動(dòng)——SKIP命令記錄指針條件移動(dòng)——LOCATE命令借助索引檔移動(dòng)——SEEK命令(第三章)隨著對(duì)記錄操作的命令移動(dòng)
LIST,DISPLAY,REPLACE,……2.記錄指針絕對(duì)移動(dòng)命令格式:
GO|GOTO[RECORD]<expN1>|TOP|BOTTOM[IN<expN2>|<expC>]解釋:將記錄指針直接移到指定的記錄位置上。
[RECORD]<expN1>:記錄號(hào)為<expN1>的任意記錄;
TOP:表檔的首記錄(邏輯順序);
BOTTOM:表檔的最後一個(gè)記錄(邏輯順序)。記錄順序:物理順序——與記錄號(hào)一致,由輸入順序決定。 邏輯順序——依據(jù)指定的資料項(xiàng)目排序形成。 邏輯順序和物理順序可能一致,可能不一致。*示例1nn=RECNO()&&保存當(dāng)前指針位置
…&&執(zhí)行命令使記錄指針移動(dòng)了GOTOnn&&恢復(fù)原來(lái)指針位置
…
3.記錄指針相對(duì)移動(dòng)命令格式:
SKIP[<expN1>][IN<expN2>|<expC>]
解釋:記錄指針相對(duì)當(dāng)前記錄移動(dòng)若干個(gè)數(shù)據(jù)記錄。
<expN1>為正值,向表尾方向移動(dòng);
<expN1>為負(fù)值,向表頭方向移動(dòng);
<expN1>為零,記錄指針不動(dòng);
省略<expN1>,記錄指針向表尾移動(dòng)一個(gè)記錄。*示例2GOTOPDOWHILE.NOT.EOF()...&&處理當(dāng)前記錄的一組命令
SKIP&&指針下移ENDDO或GOBOTTOMDOWHILE.NOT.BOF()...&&處理當(dāng)前記錄的一組命令
SKIP-1&&指針上移ENDDO*示例3——程式1CLEARUSEstudentGOTOPDOWHILE.NOT.EOF()DISPLAYSKIPENDDO*程式1執(zhí)行結(jié)果4.記錄指針條件移動(dòng)命令格式:LOCATEFOR<expL1>[WHILE<expL2>] [<scope>][NOOPTIMIZE]解釋:根據(jù)FOR或WHILE子句的條件,在表中按指定的記錄範(fàn)圍順序查找。若表中有符合條件的記錄,則指針定位在最先遇到的滿足條件的記錄上,此時(shí)EOF()函數(shù)返回假值。若無(wú)符合條件的記錄,此時(shí)當(dāng)命令中無(wú)範(fàn)圍子句或指定的記錄範(fàn)圍為ALL時(shí),EOF()函數(shù)返回真值,記錄指針指向檔尾;否則,EOF()函數(shù)返回假值,指針指向指定記錄範(fàn)圍的最後一條記錄上。CONTINUE命令:限定與LOCATE命令匹配使用,表示LOCATE命令的繼續(xù)。*示例4LOCATEALLFORgender="男"ANDdno="01"?RECNO(),BOF(),EOF()
顯示
1.F..F.CONTINUE?RECNO(),BOF(),EOF()
顯示
2.F..F.CONTINUE?RECNO(),BOF(),EOF()
顯示
4.F..F.CONTINUE...*示例5——程式2CLEARUSEstudentLOCATEALLFORgender="男"ANDdno="01"DOWHILENOTEOF() DISPLAY CONTINUEENDDO*程式2執(zhí)行結(jié)果第四節(jié)數(shù)據(jù)記錄的增刪改增加數(shù)據(jù)記錄:追加命令——APPEND命令
插入命令——INSERT-SQL命令刪除數(shù)據(jù)記錄:數(shù)據(jù)記錄邏輯刪除(加刪除標(biāo)誌)——DELETE命令
數(shù)據(jù)記錄物理刪除——PACK命令
恢復(fù)數(shù)據(jù)記錄(取消刪除標(biāo)誌)——RECALL命令 清空表——ZAP命令修改數(shù)據(jù)記錄:互動(dòng)式修改數(shù)據(jù)記錄——BROWSE命令
非互動(dòng)式替換修改數(shù)據(jù)記錄——REPLACE命令1.插入數(shù)據(jù)記錄命令格式:INSERTINTO<dbf_name>[(<fieldname1> [,<fieldname2>,...])]
VALUES(<expr1>[,<expr2>,...])解釋:在表尾插入一條數(shù)據(jù)記錄。示例1:INSERTINTOstudent(sno,name,gender); VALUES("9503045","張麗","女")執(zhí)行INSERT插入操作後顯示結(jié)果2.刪除數(shù)據(jù)記錄數(shù)據(jù)記錄的刪除分:
——
邏輯刪除(給記錄加刪除標(biāo)誌),DELETE
——
物理刪除,PACK邏輯刪除的記錄可以恢復(fù),RECALL物理刪除的記錄不可以恢復(fù)ZAP命令執(zhí)行後數(shù)據(jù)記錄將被物理刪除,不可恢復(fù)。刪除數(shù)據(jù)記錄命令命令格式:DELETE[<scope>][FOR<expL1>][WHILE<expL2>][IN<expN2>|<expC>][NOOPTIMIZE]PACK[MEMO][DBF]RECALL[<scope>][FOR<expL1>][WHILE<expL2>][IN<expN2>|<expC>][NOOPTIMIZE]ZAP[IN<expN2>|<expC>]說(shuō)明:不指定範(fàn)圍或條件,只對(duì)當(dāng)前記錄操作; 如果表的索引檔同時(shí)打開(kāi),則PACK命令自動(dòng)重建索引;
ZAP命令等效於執(zhí)行DELETEALL命令後接著執(zhí)行PACK命令。*示例2a.DELETEFORRECNO()=21LIST
RECALLFORRECNO()=21LISTb.DELETEFORRECNO()=21LIST
PACKLIST執(zhí)行DELETE刪除操作後顯示結(jié)果a.再執(zhí)行RECALL操作後顯示結(jié)果b.再執(zhí)行PACK操作後顯示結(jié)果3.修改數(shù)據(jù)記錄命令格式:REPLACE<field1>WITH<expr1>[ADDITIVE][,<field2>WITH<expr2>[ADDITIVE]]…[<scope>][FOR<expL1>][WHILE<expL2>] [IN<expN2>|<expC>][NOOPTIMIZE]解釋:計(jì)算——替換; 每個(gè)WITH前後的字段和運(yùn)算式的類型須匹配;運(yùn)算式中不允許引用未知的變數(shù); 無(wú)範(fàn)圍和條件子句時(shí),默認(rèn)只替換當(dāng)前記錄; 適於對(duì)可計(jì)算的數(shù)據(jù)批量修改。*示例3USEstudentDISPLAYFORsno="9503045"REPLACEmajorWITH"有機(jī)化學(xué)",classWITH"951";FORsno="9503045"DISPLAYFORsno="9503045"*示例4(Salary.dbf替換修改前)*示例4USEsalaryREPLACEALL實(shí)發(fā)工資WITH基本工資+崗位工資; +津貼+獎(jiǎng)金-扣款BROWSE*示例4(Salary.dbf替換修改後)第五節(jié)表的其他操作複製檔複製表結(jié)構(gòu)檔操作設(shè)置默認(rèn)存儲(chǔ)路徑備註型、通用型數(shù)據(jù)輸入將表檔數(shù)據(jù)轉(zhuǎn)換為其他類型的檔表檔與數(shù)組數(shù)據(jù)交換設(shè)置邏輯表1.複製檔命令格式:
COPYFILE<filename1>TO<filename2>解釋:複製任何類型的檔。命令格式:
COPYTO<filename>解釋:複製當(dāng)前打開(kāi)的表檔。示例1COPYFILEstudent.dbfTOstudent2.dbfCOPYFILEstudent.cdxTOstudent2.cdxCOPYFILEstudent.fptTOstudent2.fpt COPYFILEstudent.*TOstudent2.*COPYTOA:student.dbf2.複製表結(jié)構(gòu)命令格式:COPYSTRUCTURETO<tablename> [FIELDS<fieldlist>] [[WITH]CDX|[WITH]PRODUCTION][DATABASE<dbname[NAME<tablename>]]解釋:形成一個(gè)與當(dāng)前表結(jié)構(gòu)相同的新的空表。
FIELDS子句決定原表中哪些字段被複製到新表;
WITH子句決定與原表對(duì)應(yīng)的索引檔是否被複製。示例2:COPYSTRUCTURETOstudent1; FIELDSsno,name,dno,class,majorWITHCDX3.檔操作檔改名刪除檔列檔目錄顯示文本檔內(nèi)容命令格式(P56,表2.12):
RENAME<filename1>TO<filename2> ERASE|DELETEFILE<filename> TYPE<filename> [TOPRINTER[PROMPT]|TOFILE<filename>] DIR|DIRECTORY[ON<drive>]
[[LIKE][<path>][<skel>]]
[TOPRINTER[PROMPT]|TOFILE<filename>]4.設(shè)置默認(rèn)存儲(chǔ)路徑初始進(jìn)入時(shí)的默認(rèn)存儲(chǔ)路徑:
…/vfp98/設(shè)置個(gè)人默認(rèn)存儲(chǔ)路徑:命令格式
SETDEFAULTTO<path>示例3
SETDEFAULTTO"c:\programfiles\;microsoftvisualstudio\vfp98\"5.備註型、通用型數(shù)據(jù)輸入進(jìn)入備註型、通用型數(shù)據(jù)編輯窗口:按<Ctrl+Home>或<Ctrl+PgUp>或<Ctrl+PgDn>鍵或雙擊相應(yīng)資料項(xiàng)目在通用型資料項(xiàng)目上插入多媒體數(shù)據(jù):編輯—插入對(duì)象新建—選對(duì)象類型由檔創(chuàng)建—輸入對(duì)象檔案名保存輸入數(shù)據(jù):按<Ctrl+W>鍵6.將表檔數(shù)據(jù)轉(zhuǎn)換為其他類型的檔命令格式:COPYTO<filename>
[DATABASE<dbname>[NAME<longtablename>]]
[FIELDS<fieldlist>|FIELDSLIKE<skel>
|FIELDSEXCEPT<skel>][NOOPTIMIZE][Scope][FOR<expL1>][WHILE<expL2>]
[[WITH]CDX]|[[WITH]PRODUCTION]
[[TYPE][FOXPLUS|FOX2X|DIF|MOD
|SDF|SYLK|WK1|WKS|WR1|WRK|CVS|XLS|XL5
|DELIMITED[WITHDelimiter|WITHBLANK|WITHTAB|WITHCHARACTER<delimiter>]]]
[AS<codepage>]解釋:將表檔中的數(shù)據(jù)複製到指定類型的檔中。 此命令與APPENDFROM命令對(duì)應(yīng)。示例4:
COPYTOstud1WITHCDX
形成stud1.dbf和stud1.cdx檔
COPYTOstud2FIELDSsno,name,major,class
形成stud2.dbf檔
COPYTOstud3DELIMITEDFORdno="02“
形成stud3.txt檔7.表檔數(shù)據(jù)與數(shù)組數(shù)據(jù)轉(zhuǎn)換-1命令格式:?jiǎn)蝹€(gè)記錄轉(zhuǎn)換表中記錄的數(shù)據(jù)轉(zhuǎn)換為數(shù)組或記憶體變數(shù)SCATTER[FIELDS<fieldlist>|FIELDS LIKE<skel>|FIELDSEXCEPT<skel>][MEMO]
TO<arrayname>[BLANK]|MEMVAR[BLANK]
|NAME<objectname>[BLANK]數(shù)組或記憶體變數(shù)數(shù)據(jù)轉(zhuǎn)換為表記錄GATHERFROM<arrayname>|MEMVAR |NAME<objectname>
[FIELDS<fieldlList>|FIELDSLIKE<skel>|FIELDSEXCEPT<skel>][MEMO]7.表檔數(shù)據(jù)與數(shù)組數(shù)據(jù)轉(zhuǎn)換-2命令格式:多個(gè)記錄轉(zhuǎn)換表中記錄的數(shù)據(jù)轉(zhuǎn)換為數(shù)組或記憶體變數(shù)COPYTOARRAY<arrayname>[FIELDS<fieldlist>
|FIELDSLIKE<skel>|FIELDSEXCEPT<skel>]
[<scope>][FOR<expL1>][WHILE<expL2>][NOOPTIMIZE]數(shù)組或記憶體變數(shù)數(shù)據(jù)轉(zhuǎn)換為表記錄APPENDFROMARRAY<arrayname>[FOR<expL>]
[FIELDS<fieldlist>|FIELDSLIKE<skel>
|FIELDSEXCEPT<skel>]8.設(shè)置邏輯表邏輯表的實(shí)現(xiàn):設(shè)置篩檢程式——選擇記錄,SETFILTER命令設(shè)置字段表——選擇字段,SETFIELDS命令命令格式:
SETFILTERTO[<expL>] SETFIELDSTO[<fieldlist>|ALL[LIKE<skel>|EXCEPT<skel>]] SETFIELDSON|OFF解釋:SETFIELDSON|OFF命令決定字段表是否有效,ON為有效。SETFIELDS命令為隱式增加方式;不帶參數(shù)的SETFILTERTO命令為取消篩檢程式的設(shè)置。不帶參數(shù)的SETFIELDSTO命令將封鎖對(duì)任何字段的操作。SETFIELDSTOALL命令為恢復(fù)對(duì)所有字段的操作。*示例5USEstudentSETFILTERTOdno="01"SETFIELDSTOsno,name,dno,majorSETFIELDSTOclassLIST示例6SETFIELDSTOLISTSETFIELDSTOALLEXCEPTA*,B*LISTSETFIELDSOFFLIST第三章索引與統(tǒng)計(jì)排序索引索引與查詢數(shù)據(jù)工作期窗口索引的應(yīng)用——表的關(guān)聯(lián)統(tǒng)計(jì)運(yùn)算SQL查詢資料庫(kù)與資料庫(kù)視圖第一節(jié)排序與索引關(guān)於數(shù)據(jù)記錄的順序:物理順序:在數(shù)據(jù)記錄輸入時(shí),依據(jù)記錄輸入的先後形成的順序。記錄的物理順序與數(shù)據(jù)記錄的記錄號(hào)一致。
邏輯順序:依據(jù)指定的資料項(xiàng)目對(duì)表中數(shù)據(jù)記錄排列順序。 昇冪、降序關(guān)鍵字第一節(jié)排序與索引排序和索引是依據(jù)指定的資料項(xiàng)目對(duì)表中數(shù)據(jù)記錄重新排列順序的兩種不同方式。排序:用新生成的表檔保存排序結(jié)果,原數(shù)據(jù)檔不變,新檔按新的物理順序存儲(chǔ)數(shù)據(jù)記錄。索引:用索引檔(CDX/IDX)保存排序結(jié)果,原表檔不變,借助索引檔表中數(shù)據(jù)記錄按所形成的邏輯順序被引用。索引檔中的數(shù)據(jù)是不可顯示的,並且不可以單獨(dú)使用,需與表檔同時(shí)使用。一個(gè)表檔可以對(duì)應(yīng)有多個(gè)索引。1.排序命令格式:SORTTO<tablename>
ON<fieldname1>[/A|/D][/C]
[,<fieldname2>[/A|/D][/C]...]
[ASCENDING|DESCENDING]
[<scope>][FOR<expL1][WHILE<expL2>]
[FIELDS<fieldlist>
|FIELDSLIKE<skel>|FIELDSEXCEPT<skel>]
[NOOPTIMIZE]解釋:<fieldname1>——第一排序關(guān)鍵字
<fieldname2>——第二排序關(guān)鍵字
A——昇冪,D——降序,C——區(qū)分字母大小寫*示例USEstudentSORTTOstud4ONdno/A,class/A
FIELDSsno,name,dno,major,classUSEstud4DISPLAYALL2.索引與索引檔索引是按照索引運(yùn)算式使表中的記錄有序排列的一種技術(shù),它是借助索引檔實(shí)現(xiàn)的。使用資料庫(kù)檔時(shí),如果將相關(guān)的索引檔同時(shí)打開(kāi),則資料庫(kù)的記錄即按索引運(yùn)算式值的邏輯順序顯示和操作(表中記錄的物理順序並沒(méi)有改變),而且數(shù)據(jù)變化時(shí),索引檔自動(dòng)按索引運(yùn)算式值調(diào)整。優(yōu)點(diǎn):減少數(shù)據(jù)冗餘、動(dòng)態(tài)反應(yīng)數(shù)據(jù)的邏輯順序、數(shù)據(jù)記錄快速檢索、建立表間的關(guān)聯(lián)、支持Rushmore技術(shù)、RQBE查詢和SQL查詢等高效的資料庫(kù)查詢。3.索引類型有以下幾種索引:普通索引:允許關(guān)鍵字重複;唯一索引:允許關(guān)鍵字重複,但輸出時(shí)無(wú)重複值;候選索引:不允許關(guān)鍵字重複,輸入重複值時(shí)系統(tǒng)將禁止;主索引:不允許關(guān)鍵字重複,輸入重複值時(shí)系統(tǒng)將禁止。——僅對(duì)數(shù)據(jù)庫(kù)表有效P71,表3.14.索引檔的類型有以下幾種索引檔:一般索引檔——單條目索引,擴(kuò)展名為IDX複合索引檔——多條目索引,擴(kuò)展名為CDX *結(jié)構(gòu)複合索引檔,與表檔同名壓縮索引——IDX,CDX非壓縮索引——IDX5.建立索引命令格式:INDEXON<expr>TO<IDXfilename> |TAG<tagname>[OF<CDXfilename>]
[FOR<expL>][COMPACT]
[ASCENDING|DESCENDING]
[UNIQUE|CANDIDATE][ADDITIVE]解釋:當(dāng)索引運(yùn)算式<expr>中出現(xiàn)不同類型數(shù)據(jù)時(shí),需歸一成字元型的。 多條目的複合索引檔,需對(duì)檔中的每個(gè)索引條目命名,稱為索引標(biāo)識(shí)(TAG)。*命令解析INDEXON<expr>TO<IDXfilename> [FOR<expL>][COMPACT]
[ASCENDING|DESCENDING]
[UNIQUE|CANDIDATE][ADDITIVE]INDEXON<expr>TAG<tagname>OF<CDXfilename>]
[FOR<expL>]
[ASCENDING|DESCENDING]
[UNIQUE|CANDIDATE][ADDITIVE]INDEXON<expr>TAG<tagname>
[FOR<expL>]
[ASCENDING|DESCENDING]
[UNIQUE|CANDIDATE][ADDITIVE]*示例USEstudentINDEXONsnoTAGsnoOFstudcdxINDEXONdno+classTAGdnoclassOFstudcdxDISPLAYALLINDEXONnameTAGnameOFstudcdxDISPLAYALLINDEXONsnoTOstudidxADDITIVESETORDERTOTAGsnoDISPLAYSTATUS數(shù)據(jù)類型轉(zhuǎn)換函數(shù)函數(shù)格式:STR(<expN1>[,<expN2>[,<expN3>]])功能:將數(shù)值型變數(shù)轉(zhuǎn)換成字元型變數(shù)。說(shuō)明:<expN1>被轉(zhuǎn)換變數(shù),<expN2>長(zhǎng)度,<expN3>小數(shù)位。相反函數(shù)格式:VAL(<expC>)函數(shù)格式:DTOS(<expD>)功能:將日期型變數(shù)轉(zhuǎn)換成字元型變數(shù),轉(zhuǎn)換格式為yyyymmdd。函數(shù)格式:DTOC(<expD>)功能:將日期型變數(shù)轉(zhuǎn)換成字元型變數(shù),轉(zhuǎn)換格式為mm/dd/yy。相反函數(shù)格式:CTOD(<expC>)*示例a1=123.4567a2="210.32"a3=DATE()a4="04/10/16"b1=STR(a1,6,2)b2=VAL(a2)b3=DTOS(a3)b4=DTOC(a3)b5=CTOD(a4)
DISPLAYMEMORYLIKE*6.用表設(shè)計(jì)器建立索引方法一: 在字段選項(xiàng)卡的索引列組合框中設(shè)定。方法二: 使用索引選項(xiàng)卡設(shè)定。表設(shè)計(jì)器建立的為結(jié)構(gòu)複合索引檔。7.打開(kāi)索引結(jié)構(gòu)複合索引檔隨表檔自動(dòng)打開(kāi);索引檔剛建立時(shí)是打開(kāi)的;用命令打開(kāi)。
表檔已打開(kāi),之後打開(kāi)索引檔:
SETINDEXTO命令
表檔和索引檔同時(shí)打開(kāi):
USE…INDEX…
命令7.打開(kāi)索引命令格式:SETINDEXTO[<indexfilelist>|?]
[ORDER<expN>|<IDXfilename>
|[TAG]<tagname>[OF<CDXfilename>][ASCENDING|DESCENDING]][ADDITIVE]USE[[<dbname>!]<tablename>|<SQLviewname>|?]
[IN<expN>|<expC>][ONLINE][ADMIN][AGAIN]
[NOREQUERY[nDataSessionNumber]][NODATA]
[INDEX[<indexfilelist>|?
[ORDER<expN>|<IDXfilename>
|[TAG]<tagname>[OF<CDXfilename>][ASCENDING|DESCENDING]]]]
[ALIAS<alias>][EXCLUSIVE][SHARED][NOUPDATE]8.關(guān)閉索引關(guān)閉表檔時(shí),索引檔隨之關(guān)閉;用命令關(guān)閉;結(jié)構(gòu)複合索引檔只有在表檔關(guān)閉時(shí)才自動(dòng)隨之關(guān)閉,下述命令不能關(guān)閉結(jié)構(gòu)複合索引檔。命令格式:
SETINDEXTO
只關(guān)閉當(dāng)前非結(jié)構(gòu)複合索引檔。
CLOSEINDEXES
關(guān)閉所有非結(jié)構(gòu)複合索引檔。9.指定主索引標(biāo)識(shí)主索引標(biāo)識(shí):當(dāng)前起作用的索引標(biāo)識(shí),決定當(dāng)前表中記錄的邏輯順序。方法:在打開(kāi)索引檔時(shí),用ORDER子句聲明主索引標(biāo)識(shí);用SETORDERTO命令來(lái)指定主索引標(biāo)識(shí)。9.指定主索引標(biāo)識(shí)命令格式:SETORDERTO[<expN1>|<idxfile>| [TAG]<tagname>[OF<cdxfile>] [IN<expN2>|<expC>] [ASCENDING|DESCENDING]]說(shuō)明:IDX索引:用IDX索引檔案名CDX索引:用索引標(biāo)識(shí)(TAG)物理順序:數(shù)值零,即ORDER0關(guān)於索引標(biāo)識(shí)的組織順序索引標(biāo)識(shí)的組織順序是(從1開(kāi)始編號(hào)):打開(kāi)的IDX索引檔;結(jié)構(gòu)複合索引檔中的索引標(biāo)識(shí)(TAG);打開(kāi)的非結(jié)構(gòu)複合索引檔中的索引標(biāo)識(shí)(TAG)。*在複合索引檔中,索引標(biāo)識(shí)按創(chuàng)建先後順序依次編號(hào)。*示例USEstudentORDERTAGsnoSETINDEXTOstudcdx
ORDERTAGnameSETORDERTOTAGsnoSETORDERTOTAGsnoOFstudcdxSETORDERTO010.刪除索引刪除索引檔,此時(shí)索引檔需關(guān)閉:
用ERASE命令。刪除複合索引檔中的索引標(biāo)識(shí): 命令格式:
DELETETAG<tagname1>[OF<CDXfilename1>]
<tagname2>[OF<CDXfilename2>]...或
DELETETAGALL[OF<CDXfilename>]解釋: 當(dāng)用ALL刪除複合索引檔的所有索引標(biāo)識(shí),這時(shí)索引檔也被刪除了。11.索引更新自動(dòng)更新 在索引檔打開(kāi)時(shí)用INDEX命令重新建立索引和索引檔重新索引 命令格式:
REINDEX[COMPACT]解釋: 對(duì)表檔中的數(shù)據(jù)重新索引,調(diào)整索引順序。第二節(jié)索引與查詢查詢方式:順序查詢
LOCATE/CONTINUE命令索引查詢
SEEK命令SQL查詢
SELECT-FROM-WHERE命令*SEEK命令命令格式:SEEK<expr>[ORDER<expN>|<IDXfilename>
|[TAG]<tagname>[OF<CDXfilename>][ASCENDING|DESCENDING]] [IN<expN2>|<expC>]解釋:<expr>——查詢運(yùn)算式,可以是字段,由字段構(gòu)成的運(yùn)算式,應(yīng)與建立索引時(shí)的索引運(yùn)算式對(duì)應(yīng);ORDER——指定索引檢索的主索引標(biāo)識(shí);ASCENDING|DESCENDING——指定按昇冪或降序檢索。*FOUND()函數(shù)函數(shù)格式:FOUND([<expN2>|<expC>])功能:返回SEEK命令的查詢結(jié)果。返回值類型:L解釋:查詢到滿足條件的數(shù)據(jù)記錄,返回邏輯真值;未查詢到滿足條件的數(shù)據(jù)記錄,返回邏輯假值;3.示例USEstudentINDEXstudcdxSETORDERTOsnoSEEK"9502003"?FOUND() &&.T.(8)SETORDERTOTAGdnoclassOFstudcdxSEEK"02953"?FOUND() &&.T.(16)SETORDERTOTAGnameOFstudcdxSEEK"田新"?FOUND() &&.F.第三節(jié)數(shù)據(jù)工作期
數(shù)據(jù)工作期是一個(gè)用來(lái)設(shè)置數(shù)據(jù)工作環(huán)境的交互操作窗口,它包括:
-打開(kāi)的表
-打開(kāi)的索引
-索引順序
-表間關(guān)聯(lián)
-一對(duì)多聯(lián)繫 可以用視圖檔(*.VUE)保存所設(shè)置的數(shù)據(jù)工作環(huán)境。1.工作區(qū)(1)VFP允許同時(shí)使用多個(gè)表。對(duì)於每個(gè)正在使用的表,系統(tǒng)提供了各自的工作區(qū)。一個(gè)工作區(qū)上同時(shí)只能打開(kāi)一個(gè)表,後打開(kāi)的表檔將使該工作區(qū)上先打開(kāi)的表檔自動(dòng)關(guān)閉。
VFP6.0提供了32767個(gè)工作區(qū)。工作區(qū)標(biāo)識(shí):
*數(shù)值序號(hào)1~32767*前10個(gè)工作區(qū)還可用字母A~J*表名或別名(alias)。若在工作區(qū)中打開(kāi)了表,則打開(kāi)的表名或別名亦可作為工作區(qū)的標(biāo)識(shí)。1.工作區(qū)(2)
最初進(jìn)入FoxPro時(shí),系統(tǒng)默認(rèn)為第一工作區(qū);可用SELECT命令選擇工作區(qū);最近選擇的工作區(qū)為當(dāng)前工作區(qū)。命令格式:
SELECT<expN>|<expC>解釋:<expN>——工作區(qū)編號(hào)。當(dāng)為零值時(shí),即SELECT0,系統(tǒng)將自動(dòng)從當(dāng)前未用的工作區(qū)中選取區(qū)號(hào)最低者為當(dāng)前工作區(qū)。<expC>——工作區(qū)別名,即檔案名。1.工作區(qū)(3)VFP總是默認(rèn)為對(duì)當(dāng)前工作區(qū)打開(kāi)的表操作,引用非當(dāng)前工作區(qū)的字段變數(shù)時(shí)必須在其字段名前加工作區(qū)標(biāo)識(shí),即:
<alias>.<field>
或<alias>-><field>
VFP的命令或函數(shù)中的"IN<expN>|<expC>"選項(xiàng),用來(lái)限制其操作的工作區(qū),可使命令在不改變當(dāng)前工作區(qū)的情況下,對(duì)由工作區(qū)號(hào)或工作區(qū)別名指定的非當(dāng)前工作區(qū)中打開(kāi)的表進(jìn)行操作。*示例SELECT0&&選擇工作區(qū)USEdeptORDERdno&&打開(kāi)表dept及其索引SELECT0&&選擇工作區(qū)USEstudentORDERsno
&&打開(kāi)表student及其索引SETRELATIONTOdnoINTOdept &&建立表間關(guān)聯(lián)LISTsno,name,dept.dname,dept.tele,major
&&顯示當(dāng)前和非當(dāng)前工作區(qū)指定的字段USEINdept
&&在第二工作區(qū)關(guān)閉第一工作區(qū)的表檔2.數(shù)據(jù)工作期窗口打開(kāi)數(shù)據(jù)工作期窗口 命令格式:
SET SETVIEWON
菜單方式: 窗口(W)—數(shù)據(jù)工作期(D)關(guān)閉數(shù)據(jù)工作期窗口 命令格式:
SETVIEWOFF
菜單方式:
檔(F)—關(guān)閉(O)3.視圖檔建立視圖檔 命令格式:
CREATEVIEW<filename>
菜單方式:
窗口(W)—數(shù)據(jù)工作期(D)打開(kāi)視圖檔 命令格式:
SETVIEWTO<viewfile>|?
菜單方式: 檔(F)—打開(kāi)(O)—視圖(*.VUE)4.表間關(guān)聯(lián)關(guān)聯(lián):令不同工作區(qū)的記錄指針建立一種臨時(shí)的聯(lián)動(dòng)關(guān)係,使一個(gè)表記錄指針移動(dòng)時(shí)另一個(gè)表的記錄指針隨之移動(dòng)。關(guān)聯(lián)的條件:兩個(gè)表:一個(gè)在當(dāng)前工作區(qū)打開(kāi),稱為父表;另一個(gè)稱為子表,在非當(dāng)前工作區(qū)打開(kāi),指針將隨父表聯(lián)動(dòng);兩個(gè)表有相同的字段運(yùn)算式;子表的字段運(yùn)算式上要建立索引,並打開(kāi)。關(guān)聯(lián)關(guān)係:多對(duì)一:父表有多條記錄對(duì)應(yīng)子表中的一條記錄;一對(duì)多:父表的一條記錄對(duì)應(yīng)子表中的多條記錄。表間關(guān)聯(lián)示意圖DnoDnameDlocDmgrD-01D-02D-03D-04D-05EnoEnameTitleSalaryDnoE-001D-01E-002D-01E-003D-03E-004D-02E-005D-02E-006D-03E-007NullDepartmentTableEmployeeTable表間關(guān)聯(lián)--示例*在數(shù)據(jù)工作期窗口建立關(guān)聯(lián)步驟:打開(kāi)數(shù)據(jù)工作期窗口;按《打開(kāi)》按鈕分別打開(kāi)父表和子表;在“別名”列表框中選定父表,按《關(guān)係》按鈕;在“別名”列表框中選定子表; 在“設(shè)置索引順序”窗口中確定子表的主索引標(biāo)識(shí);
在“運(yùn)算式生成器”窗口中指定父表的字段運(yùn)算式;如建立一對(duì)多聯(lián)繫,按《一對(duì)多》按鈕;流覽數(shù)據(jù)。在數(shù)據(jù)工作期窗口打開(kāi)表選定父表確定子表的主索引標(biāo)識(shí)指定父表的字段運(yùn)算式流覽結(jié)果BROWSEFIELDS;
sno,,cno,course.subject,score
創(chuàng)建一對(duì)多關(guān)係*用命令建立關(guān)聯(lián)命令格式及解釋:SETRELATIONTO[<expr1>INTO<expN1>|<expC1> [,<expr2>INTO<expN2>|<expC2>…] [ADDITIVE]] <expr>為關(guān)聯(lián)運(yùn)算式,INTO子句指定子表,ADDITIVE子句將保持已存在的關(guān)聯(lián)。
SETSKIPTO[<alias1>[,<alias2>]…]
設(shè)置一對(duì)多關(guān)係。SETRELATIONTO
取消父表和所有其他子表的關(guān)聯(lián)。SETRELATIONOFFINTO<expN>|<expC>
只取消父表和指定子表的關(guān)聯(lián)。*示例CLEARCLEARALLSETTALKOFFSELECT0USEstudentORDERTAGsnoSELECT0USEcourseORDERTAGcnoSELECT0USEscoreORDERTAGscnoSETRELATIONTOsnoINTOstudent,cnoINTOcourseBROWSEFIELDS;
sno,,cno,course.subject,scoreCLOSEDATABASESRETURN第四節(jié)統(tǒng)計(jì)運(yùn)算計(jì)數(shù)統(tǒng)計(jì)——COUNT命令求累加和——SUM命令求平均值——AVERAGE命令分類匯總統(tǒng)計(jì)——TOTAL命令綜合統(tǒng)計(jì)——CALCULATE命令1.計(jì)數(shù)統(tǒng)計(jì)命令格式:COUNT[Scope][FOR<expL1>][
溫馨提示
- 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ù)覽,若沒(méi)有圖紙預(yù)覽就沒(méi)有圖紙。
- 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ì)自己和他人造成任何形式的傷害或損失。
最新文檔
- 2025年度曹瑞與張麗離婚協(xié)議中子女撫養(yǎng)及生活費(fèi)用協(xié)議3篇
- 2025年度家禽飼料原料采購(gòu)與家禽買賣合同書(shū)3篇
- 2024版鐵塔公司基站用地租賃協(xié)議樣本一
- 2025年度醫(yī)療器械展承辦合同4篇
- 2024庭院立體綠化設(shè)計(jì)與施工合同3篇
- 2025年P(guān)VC消防管道設(shè)備采購(gòu)銷售專項(xiàng)合同3篇
- 2025年金麗麻布項(xiàng)目投資可行性研究分析報(bào)告
- 教案資源:小熊的彩虹滑梯課件公開(kāi)課教學(xué)設(shè)計(jì)資料
- 2025年安徽通 用生物系統(tǒng)有限公司招聘筆試參考題庫(kù)含答案解析
- 2025年度個(gè)人公司資產(chǎn)剝離合同范本:評(píng)估與定價(jià)策略4篇
- 細(xì)胞庫(kù)建設(shè)與標(biāo)準(zhǔn)制定-洞察分析
- 2024年國(guó)家公務(wù)員錄用考試公共基礎(chǔ)知識(shí)復(fù)習(xí)題庫(kù)2500題及答案
- DB3309T 98-2023 登步黃金瓜生產(chǎn)技術(shù)規(guī)程
- 2024年萍鄉(xiāng)衛(wèi)生職業(yè)學(xué)院?jiǎn)握新殬I(yè)技能測(cè)試題庫(kù)標(biāo)準(zhǔn)卷
- DBJ41-T 108-2011 鋼絲網(wǎng)架水泥膨脹珍珠巖夾芯板隔墻應(yīng)用技術(shù)規(guī)程
- 2025年學(xué)長(zhǎng)引領(lǐng)的讀書(shū)會(huì)定期活動(dòng)合同
- 表內(nèi)乘除法口算l練習(xí)題1200道a4打印
- 《EICC培訓(xùn)講義》課件
- 2025年四川省政府直屬事業(yè)單位招聘管理單位筆試遴選500模擬題附帶答案詳解
- 2024年物業(yè)公司服務(wù)質(zhì)量保證合同條款
- 文言文閱讀之理解實(shí)詞含義(講義)-2025年中考語(yǔ)文專項(xiàng)復(fù)習(xí)
評(píng)論
0/150
提交評(píng)論