版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進(jìn)行舉報或認(rèn)領(lǐng)
文檔簡介
VisualFoxPro程式設(shè)計
第1章資料庫系統(tǒng)概論
資料庫基本概念1.1數(shù)據(jù)模型1.2關(guān)係資料庫1.31.1資料庫基本概念
1.1.1資訊、數(shù)據(jù)與資料庫資訊(Information)是客觀世界在人們頭腦中的反映,是客觀事物的表徵,是可以傳播和加以利用的一種知識。數(shù)據(jù)(Data)是資訊的載體,是對客觀存在實體的一種記載和描述。資料庫(DataBase,簡稱DB)是指存儲在電腦外部記憶體上的、結(jié)構(gòu)化的相關(guān)數(shù)據(jù)集合。1.1.2數(shù)據(jù)管理技術(shù)的發(fā)展
1.人工管理階段2.檔管理階段3.資料庫管理階段1.1.3資料庫管理系統(tǒng)
資料庫管理系統(tǒng)(DataBaseManagementSystem,簡稱DBMS)是管理資料庫的軟體工具,是幫助用戶創(chuàng)建、維護(hù)和使用資料庫的軟體系統(tǒng)。DBMS應(yīng)具有以下一些功能。(1)數(shù)據(jù)定義功能(2)數(shù)據(jù)操作功能(3)控制和管理功能(4)數(shù)據(jù)字典功能1.1.4資料庫系統(tǒng)
1.資料庫系統(tǒng)的組成引入資料庫技術(shù)的電腦系統(tǒng)稱為資料庫系統(tǒng)(DataBaseSystem,簡稱DBS)。DBS通常包含下述5個部分。(1)電腦硬體平臺(2)資料庫集合(3)資料庫管理系統(tǒng)(4)相關(guān)軟體(5)人員2.資料庫系統(tǒng)的特點(1)數(shù)據(jù)結(jié)構(gòu)化(2)數(shù)據(jù)共用(3)數(shù)據(jù)獨立性(4)統(tǒng)一的數(shù)據(jù)控制
此外,資料庫系統(tǒng)須提供下述數(shù)據(jù)安全保護(hù)措施:安全性控制完整性控制併發(fā)操作控制1.2數(shù)據(jù)模型
資料庫中的數(shù)據(jù)是按一定邏輯結(jié)構(gòu)存放的,這種邏輯結(jié)構(gòu)是用數(shù)據(jù)模型來表示的。1.2.1實體及實體間的聯(lián)繫
客觀存在的並且可以相互區(qū)分的事物稱為實體(Entity)。實體之間的聯(lián)繫可以歸結(jié)為以下3種類型。一對一聯(lián)繫一對多聯(lián)繫多對多聯(lián)繫1.2.2主要數(shù)據(jù)模型
(1)層次模型層次模型的數(shù)據(jù)集合中,各數(shù)據(jù)對象之間是一種依次的一對一的或一對多的聯(lián)繫。層次結(jié)構(gòu)也稱為樹型結(jié)構(gòu)。
層次結(jié)構(gòu)模型的特點如下:有且僅有一個根結(jié)點,其層次最高;一個父結(jié)點向下可以有若干個子結(jié)點,而一個子結(jié)點向上只有一個父結(jié)點;同層次的結(jié)點之間沒有聯(lián)繫。(2)網(wǎng)狀模型
網(wǎng)狀結(jié)構(gòu)數(shù)據(jù)模型的各數(shù)據(jù)實體之間,是一種層次不清楚的一對一、一對多、或多對多的聯(lián)繫,此種結(jié)構(gòu)可用來表示數(shù)據(jù)間複雜的邏輯關(guān)係。網(wǎng)狀結(jié)構(gòu)模型的特點如下:一個結(jié)點可以有多個父結(jié)點;可以有一個以上的結(jié)點無父結(jié)點;兩個結(jié)點之間可以有多個聯(lián)繫。(3)關(guān)係模型
關(guān)係結(jié)構(gòu)數(shù)據(jù)模型用二維表格表示實體及實體之間的聯(lián)繫,即用若干行與若干列構(gòu)成的表格來描述數(shù)據(jù)集合以及它們之間的聯(lián)繫,這樣的一個表格被稱為一個關(guān)係。其中的每一列稱為一個字段(Field),每一行稱為一個記錄(Record)。
對於一個符合關(guān)係模型的二維數(shù)據(jù)表格,必須滿足以下條件:表中不允許有重複的字段名;表中每一列中數(shù)據(jù)的類型必須相同;表中不應(yīng)有內(nèi)容完全相同的數(shù)據(jù)行;表中行的順序或列的順序的任意排列,應(yīng)不影響表中各資料項目間的關(guān)係。1.3關(guān)係資料庫
1.3.1關(guān)係術(shù)語與關(guān)係特點1.關(guān)係術(shù)語關(guān)係:符合一定條件的一張二維表格稱為一個關(guān)係。元組:關(guān)係中的每一行數(shù)據(jù)被稱為一個元組,或者稱為一個記錄。屬性:關(guān)係中的每一列數(shù)據(jù)被稱為一個屬性,或者稱為一個字段。域:是屬性的取值範(fàn)圍,即不同元組對同一個屬性的取值所限定的範(fàn)圍。關(guān)鍵字:關(guān)係中的某個屬性或?qū)傩越M合,其值可以唯一地標(biāo)識一個元組,稱其為關(guān)鍵字。主關(guān)鍵字與候選關(guān)鍵字:如果一個關(guān)係中存在多個關(guān)鍵字,可以選定其中一個作為主關(guān)鍵字,其餘為候選關(guān)鍵字。外部關(guān)鍵字:如果關(guān)係中的某個屬性或?qū)傩越M合並非本關(guān)係的關(guān)鍵字,而是另一個關(guān)係的關(guān)鍵字,稱其為外部關(guān)鍵字。關(guān)係模式:對關(guān)係的描述稱為關(guān)係模式。一個關(guān)係模式對應(yīng)於一個關(guān)係結(jié)構(gòu),它是命名的屬性集合。其格式為:關(guān)係名(屬性名1,屬性名2,…,屬性名n)。2.關(guān)係特點
每個屬性必須是不可分隔的數(shù)據(jù)單元;在同一個關(guān)係中不能出現(xiàn)相同的屬性名;在一個關(guān)係中不允許有完全相同的元組;在一個關(guān)係中任意交換兩行的位置不影響數(shù)據(jù)的實際含義;在一個關(guān)係中任意交換兩列的位置不影響數(shù)據(jù)的實際含義。1.3.2關(guān)係運算
利用關(guān)係的選擇、投影和連接運算,可以方便地在一個或多個關(guān)係中抽取所需的各種數(shù)據(jù),建立或重組新的關(guān)係。1.選擇
從一個關(guān)係中找出滿足給定條件的元組的操作稱為選擇。選擇是從行的角度對二維表格內(nèi)容進(jìn)行的篩選,經(jīng)過選擇運算後得到的結(jié)果可以形成新的關(guān)係,其關(guān)係模式不變。2.投影
從一個關(guān)係中找出若干個屬性構(gòu)成新的關(guān)係的操作稱為投影。投影是從列的角度對表格內(nèi)容進(jìn)行的篩選或重組,經(jīng)過投影運算後得到的結(jié)果也將形成新的關(guān)係。3.連接
連接是將兩個關(guān)係中的元組按一定的條件橫向結(jié)合,拼接成一個新的關(guān)係。自然連接:利用兩個關(guān)係中共有的一個字段,將該字段值相等的記錄內(nèi)容連接起來,去掉其中的重複字段作為新關(guān)係中的一條記錄。1.3.3關(guān)係的完整性
關(guān)係的完整性是指對關(guān)係的某種約束條件,是保證關(guān)係中數(shù)據(jù)正確性的重要手段。1.實體完整性
實體完整性用來確保關(guān)係中的每個元組都是唯一的,即關(guān)係中不允許有重複的元組。2.參照完整性
參照完整性是指兩個相關(guān)聯(lián)的關(guān)係(數(shù)據(jù)表)中的相關(guān)數(shù)據(jù)是否對應(yīng)一致。2.1VisualFoxPro概述2.1.1VisualFoxPro發(fā)展概況
VisualFoxPro是Microsoft公司在FoxBASE和FoxPro基礎(chǔ)上發(fā)展起來的新一代關(guān)係型資料庫管理系統(tǒng)軟體。是性能最好、功能最強(qiáng)、最為流行的PC資料庫管理系統(tǒng)軟體之一。1995年推出VisualFoxPro3.0版;1997年推出VisualFoxPro5.0版;1998年推出VisualFoxPro6.0版;2000年推出全面支持網(wǎng)路應(yīng)用的VisualFoxPro7.0版;2003年推出VisualFoxPro8.0版,進(jìn)一步強(qiáng)化了面向?qū)ο缶幊棠芰椭С志W(wǎng)路開發(fā)的能力。2.1.2VisualFoxPro的特點1.強(qiáng)大的功能2.增強(qiáng)的資料庫管理3.增強(qiáng)的SQL語言支持4.支持面向?qū)ο蟪淌皆O(shè)計5.可視化的設(shè)計開發(fā)工具6.增強(qiáng)的OLE應(yīng)用集成7.支持網(wǎng)路應(yīng)用2.1.3VisualFoxPro用戶介面
VisualFoxPro的主窗口介面如下圖所示。1.系統(tǒng)菜單欄2.系統(tǒng)工具欄3.窗口工作區(qū)4.命令窗口5.狀態(tài)欄2.1.4VisualFoxPro工作方式1.命令執(zhí)行方式2.菜單選擇方式3.程式執(zhí)行方式2.2VisualFoxPro設(shè)計工具2.2.1嚮導(dǎo)嚮導(dǎo)是一種互動式的快速設(shè)計工具,通過一系列的對話框向用戶提示每一個操作步驟,引導(dǎo)用戶一步一步地完成某項任務(wù)。使用嚮導(dǎo)可以建立查詢、創(chuàng)建表單、編制報表等。2.2.2設(shè)計器
設(shè)計器是創(chuàng)建和修改應(yīng)用程式各種組件的可視化工具,可用來創(chuàng)建和修改資料庫、數(shù)據(jù)表、表單、報表、查詢和視圖等。2.2.3生成器
生成器通常是一些帶有選項卡的對話框,主要用來在應(yīng)用程式的構(gòu)件中創(chuàng)建和生成某種控件,還可用來幫助用戶生成一個應(yīng)用程式框架。2.3VisualFoxPro環(huán)境設(shè)置2.3.1選項對話框的使用選擇“工具”菜單下的“選項”命令,可打開“選項”對話框,其中包含一系列可供攝製的選項卡。1.“選項”對話框介面2.日期和時間格式的設(shè)置3.設(shè)置默認(rèn)工作目錄的設(shè)置2.3.2SET命令的使用
VisualFoxPro提供許多SET命令,可在命令窗口或程式中使用這些命令來臨時設(shè)置系統(tǒng)的工作環(huán)境。2.4VisualFoxPro專案管理器
專案(Project)是開發(fā)一個應(yīng)用軟體系統(tǒng)所包含的數(shù)據(jù)、程式、文檔、對象和類等各種相關(guān)檔的集合。VisualFoxPro提供了專門的專案管理器來對用戶所開發(fā)的專案進(jìn)行管理和維護(hù),使得用戶能以簡便直觀的方式組織和處理專案中所包含的各類檔。2.4.1專案管理器介面
2.4.2專案管理器的使用1.創(chuàng)建檔2.添加檔3.修改檔4.移去檔5.其他操作3.1常量與變數(shù)
常量是在操作過程中其值固定不變的數(shù)據(jù),通常是指一個具體的數(shù)據(jù)內(nèi)容。變數(shù)是一個命名的存儲空間,變數(shù)的數(shù)據(jù)類型是由其所含數(shù)據(jù)的類型決定的。變數(shù)可以用字母、漢字、數(shù)字或下劃線及它們的組合為其命名。變數(shù)名必須以字母或漢字開頭,最多不能超過10個字元,並且不能含有空格。變數(shù)可分為字段變數(shù)和記憶體變數(shù)兩大類。3.1.1常量1.字元型常量簡稱C型常量,是用半角的單引號、雙引號或方括號等定界符括起來的一串字元,又稱為字串(String)。2.?dāng)?shù)值型常量簡稱N型常量,也即常數(shù)。N型常量可以是由阿拉伯?dāng)?shù)字、小數(shù)點和正負(fù)號構(gòu)成的各種整數(shù)、小數(shù)或?qū)崝?shù)。3.貨幣型常量簡稱Y型常量,是由符號“$”開頭的一個表示貨幣量的數(shù)字。4.日期型常量簡稱D型常量,用來表示一個具體的日期。默認(rèn)格式為:{^yyyy-mm-dd}或{^yyyy/mm/dd}。5.日期時間型常量簡稱T型常量,用來表示一個具體的日期與時間。默認(rèn)格式為:{^yyyy-mm-dd,[hh[:mm[:ss]][a|p]]}。6.邏輯型常量簡稱L型常量,常用來表示某個條件成立與否。L型常量只有邏輯真與邏輯假兩個值,邏輯真值通用.T.表示,邏輯假值用.F.表示。3.1.2字段變數(shù)
在創(chuàng)建數(shù)據(jù)表時定義的一個字段對應(yīng)一個字段變數(shù),數(shù)據(jù)表中的字段名即其字段變數(shù)名。字段變數(shù)除字元型、數(shù)值型、貨幣型、日期型、日期時間型和邏輯型之外,還有備註(M)型和通用(G)型等幾種類型。3.1.3記憶體變數(shù)
記憶體變數(shù)是獨立於數(shù)據(jù)表而存在的臨時工作變數(shù),用來存放數(shù)據(jù)處理過程中的一些中間結(jié)果和最終結(jié)果數(shù)據(jù)、並在程式中充當(dāng)迴圈變數(shù)和其他工作變數(shù)等。1.記憶體變數(shù)的創(chuàng)建與賦值
格式1:STORE<運算式>TO<記憶體變數(shù)表>格式2:<記憶體變數(shù)>=<運算式>說明:以上兩條命令的功能都是將指定運算式的計算結(jié)果值賦給指定的記憶體變數(shù),所不同的是前者允許把同一個運算式的值賦給多個變數(shù),而後者只能給單個變數(shù)賦值。2.記憶體變數(shù)的保存與恢復(fù)(1)記憶體變數(shù)的保存格式:SAVETO<記憶體變數(shù)檔案名>[ALLLIKE|ALLEXCEPT<通配符>](2)記憶體變數(shù)的恢復(fù)格式:RESTOREFROM<記憶體變數(shù)檔案名>[ADDITIVE]3.記憶體變數(shù)的顯示與釋放(1)記憶體變數(shù)的顯示格式:LIST/DISPLAYMEMORY[LIKE<通配符>](2)記憶體變數(shù)的釋放格式1:RELEASE<記憶體變數(shù)名表>格式2:RELEASEALL[LIKE<通配符>|EXCEPT<通配符>]3.2運算符與運算式
運算式是將常量、變數(shù)、函數(shù)等數(shù)據(jù)用運算符按一定規(guī)則連接起來的一個有意義的式子。作為特例,可以將單個的常量、變數(shù)或函數(shù)看成是一個運算式。根據(jù)運算式運算後得到的結(jié)果值的數(shù)據(jù)類型來劃分,可將運算式分為數(shù)值運算式、字元運算式、日期運算式和邏輯運算式。3.2.1數(shù)值運算式
數(shù)值運算式簡稱expN,是由算術(shù)運算符將各類數(shù)值型數(shù)據(jù)連接而成的式子。各種算術(shù)運算符,按其運算的優(yōu)先順序別由高到低排列如下所示。() 括弧內(nèi)的運算最優(yōu)先^或** 乘方運算*、/、% 乘、除、求餘運算+、- 加、減運算3.2.2字元運算式
字元運算式簡稱expC,是由字元運算符將各類C型數(shù)據(jù)連接而成的式子。字元運算符有以下兩種:+ 兩字串相連。- 兩字串相連,並將前串的尾部空格移至結(jié)果字串尾部。3.2.3日期運算式
日期運算式簡稱expD,是運算結(jié)果為某個具體日期的式子。屬於日期運算式的一般有以下幾種情況:①某一個日期常量,如:{^2002/05/18}②系統(tǒng)的日期函數(shù):DATE()③類型轉(zhuǎn)換函數(shù):CTOD("mm/dd/yy")④一個日期型數(shù)據(jù)加上或減去一個N型數(shù)據(jù)。⑤當(dāng)前打開數(shù)據(jù)表中的日期型字段變數(shù)。3.2.4邏輯運算式
邏輯運算式簡稱expL,是運算結(jié)果為邏輯真值或邏輯假值的式子,包括關(guān)係運算式和邏輯運算式。1.關(guān)係運算式
關(guān)係運算式是用關(guān)係運算符把兩個相同類型的數(shù)據(jù)連接起來的式子。各種關(guān)係運算符如下所示。> 大於< 小於= 等於<>、!=、# 不等於>= 大於等於<= 小於等於== 字串精確匹配$ 左側(cè)字串是否被包含在右側(cè)字串中2.邏輯運算式
邏輯運算式是用邏輯運算符將L型數(shù)據(jù)連接起來的式子,邏輯運算只能在L型數(shù)據(jù)間進(jìn)行,其運算結(jié)果依然是L型數(shù)據(jù)。各種邏輯運算符按其運算優(yōu)先順序從高到低排列如下:() 括弧NOT或! 邏輯非AND 邏輯與OR 邏輯或3.2.5運算式書寫規(guī)則
每個字元應(yīng)占同樣大小的一個字元位,所有字元都應(yīng)並排地寫在同一水準(zhǔn)上;數(shù)值運算式中有相乘關(guān)係的地方,一律採用“*”號表示,不能省略;在需要括弧的地方,一律採用圓括號“()”,且左右括弧必須配對;不得使用羅馬字元、希臘字元等非英文字元;變數(shù)名與函數(shù)名中的字母可以大寫也可以小寫,其效果是相同的;邏輯運算符NOT、AND、OR的前後應(yīng)加圓點(小數(shù)點)或空格與其他內(nèi)容分開;3.2.6運算式輸出命令
格式1:?[<運算式表>]功能:計算<運算式表>中各運算式的值,並在下一行開始輸出計算結(jié)果。格式2:??[<運算式表>]功能:計算<運算式表>中各運算式的值,並在當(dāng)前行當(dāng)前列開始輸出計算結(jié)果。3.3常用函數(shù)
函數(shù)(Function)不僅是VisualFoxPro的一種數(shù)據(jù)元素,而且是一種廣為採用的數(shù)據(jù)處理手段,每一種函數(shù)都代表了一種特定的數(shù)據(jù)操作功能。3.3.1數(shù)學(xué)運算函數(shù)
1.絕對值函數(shù)格式:ABS(<expN>)功能:求<expN>的絕對值。2.取整數(shù)函數(shù)格式:INT(<expN>)功能:取<expN>的整數(shù)部分。3.平方根函數(shù)格式:SQRT(<expN>)功能:求<expN>的平方根。<expN>的值須大於等於零。4.四捨五入函數(shù)格式:ROUND(<expN1>,<expN2>)功能:對<expN1>四捨五入到由<expN2>指定的小數(shù)位數(shù)。5.求餘數(shù)函數(shù)格式:MOD(<expN1>,<expN2>)功能:求<expN1>除以<expN2>的餘數(shù)。6.求最大值函數(shù)格式:MAX(<expN1>,<expN2>|<expD1>,<expD2>)功能:取兩個數(shù)據(jù)中的較大者。7.求最小值函數(shù)格式:MIN(<expN1>,<expN2>|<expD1>,<expD2>)功能:取兩個數(shù)據(jù)中的較小者。3.3.2字元處理函數(shù)
1.宏代換函數(shù)格式:&<字元型記憶體變數(shù)>功能:代換字元型記憶體變數(shù)的內(nèi)容。2.子串搜索函數(shù)格式:AT(<expC1>,<expC2>)功能:返回<expC1>在<expC2>中存在的起始位置值,不存在時則返回零值。3.求字串長度函數(shù)格式:LEN(<expC>)功能:返回<expC>中包含字元的個數(shù)。4.取子串函數(shù)格式:SUBSTR(<expC>,<expN1>[,<expN2>])功能:截取<expC>中第<expN1>個字元開始的共<expN2>個字元;缺省<expN2>時,為第<expN1>個字元開始的所有字元。5.取左子串函數(shù)格式:LEFT(<expC>,<expN>)功能:截取<expC>左面的<expN>個字元。6.取右子串函數(shù)格式:RIGHT(<expC>,<expN>)功能:截取<expC>右面的<expN>個字元。7.刪除尾部空格函數(shù)格式:TRIM(<expC>)功能:刪除<expC>的尾部空格。8.刪除左端空格函數(shù)格式:LTRIM(<expC>)功能:刪除<expC>的左端空格。9.刪除兩端空格函數(shù)格式:ALLTRIM(<expC>)功能:刪除<expC>前後端的空格。10.生成空格字串函數(shù)格式:SPACE(<expN>)功能:產(chǎn)生<expN>個空格字元。11.小寫轉(zhuǎn)換為大寫函數(shù)格式:UPPER(<expC>)功能:將<expC>中的小寫字母轉(zhuǎn)換成大寫字母。12.大寫轉(zhuǎn)換為小寫函數(shù)格式:LOWER(<expC>)功能:將<expC>中的大寫字母轉(zhuǎn)換成小寫字母。3.3.3日期時間函數(shù)
1.系統(tǒng)日期函數(shù)格式:DATE()功能:返回當(dāng)前系統(tǒng)日期。2.系統(tǒng)時間函數(shù)格式:TIME()功能:返回當(dāng)前系統(tǒng)時間。3.取年份函數(shù)格式:YEAR(<expD>)功能:返回<expD>中的年份數(shù)(用四位整數(shù)表示)。4.取月份函數(shù)格式:MONTH(<expD>)功能:返回<expD>中的月份數(shù)。5.取日子函數(shù)格式:DAY(<expD>)功能:返回<expD>中的日期號數(shù)。6.取星期函數(shù)格式:DOW(<expD>)功能:返回<expD>是星期幾。3.3.4轉(zhuǎn)換函數(shù)
1.字串轉(zhuǎn)換為ASCII碼函數(shù)格式:ASC(<expC>)功能:返回<expC>中首字元的ASCII碼值。2.ASCII碼轉(zhuǎn)換為字串函數(shù)格式:CHR(<expN>)功能:返回ASCII碼值為<expN>的對應(yīng)字元或控制碼。3.數(shù)值轉(zhuǎn)換為字串函數(shù)格式:STR(<expN1>[,<expN2>[,<expN3>]])功能:將<expN1>轉(zhuǎn)換成字串。4.字串轉(zhuǎn)換為數(shù)值函數(shù)格式:VAL(<expC>)功能:將數(shù)碼、正負(fù)號、小數(shù)點構(gòu)成的數(shù)值形式的C型數(shù)據(jù)轉(zhuǎn)換成N型數(shù)據(jù)。5.字串轉(zhuǎn)換為日期函數(shù)格式:CTOD(<expC>)功能:將日期形式的C型數(shù)據(jù)轉(zhuǎn)換成D型數(shù)據(jù)。6.日期轉(zhuǎn)換為字串函數(shù)格式:DTOC(<expD>)功能:將D型數(shù)據(jù)轉(zhuǎn)換成C型數(shù)據(jù)。3.3.5測試函數(shù)
1.數(shù)據(jù)類型測試函數(shù)格式:TYPE('<expr>')功能:返回運算式<expr>的數(shù)據(jù)類型。2.表首測試函數(shù)格式:BOF()功能:測試當(dāng)前記錄指針是否指向數(shù)據(jù)表首記錄前的開始標(biāo)誌。3.表尾測試函數(shù)格式:EOF()功能:測試當(dāng)前記錄指針是否指向數(shù)據(jù)表末記錄後的結(jié)束標(biāo)誌。4.當(dāng)前記錄號測試函數(shù)格式:RECNO()功能:返回當(dāng)前記錄的記錄號。5.記錄刪除測試函數(shù)格式:DELETED()功能:測試當(dāng)前記錄是否有刪除標(biāo)誌。6.查詢測試函數(shù)格式:FOUND()功能:測試當(dāng)前查詢是否成功。7.字段個數(shù)測試函數(shù)格式:FCOUNT()功能:返回當(dāng)前數(shù)據(jù)表的字段個數(shù)。8.記錄個數(shù)測試函數(shù)格式:RECCOUNT()功能:返回當(dāng)前數(shù)據(jù)表的記錄個數(shù)。9.條件測試函數(shù)格式:IIF(<expL>,<expr1>,<expr2>)功能:<expL>為真時取<expr1>之值,否則取<expr2>之值。<expr1>與<expr2>的數(shù)據(jù)類型可以不同。3.4命令格式
3.4.1命令結(jié)構(gòu)
VisualFoxPro的許多命令與數(shù)據(jù)表操作有關(guān),這些命令大多具有以下命令結(jié)構(gòu):<命令動詞>[<範(fàn)圍>][FOR<條件>][WHILE<條件>][FIELDS<字段表>]1.命令動詞2.範(fàn)圍短語用來限定該命令處理的數(shù)據(jù)表記錄範(fàn)圍,允許有以下四種選擇:ALL 對當(dāng)前數(shù)據(jù)表中的所有記錄。NEXT<expN> 對自當(dāng)前記錄開始的<expN>條記錄。RECORD<expN> 僅對第<expN>條記錄。REST 對自當(dāng)前記錄開始的所有記錄。3.條件短語用來限制僅對符合指定條件的記錄進(jìn)行操作??捎珊戏ǖ倪壿嬤\算式充當(dāng)<條件>。FOR<條件>與WHILE<條件>的區(qū)別在於:前者表示對指定範(fàn)圍內(nèi)所有符合條件的記錄進(jìn)行處理;後者則由當(dāng)前記錄開始順序?qū)τ涗洶礂l件進(jìn)行比較,一旦遇到不符合的記錄就結(jié)束本命令的執(zhí)行。4.FIELDS短語用來限制僅對指定的若干個字段進(jìn)行操作。缺省時默認(rèn)為對當(dāng)前數(shù)據(jù)表中的所有字段進(jìn)行操作,但不包括備註型字段和通用型字段。3.4.2命令書寫規(guī)則
各種命令均應(yīng)以命令動詞開頭,其後各短語的順序可以任意。用一個或多個空格來分隔命令中的各單詞短語;在<字段表>的各個字段名之間、在<運算式表>的各運算式之間則需要用逗號分開。命令中的字母可以大寫、小寫或大小寫混合使用。
數(shù)據(jù)表分為自由表和數(shù)據(jù)庫表兩種。自由表是指單獨存在的,未包含在任何資料庫中的表;資料庫表則是從屬於某個資料庫的數(shù)據(jù)表,並且通常還與該資料庫中的其他數(shù)據(jù)表有一定的聯(lián)繫。4.1數(shù)據(jù)表的建立
4.1.1表結(jié)構(gòu)的建立與修改1.表結(jié)構(gòu)的建立(1)字段名(2)字段類型(3)字段寬度(4)NALL值2.表結(jié)構(gòu)的修改
(1)修改字段屬性(2)插入字段(3)刪除字段(4)調(diào)整字段位置4.1.2表記錄數(shù)據(jù)的輸入1.一般字段的輸入2.備註字段的輸入3.通用字段的輸入4.1.3表數(shù)據(jù)的流覽與維護(hù)
1.數(shù)據(jù)表的打開2.兩種流覽方式3.在流覽窗口添加與刪除記錄4.2數(shù)據(jù)表操作命令
4.2.1創(chuàng)建數(shù)據(jù)表命令1.創(chuàng)建表結(jié)構(gòu)命令格式:CREATE[<表檔案名>/?]功能:新建一個VisualFoxPro數(shù)據(jù)表。2.打開數(shù)據(jù)表命令
格式:USE[<表檔案名>]功能:打開指定的數(shù)據(jù)表或關(guān)閉數(shù)據(jù)表。3.關(guān)閉數(shù)據(jù)表命令
格式1:CLOSEDATABASES格式2:CLOSEALL格式3:CLEARALL格式4:QUIT4.顯示表結(jié)構(gòu)命令格式1:LISTSTRUCTURE格式2:DISPLAYSTRUCTURE5.修改表結(jié)構(gòu)命令
格式:MODIFYSTRUCTURE功能:打開“表設(shè)計器”窗口,顯示並修改當(dāng)前數(shù)據(jù)表的結(jié)構(gòu)。6.複製表結(jié)構(gòu)命令
格式:COPYSTRUCTURETO<表檔案名>[FIELDS<字段表>]功能:對當(dāng)前數(shù)據(jù)表結(jié)構(gòu)進(jìn)行複製,形成一個指定名稱的新表結(jié)構(gòu)。7.複製數(shù)據(jù)表命令格式:COPYTO<表檔案名>[<範(fàn)圍>][FOR<條件>][WHILE<條件>] [FIELDS<字段表>][TYPE<檔類型>]功能:對當(dāng)前數(shù)據(jù)表中指定範(fàn)圍內(nèi)符合條件的記錄進(jìn)行複製,形成一個指定名稱的新數(shù)據(jù)表。4.2.2追加與插入記錄命令
1.追加記錄命令格式:APPEND[BLANK]功能:在當(dāng)前數(shù)據(jù)表的末尾增加新記錄。2.從其他表追加記錄命令
格式:APPENDFROM<表檔案名>[<範(fàn)圍>][FOR<條件>][WHILE<條件>] [FIELDS<當(dāng)前表字段表>]功能:將指定表檔中指定範(fàn)圍內(nèi)符合條件的記錄自動添加到當(dāng)前數(shù)據(jù)表的末尾。3.插入記錄命令
格式:INSERT[BLANK][BEFORE]功能:在當(dāng)前數(shù)據(jù)表指定的位置上插入一條新記錄。4.2.3記錄指針移動命令1.記錄指針的絕對移動格式1:GO[TO]<expN>功能:將記錄指針移到第<expN>條記錄。格式2:GO[TO]TOP功能:將記錄指針移到當(dāng)前表的第一條記錄。格式3:GO[TO]BOTTOM功能:將記錄指針移到當(dāng)前表最後一條記錄。2.記錄指針的相對移動格式:SKIP[<expN>]功能:相對於當(dāng)前記錄,記錄指針向上或向下移動若干條記錄。說明:當(dāng)<expN>的值為正數(shù)時,向下移動<expN>條記錄;當(dāng)<expN>的值負(fù)數(shù)時,向上移動<expN>條記錄;缺省<expN>時,默認(rèn)向下移動一條記錄。4.2.4顯示記錄命令
格式1:LIST[<範(fàn)圍>][FOR<條件>][WHILE<條件>][[FIELDS]<運算式表>] [OFF][TOPRINT]格式2:DISPLAY[<範(fàn)圍>][FOR<條件>][WHILE<條件>][[FIELDS]<運算式表>] [OFF][TOPRINT]功能:輸出指定範(fàn)圍內(nèi)滿足條件的各個記錄的有關(guān)內(nèi)容。4.2.5刪除記錄命令
1.邏輯刪除記錄命令格式:DELETE[<範(fàn)圍>][FOR<條件>][WHILE<條件>]功能:對指定範(fàn)圍內(nèi)滿足條件的記錄打上刪除標(biāo)誌。2.去除刪除標(biāo)誌命令
格式:RECALL[<範(fàn)圍>][FOR<條件>][WHILE<條件>]功能:去除指定範(fàn)圍內(nèi)滿足條件的記錄已有的刪除標(biāo)誌。3.物理刪除記錄命令
格式:PACK功能:對當(dāng)前數(shù)據(jù)表進(jìn)行壓縮,剔除帶有刪除標(biāo)誌的記錄。4.一次性刪除全部記錄命令
格式:ZAP功能:刪除當(dāng)前數(shù)據(jù)表中的所有記錄,使其成為只剩有表結(jié)構(gòu)的空表檔。4.2.6修改記錄命令
1.編輯修改命令格式1:EDIT[<範(fàn)圍>][FOR<條件>][WHILE<條件>][FIELDS<字段表>]格式2:CHANGE[<範(fàn)圍>][FOR<條件>][WHILE<條件>][FIELDS<字段表>]功能:彈出編輯窗口對記錄進(jìn)行修改。2.流覽修改命令格式:BROWSE[FIELDS<字段表>][LOCK<expN>][FREEZE<字段名>]功能:以流覽窗口方式顯示當(dāng)前數(shù)據(jù)表數(shù)據(jù)並供用戶進(jìn)行修改。3.成批替換修改命令格式:REPLACE[<範(fàn)圍>][FOR<條件>][WHILE<條件>]<字段1>WITH<運算式1> [,<字段2>WITH<運算式2>...]功能:對指定範(fàn)圍內(nèi)符合條件的記錄,用指定的<運算式>值替換指定<字段>的內(nèi)容。4.3數(shù)據(jù)表的排序與索引
4.3.1物理排序格式:SORTON<字段1>[/A][/C][/D][,<字段2>[/A][/C][/D]...]TO<檔案名> [<範(fàn)圍>][FOR<條件>][WHILE<條件>][FIELDS<字段表>]功能:對指定範(fàn)圍內(nèi)滿足條件的記錄按指定<字段>之值的大小重新排序後生成一個給定名稱的新數(shù)據(jù)表檔。4.3.2索引類型
1.索引檔的類型單索引檔:擴(kuò)展名為.IDX,只包含一個索引項。複合索引檔:擴(kuò)展名為.CDX,可以包含多個索引項並以壓縮方式存儲。結(jié)構(gòu)複合索引檔:與數(shù)據(jù)表同名的.CDX檔,隨數(shù)據(jù)表的打開而打開。非結(jié)構(gòu)複合索引檔:與數(shù)據(jù)表不同名的.CDX檔,需要用專門命令打開。2.索引項的類型(1)主索引(2)候選索引(3)普通索引(4)唯一索引4.3.3索引檔的建立
1.在表設(shè)計器中建立索引2.用命令建立索引格式1:INDEXON<關(guān)鍵字運算式>TO<單索引檔案名>[FOR<條件>][COMPACT][UNIQUE|CANDIDATE][ASCENDING|DECENDING][ADDITIVE]格式2:INDEXON<關(guān)鍵字運算式>TAG<索引標(biāo)識名>[OF<索引檔案名>][FOR<條件>][UNIQUE|CANDIDATE][ASCENDING|DECENDING][ADDITIVE]功能:命令格式1是對當(dāng)前數(shù)據(jù)表中記錄按<關(guān)鍵字運算式>值的大小排列,建立一個單索引檔。命令格式2是對當(dāng)前數(shù)據(jù)表中記錄按<關(guān)鍵字運算式>值的大小排列,建立一個複合索引檔中的索引標(biāo)識。4.3.4索引檔的打開與關(guān)閉
1.索引檔的打開格式1:USE<數(shù)據(jù)表檔案名>INDEX<索引檔案名表>功能:在打開指定數(shù)據(jù)表的同時,打開與之相關(guān)的一系列索引檔。格式2:SETINDEXTO<索引檔案名表>功能:在數(shù)據(jù)表已打開的情況下,打開與之相關(guān)的一系列索引檔。2.指定主控索引項格式1:SETORDERTO[<expN>][ASCENDING|DECENDING]格式2:SETORDERTO[<單索引檔案名>][ASCENDING|DECENDING]格式3:SETORDERTO[[TAG]<索引標(biāo)識名>][ASCENDING|DECENDING]功能:指定主控索引檔或主控標(biāo)識。3.索引項起作用時記錄指針的移動
在數(shù)據(jù)表和相關(guān)的若干個索引檔打開的情況下,當(dāng)某個索引項起作用時,記錄指針實際上是在該索引項對應(yīng)的索引表上進(jìn)行移動,但當(dāng)明確指定移動到某號記錄時例外。4.索引檔的關(guān)閉
格式1:CLOSEINDEXES格式2:SETINDEXTO功能:關(guān)閉當(dāng)前工作區(qū)內(nèi)除了結(jié)構(gòu)複合索引檔之外的所有索引檔。5.索引檔的更新格式:REINDEX4.4數(shù)據(jù)表的查詢與統(tǒng)計4.4.1數(shù)據(jù)表的查詢1.條件查詢命令格式:LOCATE[<範(fàn)圍>]FOR<條件>功能:查找符合指定條件的第一條記錄,並將記錄指針指向該記錄。格式:CONTINUE功能:按最近一次LOCATE命令的條件在後續(xù)記錄中繼續(xù)查找。2.常量查詢命令
格式:FIND<字串>/<常數(shù)>功能:快速查找索引關(guān)鍵字值和所指定的<字串>或<常數(shù)>相匹配的首記錄。3.運算式查詢命令格式:SEEK<運算式>功能:快速查找索引關(guān)鍵字值與指定<運算式>值相符的記錄。4.4.2數(shù)據(jù)表的統(tǒng)計
1.多記錄求和命令格式:SUM[<運算式表>][<範(fàn)圍>][FOR<條件>][WHILE<條件>] [TO<記憶體變數(shù)表>]功能:對指定範(fàn)圍內(nèi)滿足條件的記錄計算其指定的各個運算式值的和。2.多記錄求平均命令
格式:AVERAGE[<運算式表>][<範(fàn)圍>][FOR<條件>][WHILE<條件>] [TO<記憶體變數(shù)表>]功能:對指定範(fàn)圍內(nèi)滿足條件的記錄計算其指定的各個運算式值的平均值。3.記錄個數(shù)統(tǒng)計命令
格式:COUNT[<範(fàn)圍>][FOR<條件>][WHILE<條件>][TO<記憶體變數(shù)>]功能:統(tǒng)計指定範(fàn)圍內(nèi)滿足條件的記錄個數(shù)。4.專用計算命令
格式:CALCULATE<運算式表>[<範(fàn)圍>][FOR<條件>][WHILE<條件>] [TO<記憶體變數(shù)表>]功能:對指定範(fàn)圍內(nèi)滿足條件的記錄分別計算指定的各個運算式的值。5.記錄分類求和命令
格式:TOTALON<關(guān)鍵字>TO<檔案名>[<範(fàn)圍>][FOR<條件>][WHILE<條件>] [FIELDS<字段表>]功能:對當(dāng)前數(shù)據(jù)表中指定的數(shù)值型字段進(jìn)行分類求和,並形成匯總數(shù)據(jù)表。4.5數(shù)據(jù)表之間的操作4.5.1工作區(qū)的選擇1.工作區(qū)選擇命令格式:SELECT<工作區(qū)號/別名>功能:選擇某個記憶體工作區(qū)作為當(dāng)前工作區(qū)。2.多工作區(qū)操作規(guī)則
①每個工作區(qū)只能打開一個表檔,每一時刻只能選擇一個工作區(qū)進(jìn)行操作。②同一數(shù)據(jù)表檔不能同時在多個工作區(qū)中打開。③當(dāng)前選擇的工作區(qū)稱為主工作區(qū),在其內(nèi)打開的數(shù)據(jù)表為主表;其他工作區(qū)稱為別名工作區(qū),在其內(nèi)打開的數(shù)據(jù)表被稱為別名表。系統(tǒng)啟動後自動選擇1號工作區(qū)為主工作區(qū)。④各工作區(qū)中打開的數(shù)據(jù)表都有各自的記錄指針,若各表之間未建立邏輯關(guān)聯(lián)時,則對主工作區(qū)進(jìn)行的各種操作都不影響其他工作區(qū)中數(shù)據(jù)表記錄指針的位置。⑤若要訪問其他工作區(qū)中數(shù)據(jù)表的某個字段時,需要用“別名.字段名”或“別名->字段名”的格式來指定。4.5.2表間的數(shù)據(jù)更新
格式:UPDATEON<關(guān)鍵字段名>FROM<工作區(qū)號/別名>REPLACE<字段1> WITH<運算式1>[,<字段2>WITH<運算式2>,...][RANDOM]功能:當(dāng)<別名>表中記錄的關(guān)鍵字段值與當(dāng)前表中記錄的關(guān)鍵字段值匹配時,用所指定的運算式的值來替換當(dāng)前表中匹配記錄指定字段的值。4.5.3表間的物理連接
格式:JOINWITH<工作區(qū)號/別名>TO<表檔案名>FOR<連接條件> [FIELDS<字段表>]功能:把主表檔與<別名>表檔中符合條件的對應(yīng)記錄,按<字段表>給定的字段順序橫向連接起來,生成一個新數(shù)據(jù)表。5.1資料庫的創(chuàng)建與維護(hù)
5.1.1資料庫的創(chuàng)建1.菜單方式創(chuàng)建資料庫執(zhí)行“檔/新建/資料庫/新建檔”菜單命令。2.命令方式創(chuàng)建資料庫格式:CREATEDATABASE<資料庫名>功能:創(chuàng)建一個指定名稱的資料庫檔。3.用項目管理器創(chuàng)建資料庫5.1.2資料庫的打開與維護(hù)
1.打開資料庫命令格式:OPENDATABASE<資料庫名>功能:打開指定名稱的資料庫檔。2.關(guān)閉資料庫命令格式1:CLOSEDATABASES功能:關(guān)閉所有打開的資料庫和數(shù)據(jù)表。格式2:CLOSEALL功能:關(guān)閉所有打開的資料庫和數(shù)據(jù)表,同時關(guān)閉除主窗口外的各種窗口。3.修改資料庫命令
格式MODIFYDATABASE<資料庫名>功能:打開“資料庫設(shè)計器”窗口,在其中顯示指定的資料庫內(nèi)容供修改。4.刪除資料庫命令
格式:DELETEDATABASE<資料庫名>[DELETETABLES]功能:刪除指定名稱的資料庫檔。5.1.3資料庫中表的組織
1.在資料庫中建立新表在資料庫打開的情況下,用各種方式新建的數(shù)據(jù)表均將自動成為當(dāng)前資料庫中的數(shù)據(jù)表。2.向資料庫中添加表(1)用命令方式向資料庫中添加表(2)用菜單方式向資料庫中添加表3.從資料庫中移去表
(1)用命令方式從資料庫中移去表(2)用菜單介面方式從資料庫中移去表5.2資料庫表的設(shè)置5.2.1長表名與長字段名可為數(shù)據(jù)庫表指定一個不超過128個字元的長表名,可以為數(shù)據(jù)庫表中的字段指定一個不超過128個字元的字段名,以便更清楚地表達(dá)表或字段的含義。5.2.2設(shè)置字段屬性1.設(shè)置格式2.設(shè)置輸入掩碼3.設(shè)置標(biāo)題4.設(shè)置字段有效性5.2.3設(shè)置記錄規(guī)則1.記錄有效性的概念2.觸發(fā)器的概念及其設(shè)置(1)“插入觸發(fā)器”(2)“更新觸發(fā)器”(3)“刪除觸發(fā)器”5.3表間關(guān)係與參照完整性
5.3.1建立關(guān)係前的準(zhǔn)備資料庫表之間的永久關(guān)係可分為兩種:一對一關(guān)係和一對多關(guān)係。在創(chuàng)建永久關(guān)係之前,要建立關(guān)係的兩個表需要有一些公共字段以及依據(jù)這些字段建立的有關(guān)索引。VisualFoxPro規(guī)定:如果要建立一對一的關(guān)係,發(fā)出關(guān)聯(lián)的主表和被關(guān)聯(lián)的子表的相同字段都必須建立主索引或者候選索引;如果要建立一對多的關(guān)係,則發(fā)出關(guān)聯(lián)的主表(一方)必須建立主索引或者候選索引,而被關(guān)聯(lián)的子表(多方)必須建立普通索引或者唯一索引。5.3.2創(chuàng)建永久關(guān)係
在打開的“資料庫設(shè)計器”窗口中建立永久關(guān)係,只要在資料庫的數(shù)據(jù)表之間用滑鼠進(jìn)行連線即可,即用滑鼠從一個資料庫表的主索引或候選索引拖動到另一個資料庫表的一個對應(yīng)的任意索引上。5.3.3設(shè)置參照完整性
1.參照完整性的概念參照完整性(ReferentialIntegrity)簡稱RI,設(shè)置RI就是建立一組相關(guān)數(shù)據(jù)表之間的規(guī)則,當(dāng)用戶插入、更新或刪除表中記錄時,可保證各相關(guān)表之間數(shù)據(jù)的完整性。2.參照完整性的設(shè)置
通??捎肰isualFoxPro的“參照完整性生成器”來設(shè)置表之間的參照完整性。(1)更新規(guī)則的設(shè)置(2)刪除規(guī)則的設(shè)置(3)插入規(guī)則的設(shè)置5.4查詢的建立與運行5.4.1查詢設(shè)計器使用舉例5.4.2查詢設(shè)計器的介面
1.上部窗格2.字段選項卡3.聯(lián)接選項卡4.篩選選項卡5.排序依據(jù)選項卡6.分組依據(jù)選項卡7.雜項選項卡5.4.3查詢菜單的使用1.查看SQL
2.查詢?nèi)ハ?.5視圖的建立與維護(hù)
5.5.1視圖的概念視圖是在資料庫表的基礎(chǔ)上創(chuàng)建的一種虛擬表。視圖中的數(shù)據(jù)是按照用戶指定的條件從已有的資料庫表或其他視圖中抽取而來,這些數(shù)據(jù)在資料庫中並不另加存儲,而是僅在該資料庫中存儲這個視圖的定義。某個視圖一旦被定義,就成為資料庫中的一個組成部分,具有與普通資料庫表類似的功能,可以像資料庫表一樣地接受用戶的訪問。並可以通過視圖來更新數(shù)據(jù)源中的數(shù)據(jù)。視圖有本地視圖與遠(yuǎn)程視圖之分。5.5.2視圖的創(chuàng)建
1.用視圖設(shè)計器創(chuàng)建視圖2.用命令方式創(chuàng)建視圖格式:CREATESQLVIEW<視圖名>[REMOTE][CONNECTION<新建聯(lián)接名>] AS<SELECT-SQL命令>功能:按照AS<SELECT-SQL命令>規(guī)定的要求,創(chuàng)建一個指定名稱的本地視圖或遠(yuǎn)程視圖。5.5.3視圖與數(shù)據(jù)更新
為了能夠通過視圖更新源數(shù)據(jù)表中的數(shù)據(jù),需要在“視圖設(shè)計器”下部窗格的“更新條件”選項卡中,選中左下角的“發(fā)送SQL更新”複選框。在“更新條件”選項卡中的操作包括:(1)指定可更新的表(2)指定可更新的字段(3)設(shè)置“SQLWHERE子句包括”框(4)設(shè)置“使用更新”框5.5.4視圖的使用與維護(hù)
1.視圖的使用VisualFoxPro允許對視圖進(jìn)行以下操作:在資料庫中使用USE命令打開指定的視圖或關(guān)閉視圖。在“流覽”窗口中顯示和修改視圖中的內(nèi)容。使用SQL命令對視圖進(jìn)行操作。在查詢、表單、報表中將視圖作為數(shù)據(jù)源。6.1SQL語言概述
SQL語言的主要優(yōu)點:SQL語言是一種一體化的語言,提供了完整的數(shù)據(jù)定義和操縱功能。SQL語言具有完備的查詢功能。SQL語言非常簡潔,易學(xué)易用。SQL語言是一種高度非過程化的語言。SQL語言既能以交互方式直接使用,也能嵌入到各種高級語言中使用。SQL語言不僅能對數(shù)據(jù)表進(jìn)行各種操作,也可對視圖進(jìn)行操作。6.2SQL的定義功能
6.2.1建立表結(jié)構(gòu)格式:CREATETABLE|DBF<表名1>[NAME<長表名>][FREE] (<字段名><字段類型>[(字段寬度[,小數(shù)位數(shù)])] [NULL][NOTNULL] [CHECK<邏輯運算式1>[ERROR<文本資訊1>]] [DEFAULT<運算式1>] [PRIMARYKEY|UNIQUE] [REFERENCES<表名2>[TAG<標(biāo)識名1>]] [NOCPTRANS] [,<字段名2>…] [,PRIMARYKEY<運算式2>TAG<標(biāo)識名2> |,UNIQUE<運算式3>TAG<標(biāo)識名3>] [,FOREIGNKEY<運算式4>TAG<標(biāo)識名4>[NODUP] REFERENCES<表名3>[TAG<標(biāo)識名5>]] [,CHECK<邏輯運算式2>[ERROR<文本資訊2>]]) |FROMARRAY<數(shù)組名>【例6-1】創(chuàng)建一個名為“通信錄”的自由表,含有姓名、生日、電話號碼、手機(jī)號碼4個字段。CREATETABLE通信錄FREE(姓名C(8),;
生日D,家庭電話C(14),手機(jī)號碼C(12))【例6-2】創(chuàng)建一個“商品管理”資料庫,在其中創(chuàng)建一個“供應(yīng)商”表,包含供應(yīng)商號、供應(yīng)商名稱、地址、電話、傳真5個字元型字段,並以“供應(yīng)商號”字段為關(guān)鍵字創(chuàng)建一個主索引。CREATEDATABASE商品管理CREATETABLE供應(yīng)商(供應(yīng)商號C(8)PRIMARYKEY,;
供應(yīng)商名稱C(16),地址C(24),電話C(14),傳真C(8))【例6-3】在“商品管理”資料庫中創(chuàng)建一個“商品”表,包含商品號、商品名稱、單價、數(shù)量、供應(yīng)商號5個字段;以“商品號”為關(guān)鍵字創(chuàng)建一個主索引並為其設(shè)定一個默認(rèn)值,為“數(shù)量”建立一個取值範(fàn)圍;再以“供應(yīng)商”表為父表通過共有的“供應(yīng)商號”為關(guān)鍵字建立兩表間的永久關(guān)係。OPENDATABASE商品管理CREATETABLE商品(商品號C(8)DEFAULT"JP_10109"PRIMARYKEY,;
商品名稱C(16),單價N(8,2),;
數(shù)量N(4)CHECK數(shù)量>=10AND數(shù)量<5000; ERROR"數(shù)量範(fàn)圍應(yīng)在10到5000之間!",;
供應(yīng)商號C(8),; FOREIGNKEY供應(yīng)商號TAG供應(yīng)商號REFERENCES供應(yīng)商)6.2.2修改表結(jié)構(gòu)
1.命令格式1格式:ALTERTABLE<表名1>ADD|ALTER[COLUMN] <字段名1><字段類型>[(字段寬度[,小數(shù)位數(shù)])] [NULL][NOTNULL] [CHECK<邏輯運算式1>[ERROR<文本資訊1>]] [DEFAULT<運算式1>] [PRIMARYKEY|UNIQUE] [REFERENCES<表名2>[TAG<標(biāo)識名1>]] [NOCPTRANS]功能:為指定的表增加指定的字段,或者修改指定的字段?!纠?-4】為例6-1創(chuàng)建的“通信錄”表添加一個寬度為24的“家庭住址”字段,並將其“姓名”字段的寬度改為10。ALTERTABLE通信錄ADD家庭住址C(24)ALTERTABLE通信錄ALTER姓名C(10)2.命令格式2
格式:ALTERTABLE<表名1>ALTER[COLUMN]<字段名2> [NULL][NOTNULL] [SETDEFAULT<運算式2>] [SETCHECK<邏輯運算式2>[ERROR<文本資訊2>]] [DROPDEFAULT] [DROPCHECK]功能:設(shè)置或刪除指定表中指定字段的默認(rèn)值和(或)約束條件?!纠?-5】在例6-3創(chuàng)建的“商品”表中,為“單價”字段設(shè)置一個默認(rèn)值“888.88”,並刪除“數(shù)量”字段的條件約束。OPENDATABASE商品管理ALTERTABLE商品ALTER單價SETDEFAULT888.88ALTERTABLE商品ALTER數(shù)量DROPCHECK3.命令格式3
格式:ALTERTABLE<表名1>[DROP[COLUMN]<字段名3>] [SETCHECK<邏輯運算式3>[ERROR<文本資訊3>]] [DROPCHECK] [ADDPRIMARYKEY<運算式3>TAG<標(biāo)識名2>] [DROPPRIMARYKEY] [ADDUNIQUE<運算式4>[TAG<標(biāo)識名3>]] [DROPUNIQUETAG<標(biāo)識名4>] [ADDFOREIGNKEY<運算式5>TAG<標(biāo)識名4> REFERENCES<表名2>[TAG<標(biāo)識名5>]] [DROPFOREIGNKEYTAG<標(biāo)識名6>[SAVE]] [RENAMECOLUMN<字段名4>TO<字段名5>] [NOVALIDATE]功能:刪除指定表中的指定字段、設(shè)置或刪除指定表中指定字段的約束條件、增加或刪除主索引、候選索引、外索引,以及對字段名重新命名等。【例6-6】在例6-1創(chuàng)建的“通信錄”表中,刪除“家庭住址”字段,並將其“電話號碼”字段更名為“家庭電話”。ALTERTABLE通信錄DROPCOLUMN家庭住址ALTERTABLE通信錄RENAMECOLUMN電話號碼TO家庭電話6.2.3建立視圖
格式:CREATEVIEW<視圖名>[(字段名1[,字段名2]…)]AS<select語句>【例6-8】在“商品管理”資料庫中,創(chuàng)建一個名為“貴重商品”的視圖,由“商品”表中單價大於1000元的商品記錄構(gòu)成。OPENDATABASE商品管理CREATESQLVIEW貴重商品AS; SELECT*FROM商品WHERE單價>1000USE貴重商品BROWSE6.2.4刪除表
格式:DROPTABLE<表名>【例6-10】刪除“商品管理”資料庫中的“供應(yīng)商”表,相應(yīng)命令如下。OPENDATABASE商品管理DROPTABLE供應(yīng)商6.3SQL的操作功能
6.3.1插入紀(jì)錄1.命令格式1格式:INSERTINTO<表名>[(<字段名1>[,<字段名2>,…])] VALUES(<運算式1>[,<運算式2>,…])功能:在指定表的尾部添加一條新記錄,並將指定的值賦給對應(yīng)的字段。2.命令格式2
格式:INSERTINTO<表名>FROMARRAY<數(shù)組名>|FROMMEMVAR功能:由指定數(shù)組或記憶體變數(shù)的值在指定表的尾部添加一條新記錄。6.3.2更新數(shù)據(jù)格式:UPDATE<表名> SET<字段名1>=<運算式1>[,<字段名2>=<運算式2>…] [WHERE<邏輯運算式>]功能:對於指定的表中符合條件的記錄,用指定的運算式值來更新指定的字段值。6.3.3刪除紀(jì)錄
格式:DELETEFROM<表名>[WHERE<邏輯運算式>]功能:對指定表中符合條件的記錄,進(jìn)行邏輯刪除。6.4SQL的查詢功能
6.4.1SQL查詢命令格式:SELECT[ALL|DISTINCT][TOP<數(shù)值運算式>[PERCENT]]<檢索項>[AS<列名>][,<檢索項>[AS<列名>]…]FROM[<資料庫名>!]<表名>[[AS]<邏輯別名>][[INTO<目的地>]|[TOFILE<檔案名>]|[TOPRINTER]|[TOSCREEN]][WHERE<連接條件>[AND<連接條件>…][AND|OR<篩選條件>[AND|OR<篩選條件>…]]][GROUPBY<列名>[,<列名>…]][HAVING<篩選條件>][ORDERBY<排序項>[ASC|DESC][,<排序項>[ASC|DESC]…]]功能:根據(jù)指定的條件從一個或多個表中檢索並輸出數(shù)據(jù)。6.4.2簡單查詢
從單個表中檢索滿足條件的記錄數(shù)據(jù)?!纠?-16】查詢Student表中所有外地(籍貫非北京)女生的姓名、年齡、出生日期與籍貫。SELECT姓名,年齡,出生日期,籍貫FROMStudent; WHERE性別="女"AND籍貫!="北京"【例6-17】查詢Student表中有哪些班級的學(xué)生(不重複顯示相同的班級)。SELECTDISTINCT班級FROMStudent6.4.3特殊運算符
使用BETWEEN、LIKE、IN和NOTIN等特殊運算符,使查詢更為方便靈活?!纠?-21】在Student表中查詢年齡在19到20之間的學(xué)生記錄,並按出生日期排序後顯示出來。SELECT*FROMStudent; WHERE年齡BETWEEN19AND20; ORDERBY出生日期【例6-22】在Student表中查詢並輸出所有姓李的學(xué)生記錄。SELECT*FROMStudent; WHERE姓名LIKE"李%"【例6-23】在Student表中查詢所有籍貫為“內(nèi)蒙古”或“山東”的學(xué)生記錄。SELECT*FROMStudent; WHERE籍貫IN("內(nèi)蒙古","山東")6.4.4嵌套查詢
在一個SELECT查詢命令的WHERE短語中,包含另一個SELECT查詢命令?!纠?-25】依據(jù)“圖書管理”資料庫中Student表和Borrow表的數(shù)據(jù),列出未曾借過書的男生記錄。SELECT*FROMStudent; WHERE性別="男"AND學(xué)號; NOTIN(SELECT學(xué)號FROMBorrow)6.4.5多表查詢
基於多個相關(guān)聯(lián)數(shù)據(jù)表的查詢?!纠?-26】依據(jù)Student表和Borrow表的數(shù)據(jù),查詢借閱“大學(xué)英語”書的學(xué)生的學(xué)號、姓名、性別和所在班級。SELECTStudent.學(xué)號,Student.姓名,Student.班級,Borrow.借書日期; FROMStudent,Borrow; WHEREStudent.學(xué)號=Borrow.學(xué)號AND; Borrow.書名="大學(xué)英語"6.4.6超聯(lián)接查詢
通過包含在SELECT-SQL命令中的FROM…JOIN…ON…短語來實現(xiàn)基於多個相關(guān)數(shù)據(jù)表的查詢。格式:SELECT……FROM<表名>INNER|LEFT|RIGHT|FULLJOIN<表名>ON<聯(lián)接條件>WHERE……其中:INNERJOIN等價於JOIN,為普通的內(nèi)部聯(lián)接,即查詢結(jié)果中僅包含兩個表中與聯(lián)接字段值相匹配的記錄。LEFTJOIN為左聯(lián)接,即查詢結(jié)果中包含左側(cè)表中的所有記錄,以及兩個表中與聯(lián)接字段值相匹配的記錄。RIGHTJOIN為右聯(lián)接,即查詢結(jié)果中包含右側(cè)表中的所有記錄,以及兩個表中與聯(lián)接字段值相匹配的記錄。FULLJOIN為完全聯(lián)接,即查詢結(jié)果中包含兩個表中與聯(lián)接字段值相匹配的和不相匹配的所有記錄。ON<聯(lián)接條件>短語用來指定兩個表之間的聯(lián)接條件。6.4.7統(tǒng)計查詢通過如下幾個庫函數(shù)實現(xiàn)對查詢結(jié)果的統(tǒng)計。SUM() 計算指定數(shù)值列的總和AVG() 計算指定數(shù)值列的平均值MAX() 求指定(數(shù)值、字元、日期)列的最大值MIN() 求指定(數(shù)值、字元、日期)列的最小值COUNT() 求查詢結(jié)果數(shù)據(jù)的行(記錄)數(shù)【例6-32】查詢Student表中年紀(jì)最小學(xué)生的生日,以及男生的平均年齡。SELECTMAX(出生日期)FROMStudentSELECTAVG(年齡)FROMStudentWHERE性別="男"【例6-33】查詢Student表中籍貫為“山東”的學(xué)生人數(shù)。SELECTCOUNT(*)AS山東學(xué)生人數(shù)FROMStudent; WHERE籍貫="山東"6.4.8分組查詢
通過GROUPBY短語將檢索得到的數(shù)據(jù)依據(jù)某個字段的值劃分為多個組後輸出?!纠?-35】依據(jù)Student表中的數(shù)據(jù),分別統(tǒng)計各個班級的人數(shù)。SELECT班級,COUNT(*)AS人數(shù); FROMStudent GROUPBY班級7.1程式檔的建立與運行
7.1.1程式檔的建立1.用菜單方式建立程式檔執(zhí)行“檔/新建/程式/新建檔”菜單命令。2.用命令方式建立程式檔
格式:MODIFYCOMMAND<程式檔案名>功能:新建或修改指定的程式檔。7.1.2程式檔的運行
1.用菜單方式運行程式檔執(zhí)行“程式/運行”菜單命令。2.用命令方式運行程式檔格式:DO<程式檔案名>功能:將指定的程式檔調(diào)入記憶體並運行。7.1.3程式中的輔助命令
1.程式注釋命令格式1:NOTE<注釋內(nèi)容>格式2:*<注釋內(nèi)容>格式3:[<命令>]&&<注釋內(nèi)容>2.結(jié)束程式運行命令
格式1:RETURN功能:返回到上級程式模組。格式2:RETURNMASTER功能:返回到最上級主程序。格式3:CANCEL功能:停止程式執(zhí)行,關(guān)閉所有檔,返回系統(tǒng)交互狀態(tài)。格式4:QUIT功能:停止所有程式執(zhí)行,關(guān)閉所有檔,退回到宿主操作系統(tǒng)。3.運行環(huán)境設(shè)置命令CLEAR 清螢?zāi)籆LEARALL 關(guān)閉所有檔、釋放所有記憶體變數(shù)SETDEFAULTTO 設(shè)置檔訪問時默認(rèn)的驅(qū)動器SETPATHTO 設(shè)置檔訪問時默認(rèn)的路徑SETTALKON/off 設(shè)置所有命令執(zhí)行的結(jié)果顯示與否7.1.4程式中的交互輸入命令
1.字串輸入命令格式:ACCEPT[<提示資訊>]TO<記憶體變數(shù)>功能:暫停程式的運行,等待用戶鍵入一串字元賦給指定的記憶體變數(shù)。2.運算式輸入命令
格式:INPUT[<提示資訊>]TO<記憶體變數(shù)>功能:暫停程式運行,接受用戶鍵入的運算式並將其值賦給指定的記憶體變數(shù)。3.等待或單字符輸入命令
格式:WAIT[<提示資訊>][TO<記憶體變數(shù)>]功能:暫停程式運行,若包含[TO<記憶體變數(shù)>]短語時,將用戶所鍵入的一個字元賦給指定的記憶體變數(shù);否則待用戶按任一鍵後繼續(xù)程式的執(zhí)行。4.定位輸出命令
格式:@<行,列>SAY<運算式>功能:在螢?zāi)簧现付ǖ男?、列位置輸出指定運算式的值。7.2順序結(jié)構(gòu)程式設(shè)計7.2.1基本程式結(jié)構(gòu)1.順序程式結(jié)構(gòu)2.分支程式結(jié)構(gòu)3.迴圈程式結(jié)構(gòu)7.2.2順序結(jié)構(gòu)程式設(shè)計
嚴(yán)格按照程式中各命令的先後排列順序自上而下逐條執(zhí)行?!纠?-6】在職工檔案表中查看指定職工的有關(guān)情況。USEzgdaACCEPT"請輸入被查詢者姓名:"TOxmLOCATEFOR姓名=xmCLEAR?"姓名:"+姓名?"性別:"+性別?"職稱:"+職稱?"出生日期:"+DTOC(出生日期)USERETURN7.3分支結(jié)構(gòu)程式設(shè)計
7.3.1簡單分支結(jié)構(gòu)格式:IF<條件> <語句序列>ENDIF執(zhí)行過程:當(dāng)<條件>成立時,逐條執(zhí)行IF與ENDIF之間的<語句序列>,然後執(zhí)行ENDIF後的語句;當(dāng)<條件>不成立時,不執(zhí)行<語句序列>而直接執(zhí)行ENDIF後的語句?!纠?-8】某種商品一次購買100件以上時,可享受8%的優(yōu)惠。試編程根據(jù)輸入的單價和數(shù)量計算應(yīng)付金額。CLEARINPUT"數(shù)量:"TOslINPUT"單價:"TOdjje=dj*slIFsl>=100 je=je*0.92ENDIF?"應(yīng)付金額:"+STR(je,8,2)RETURN7.3.2選擇分支結(jié)構(gòu)
格式:IF<條件> <語句序列1>ELSE <語句序列2>ENDIF執(zhí)行過程:若<條件>成立僅執(zhí)行<語句序列1>,而後執(zhí)行ENDIF後的語句;否則僅執(zhí)行<語句序列2>,而後轉(zhuǎn)去執(zhí)行ENDIF後的語句。【例7-10】計程車不超過5公里時一律收費10元,超過時則超過部分每公里加收1.6元。試編程根據(jù)里程數(shù)計算並顯示出應(yīng)付車費。CLEARINPUT"里程:"TOlcIFlc<=5 ?"車費為:十元"ELSE cf=10+(lc-5)*1.6 ?"車費為:"+STR(cf,6,2)ENDIFRETURN7.3.3分支嵌套結(jié)構(gòu)在分支結(jié)構(gòu)的<語句序列>中,允許包括另一個合法的分支結(jié)構(gòu)語句?!纠?-12】設(shè)矽谷公司員工的工資計算方法如下:每工時按68元發(fā)放;工作時數(shù)超過120小時者,超過部分加發(fā)百分之十五;工作時數(shù)不到80小時者,扣發(fā)500元。試編程按輸入的員工號和該號員工的工時數(shù),計算並輸出其應(yīng)發(fā)工資。CLEARACCEPT"員工號:"TOyghINPUT"工時:"TOgsIFgs>120gz=gs*68+(gs-120)*68*0.15ELSE IFgs<80 gz=gs*68-500 ELSE gz=gs*68 ENDIFENDIF? &&輸出一個空行?ygh+"號員工應(yīng)發(fā)工資:"+STR(gz,8,2)RETURN7.3.4多路分支結(jié)構(gòu)
用來解決在多種不同情況下的程式選擇執(zhí)行問題。格式:DOCASE CASE<條件1> <語句序列1> CASE<條件2> <語句序列2> …… CASE<條件n> <語句序列n> [OTHERWISE <語句序列n+1>]ENDCASE【例7-13】編程計算銀行存款整存整取應(yīng)得的利息。CLEARINPUT"本金(元):"TObjINPUT"存期(年):"TOcqDOCASE CASEcq>=5 rate=4.5 &&年利率為4.5% CASEcq>=3 rate=3.6 &&年利率為3.6% CASEcq>=2 rate=3.1 &&年利率為3.1% CASEcq>=1 rate=2.7 &&年利率為2.7% CASEcq>=0.5 rate=2.21 &&年利率為2.21% OTHERWISE rate=1.23 &&年利率為1.23%ENDCASElixi=bj*cq*rate/100? &&輸出一個空行?"應(yīng)得利息:"+STR(lixi,8,2)RETURN7.4迴圈結(jié)構(gòu)程式設(shè)計
7.4.1當(dāng)型迴圈結(jié)構(gòu)格式:DOWHILE<條件> <語句序列>ENDDO執(zhí)行過程:若<條件>成立,執(zhí)行DOWHILE和ENDDO之間的<語句序列>;若<條件>不成立則不執(zhí)行<語句序列>,直接轉(zhuǎn)去執(zhí)行ENDDO後的語句。每執(zhí)行一遍後再對<條件>判斷一次,一旦<條件>不成立就結(jié)束迴圈轉(zhuǎn)去執(zhí)行ENDDO後面的語句?!纠?-14】求1+2+3+...+100的累計值。CLEARSTORE0TOn,sDOWHILEn<100 n=n+1 s=s+nENDDO?"累計值為:"+STR(s,6)RETURN7.4.2步長型迴圈結(jié)構(gòu)
格式:FOR<迴圈變數(shù)>=<初值>TO<終值>[STEP<步長值>] <語句序列>ENDFOR|NEXT執(zhí)行過程:首先將初值賦給指定的迴圈變數(shù),然後判斷其值是否超過終值,不超過即執(zhí)行循環(huán)體,超過則不執(zhí)行循環(huán)體。遇到ENDFOR(或NEXT)語句時自動給迴圈變數(shù)增加一個步長值,再判斷迴圈變數(shù)的當(dāng)前值是否超過終值,不超過再次執(zhí)行循環(huán)體,超過則結(jié)束迴圈轉(zhuǎn)去執(zhí)行ENDFOR(或NEXT)後的語句。【例7-18】用步長型迴圈結(jié)構(gòu)編程求1+2+3+...+100的累計值。CLEARs=0F
溫馨提示
- 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)確性、安全性和完整性, 同時也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 出色的答案 (詞語)
- 二年級下冊道德與法治說課稿-8 安全地玩 部編版
- 購車款贈予合同模板
- 高速設(shè)備出租合同模板
- 購銷叉車合同模板
- 老人更換尿布課件
- 美容院勞動協(xié)議合同模板
- 靈璧合同模板
- 購房裝修款合同模板
- 普通裝修施工合同模板
- 《三年級》數(shù)學(xué)全集舉一反三課件奧數(shù)
- 新蘇教版四年級上冊科學(xué) 9彈力 (第一課時)教案+實驗單課件
- 漢語語法教學(xué)-即使……也……
- 礦井污水處理方案
- 旅客地道綜合施工專題方案
- 初三物理 探究電流與電壓的關(guān)系 實驗報告單
- 投資項目經(jīng)濟(jì)評價管理辦法
- 2023-2023年江蘇省徐州市九年級數(shù)學(xué)上期中試題含答案
- 平菇栽培技術(shù)課件
- 人教版數(shù)學(xué)一年級上冊《6和7解決問題(加法)》教案
- 高考復(fù)習(xí):探究文言文閱讀主觀題 課件(23張PPT)
評論
0/150
提交評論