版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進(jìn)行舉報或認(rèn)領(lǐng)
文檔簡介
1.VFP啟動與退出2.數(shù)據(jù)的類型(C,N,D,L,M,G型)3.常量與變量常量:(C,N,L,D型)變量:(字段變量,內(nèi)存變量,數(shù)組變量,系統(tǒng)變量)4.表達(dá)式5.函數(shù):數(shù)值型:INT(),ROUND(),MOD()回顧字符型:ALLTRIM(),SUBSTR(),LEN(),AT()SPACE(),UPPER(),LOWER(),&日期型:DATE(),TIME(),YEAR()DAY(),DOW(),MONTH()類型轉(zhuǎn)換函數(shù):CTOD(),DTOC(),VAL(),STR()測試函數(shù):BOE(),EOF(),FOUND(),RECNO()SELECT(),DELETE()其它函數(shù):ROW(),COL()第六章創(chuàng)建數(shù)據(jù)庫和表數(shù)據(jù)庫表的操作數(shù)據(jù)庫表的建立數(shù)據(jù)庫的建立、打開、關(guān)閉自由表的建立與修改數(shù)據(jù)庫、自由表、數(shù)據(jù)庫表一、教學(xué)目的及要求熟練掌握自由表的創(chuàng)建方法熟練掌握數(shù)據(jù)庫的創(chuàng)建方法熟練掌握數(shù)據(jù)庫表的創(chuàng)建方法掌握數(shù)據(jù)庫表的相關(guān)操作二、教學(xué)重點(diǎn)與難點(diǎn)1.重點(diǎn)自由表的建立與修改數(shù)據(jù)庫的建立數(shù)據(jù)庫表的建立2.難點(diǎn)表結(jié)構(gòu)與表記錄的區(qū)別設(shè)置數(shù)據(jù)庫表的字段屬性1.數(shù)據(jù)庫:數(shù)據(jù)的集合,包括多個表的一個文件(.DBC)對表進(jìn)行分類管理和保護(hù)數(shù)據(jù)安全。2.數(shù)據(jù)庫表:依附于數(shù)據(jù)庫的表(.DBF)。支持長文件名,長字段名,可設(shè)置規(guī)則觸發(fā)器等。3.自由表:不依附于數(shù)據(jù)庫的表(.DBF)?!?.1數(shù)據(jù)庫、數(shù)據(jù)庫表、自由表需求分析確定所的表確定表中的字段確定表間的關(guān)系設(shè)計(jì)求精§6.2數(shù)據(jù)庫設(shè)計(jì)※表的組成:結(jié)構(gòu)+記錄結(jié)構(gòu):字段信息(字段名、類型、寬度等)索引信息(按某表達(dá)式邏輯排序)表信息建表:先建結(jié)構(gòu)(設(shè)置字段),再添記錄?!獭?.3建立自由表6.3.1使用“項(xiàng)目管理器”創(chuàng)建自由表STUDENT打開“項(xiàng)目管理器”,選擇“數(shù)據(jù)”選項(xiàng)卡在“數(shù)據(jù)”選項(xiàng)卡中選擇“自由表”選項(xiàng)單擊“新建”按鈕,系統(tǒng)彈出“新建表”對話框在“新建表”對話框中單擊“新建表”按鈕,系統(tǒng)彈出“創(chuàng)建”對話框。6.3.2使用菜單中的“新建”命令創(chuàng)建自由表例:根據(jù)以下資料建立一個名為student的自由表字段名類型寬度小數(shù)位數(shù)系別號C2學(xué)號C8姓名C8性別C2出生日期D8入學(xué)成績N51團(tuán)員否L1簡歷M4照片G4從“文件”菜單中選擇“新建”命令,系統(tǒng)彈出“新建”對話框在“文件類型”區(qū)域中選擇“表”選項(xiàng)單擊“新建文件”按鈕,系統(tǒng)彈出“創(chuàng)建”對話框在“創(chuàng)建”對話框中選擇存儲路徑,輸入表名稱,單擊“保存”按鈕(注意觀察保存類型)學(xué)生管理設(shè)置了默認(rèn)路徑則不選擇在彈出的”表設(shè)計(jì)器”窗口中定義自由表的結(jié)構(gòu)表設(shè)計(jì)器(三個選項(xiàng)卡):字段、索引、表字段選項(xiàng)卡字段名類型寬度小數(shù)位數(shù)索引NULL√字段名(字段變量)命名規(guī)則1.自由表的字段名最長為10個字符(數(shù)據(jù)庫表的字段名最長為128個字符)2.字段名必須以字母或漢字開始3.字段名可以由字母、漢字、數(shù)字和下劃線組成4.字段名中不能包含空格字段的數(shù)據(jù)類型字符型(c):最多可達(dá)254個字符。日期型(D):占用8個字節(jié),保存日期數(shù)據(jù)。邏輯型(L):占用1個字節(jié),具有.T.和.F.兩個值。數(shù)值型(N):最長為20位,其中小數(shù)點(diǎn)占用1位,用于表示數(shù)值。通用型(G):用于存儲文檔、圖片等信息,在表中占用4個字節(jié)。備注型(M):用于存儲不定長的數(shù)據(jù)塊,備注型字段在表中占用4個字節(jié)。注意:備注型字段、通用型字段數(shù)據(jù)的輸入及保存位置,備注文件(.FPT)。寬度:該字段輸入數(shù)據(jù)的最大寬度。小數(shù)位數(shù):數(shù)值型字段的小數(shù)位數(shù)。NULL:指定該字段是否接受空值NULL。索引:對記錄按指定關(guān)鍵字進(jìn)行邏輯排序。索引選項(xiàng)卡排序索引名類型表達(dá)式篩選表選項(xiàng)卡單擊“確定”按鈕,系統(tǒng)彈出提示對話框。6.3.3使用CREATE命令創(chuàng)建自由表命令格式:
CREATE[自由表名稱]√例:根據(jù)以下資料建立一個名字為score的自由表學(xué)號高等數(shù)學(xué)計(jì)算機(jī)英語總分平均分2002010167.0100.085.02002020177.075.071.52002030191.586.089.02002040159.058.057.52002050183.063.577.0字段名類型寬度小數(shù)位數(shù)學(xué)號C6高等數(shù)學(xué)N51計(jì)算機(jī)N51英語N51總分N51平均分N51SCORE表的字段的定義6.4.1使用“項(xiàng)目管理器”創(chuàng)建數(shù)據(jù)庫打開“項(xiàng)目管理器”,選擇“數(shù)據(jù)”選項(xiàng)卡在“數(shù)據(jù)”選項(xiàng)卡中選擇“數(shù)據(jù)庫”選項(xiàng)單擊"新建"按鈕,系統(tǒng)彈出"新建數(shù)據(jù)庫"對話框在“新建數(shù)據(jù)庫”對話框中單擊“新建數(shù)據(jù)庫”按鈕,系統(tǒng)彈出“創(chuàng)建”對話框在“創(chuàng)建”對話框中輸入數(shù)據(jù)庫名和存儲路徑單擊“保存”按鈕§6.4創(chuàng)建數(shù)據(jù)庫6.4.2使用“新建”命令創(chuàng)建數(shù)據(jù)庫從“文件”菜單中選擇“新建”命令,系統(tǒng)彈出“新建”對話框在“文件類型”區(qū)域中選擇“數(shù)據(jù)庫”單選項(xiàng)單擊"新建文件"按鈕,系統(tǒng)彈出"創(chuàng)建"對話框4)在“創(chuàng)建”對話框中輸入數(shù)據(jù)庫名和存儲路徑5)單擊“保存”按鈕6.4.3使用CREATEDATABASE命令創(chuàng)建數(shù)據(jù)庫命令格式:CREATEDATABASE[數(shù)據(jù)庫名稱]例:建立一個名為students的數(shù)據(jù)庫
Createdatabasestudents√6.5.1打開數(shù)據(jù)庫1.使用菜單:從“文件”菜單中選擇“打開”命令,系統(tǒng)彈出“打開”對話框在“文件類型”區(qū)域中選擇“數(shù)據(jù)庫”單選項(xiàng)單擊“確定”按鈕§6.5打開與關(guān)閉數(shù)據(jù)庫2.使用命令格式:OPENDATABASE[數(shù)據(jù)庫名稱|?]?
用于在執(zhí)行該命令時彈出“打開”對話框6.5.2修改數(shù)據(jù)庫(打開數(shù)據(jù)庫設(shè)計(jì)器)MODIFYDATABASE[數(shù)據(jù)庫名稱]√注意:區(qū)別打開表命令USE表名6.5.3關(guān)閉數(shù)據(jù)庫命令格式:CLOSEDATABASES[ALL]無ALL表示關(guān)閉當(dāng)前數(shù)據(jù)庫ALL表示所有已打開的數(shù)據(jù)庫及其相關(guān)文件注意:文件菜單的關(guān)閉命令和數(shù)據(jù)庫設(shè)計(jì)器的關(guān)按鈕,只能關(guān)閉數(shù)據(jù)庫設(shè)計(jì)器√6.5.4刪除數(shù)據(jù)庫使用項(xiàng)目管理器或Windows中刪除文件的方法注意:①刪除數(shù)據(jù)庫,其管理的數(shù)據(jù)庫表并未刪除。②若數(shù)據(jù)庫刪除或無效狀態(tài)下,其管理的數(shù)據(jù)庫表從數(shù)據(jù)庫表變?yōu)樽杂杀?,在打開表時可刪除與該數(shù)據(jù)庫的鏈接關(guān)系。相關(guān)概念:1.觸發(fā)器:對數(shù)據(jù)庫表進(jìn)行插入、更新、刪除操作后運(yùn)行的記錄事件及代碼。2.有效性規(guī)則:檢查輸入數(shù)據(jù)是否滿足給定條件3.記錄級規(guī)則:和記錄相關(guān)的的規(guī)則。檢查插入、修改記錄時數(shù)據(jù)正確性。4.字段級規(guī)則:和字段相關(guān)的規(guī)則。檢查插入、修改字段值時數(shù)據(jù)的正確性。5.數(shù)據(jù)字典:記錄表信息的表。§6.6建立數(shù)據(jù)庫表6.6.1創(chuàng)建數(shù)據(jù)庫表注意:創(chuàng)建數(shù)據(jù)庫表前,必須首先打開數(shù)據(jù)庫。創(chuàng)建自由表前必須先關(guān)閉數(shù)據(jù)庫。方法:①使用“項(xiàng)目管理器”創(chuàng)建數(shù)據(jù)庫表②使用“數(shù)據(jù)庫設(shè)計(jì)器”創(chuàng)建數(shù)據(jù)庫表③使用“新建”命令創(chuàng)建數(shù)據(jù)庫表④使用CREATE命令創(chuàng)建數(shù)據(jù)庫表√例.
建立一個數(shù)據(jù)庫表DEPARTMENT字段名類型寬度系別號C2系名稱C10Department的結(jié)構(gòu)6.6.2設(shè)置字段屬性1.顯示格式(輸出掩碼):指定字段顯示數(shù)據(jù)的格式輸入掩碼:指定字段輸入數(shù)據(jù)的格式標(biāo)題:瀏覽窗口,表單,報表中用標(biāo)題代替字段名2.字段有效性★規(guī)則:字段級有效性檢查規(guī)則。信息:違反字段有效性規(guī)則時的提示信息。
注意提示信息要加定界符。默認(rèn)值:輸入新記錄時,默認(rèn)的字段值。3.匹配字段類型到類4.字段注釋√6.6.3設(shè)置索引1.主索引:
關(guān)鍵字唯一,只有數(shù)據(jù)庫表才能建立主索引,一個表只能有一個主索引.2.侯選索引:
關(guān)鍵字唯一,數(shù)據(jù)庫表和自由表都能建立侯選索引,一個表可有多個侯選索引.3.唯一索引:關(guān)鍵字值唯一,不允許有重復(fù)值.4.普通索引:邏輯排序.√6.6.4設(shè)置記錄的有效性規(guī)則及觸發(fā)器1.表名設(shè)置:設(shè)置長度不大于128字符的長表名2.記錄有效性規(guī)則設(shè)置:例:設(shè)置記錄學(xué)號字段和姓名字段不能為空學(xué)號<>””AND姓名<>””Notempty(學(xué)號)andnotempty(姓名)注:字段有效性規(guī)則與記錄有效性規(guī)則的區(qū)別3.觸發(fā)器設(shè)置①插入觸發(fā)器例:每月13號不能插入記錄
DAY(DATE())<>13②更新觸發(fā)器例:不能修改性別為女的記錄性別<>“女”③刪除觸發(fā)器例:學(xué)號不為空的記錄不能刪除
EMPTY(學(xué)號)6.7.1將自由表添加到數(shù)據(jù)庫中6.7.2從數(shù)據(jù)庫中移去或刪除表6.7.3修改表的結(jié)構(gòu)6.7.4瀏覽數(shù)據(jù)庫表§6.7數(shù)據(jù)庫的操作思考:1.自由表、數(shù)據(jù)庫表、數(shù)據(jù)庫的區(qū)別和聯(lián)系?2.同一個自由表可以添加到幾個數(shù)庫中?若出現(xiàn)以下提示表示什么意思?3.如何將一個數(shù)據(jù)庫表添加到另一數(shù)據(jù)庫中?4.打開表時出現(xiàn)以下提示該如何處理?√1.在VFP中,通用型字段G和備注型字段M在表中的寬度都是()。A.2BB.4B C.8BD.10B2.打開一個數(shù)據(jù)庫的命令是()A.USEB.USEDATABASE C.OPEND.OPENDATABASE3.一個自由表可以添加到()數(shù)據(jù)庫中。A.兩個B.一個C.多個D.任意個4.在VFP中,可以對其設(shè)置字段屬性的表()。A.必須是數(shù)據(jù)庫表B.不能設(shè)置字段的默認(rèn)值C.可以是自由表或數(shù)據(jù)庫表D.必須是自由表練習(xí)菜單方式、命令方式CREATE表名稱CREATEDATABASE數(shù)據(jù)庫名稱OPENDATABASE數(shù)據(jù)庫名稱MODIFYDATABASECLOSDATABASECLOSALL設(shè)置數(shù)據(jù)庫表的字段有效性規(guī)則第七章表的基本操作表記錄的操作★●表的打開、關(guān)閉表結(jié)構(gòu)的顯示、修改和復(fù)制表間關(guān)系★●表間連接和更新一、教學(xué)目的及要求熟練掌握工作區(qū)的使用熟練掌握表的基本操作熟練掌握表間關(guān)系掌握參照完整性的設(shè)置二、教學(xué)重點(diǎn)與難點(diǎn)1.重點(diǎn)表的顯示、追加、定位、更新、索引工作區(qū)的使用表間臨時關(guān)系和永久關(guān)系2.難點(diǎn)工作區(qū)的轉(zhuǎn)換表間永久關(guān)系關(guān)系的建立參照完整性設(shè)置第七章表的基本操作(一)表結(jié)構(gòu)的顯示表的打開表的關(guān)閉表結(jié)構(gòu)的修改表結(jié)構(gòu)的復(fù)制一、表的組成:結(jié)構(gòu)和記錄二、表的基本操作:★結(jié)構(gòu):表結(jié)構(gòu)的打開、顯示、修改、復(fù)制★記錄:表記錄的顯示、定位、更新、追加、插入刪除、瀏覽、復(fù)制、索引、排序、統(tǒng)計(jì)★表:表的打開、關(guān)閉、關(guān)聯(lián)、更新、連接、復(fù)制▲不管對表做何種操作,必須先打開表?。。?注意*§7.1表的打開與關(guān)閉7.1.1表與工作區(qū)工作區(qū):系統(tǒng)為打開的表分配的內(nèi)存單元工作區(qū)號:1~32767A~J表示前10個一個表使用一個工作區(qū),一個工作區(qū)打開一個表★當(dāng)前工作區(qū):活動工作區(qū)(當(dāng)前表)
判斷當(dāng)前工作區(qū)SELE()★工作區(qū)的選擇:SELECT命令數(shù)據(jù)工作期窗口7.1.2表的打開1.使用“文件”菜單中的“打開”命令從“文件”菜單中選擇“打開”命令,彈出“打開”對話框2)在“打開”對話框的“搜尋”組合框中,選擇表文件所在的文件夾在文件類型組合框中選擇“表(*.dbf)”選項(xiàng)選擇要打開的表5)單擊“確定”按鈕即可打開選擇的表注意:只讀方式、獨(dú)占方式2.使用USE命令
USE[數(shù)據(jù)庫名!]表名|?[IN工作區(qū)號][AGAIN][ALIAS表別名]注意:區(qū)別打開數(shù)據(jù)庫命令OPENDATABASE※說明:1)數(shù)據(jù)庫名:打開表的同時打開該表所在的數(shù)據(jù)庫2)IN工作區(qū)號:指明打開表的工作區(qū),當(dāng)前工作區(qū)可省略(剛啟動vfp系統(tǒng)默認(rèn)第1區(qū)為當(dāng)前工作區(qū))3)AGAIN:將已打開的表在其他工作區(qū)再次打開4)表別名:給打開的表指定一個別名5)通常情況下,一個工作區(qū)只能打開一個表;在同一個工作區(qū)中,新表打開會關(guān)閉原來表。例.
啟動vfp后,在2號和4號工作區(qū)分別打開student和score表。Usestudentin2Usescorein4問:1.當(dāng)前工作區(qū)是幾號?
2.可否用其他方式在4號工作區(qū)打開score例.
在4號工作區(qū)打開department表。問:1.score表是打開還是關(guān)閉狀態(tài)?2.可否在3號工作區(qū)打開student表?3.使用“數(shù)據(jù)工作期”窗口數(shù)據(jù)工作期可以對表進(jìn)行打開、關(guān)閉、瀏覽、結(jié)構(gòu)修改、在表間建立關(guān)系等操作。從“窗口”菜單中選擇“數(shù)據(jù)工作期”命令,系統(tǒng)彈出“數(shù)據(jù)工作期”對話框。(或點(diǎn)擊工具欄上的數(shù)據(jù)工作期窗口按鈕)2)單擊“打開”按鈕,系統(tǒng)彈出“打開”對話框。3)在“打開”對話框中選擇要打開的表。4)單擊“確定”按鈕。7.1.3表的關(guān)閉1.使用USE命令(關(guān)閉當(dāng)前表)
命令格式:
USE
2.使用CLOSE命令命令格式:
CLOSEALL|TABLEALL
3.使用“數(shù)據(jù)工作期”窗口1)從“窗口”菜單中選擇“數(shù)據(jù)工作期”命令,系統(tǒng)彈出“數(shù)據(jù)工作期”對話框。2)在對話框中選擇要關(guān)閉的表。3)單擊“關(guān)閉”按鈕。要求:必須先打開表7.2.1顯示表的結(jié)構(gòu)(在結(jié)果顯示區(qū)顯示)命令格式:LIST|DISPLAYSTRUCTURE[TOPRINT]注意:當(dāng)顯示內(nèi)容超過一屏?xí)r
LIST:連續(xù)顯示DISPLAY:分屏顯示例:USESTUDENTLISTSTRUCTURE§7.2表結(jié)構(gòu)的顯示、修改、復(fù)制7.2.2修改表的結(jié)構(gòu)1.使用“項(xiàng)目管理器”2.使用“顯示”菜單中的“表設(shè)計(jì)器”菜單3.使用MODIFYSTRUCTURE命令命令格式:MODIFYSTRUCTURE注意:只讀狀態(tài)下不能修改√√※修改“只讀”狀態(tài)首先將打開的表關(guān)閉1.查看文件屬性是否是“只讀”,取消之后重新打開表。2.查看是否以“只讀”方式打開表,改為“獨(dú)占”打開。3.查看是否在多工作區(qū)打開同一個表,關(guān)閉其他工作區(qū)已經(jīng)打開的該表,保證只在一個工作區(qū)打開。7.2.3復(fù)制表的結(jié)構(gòu)命令格式:COPYSTRUCTURETO新表名[FIELDS字段名列表][DATABASE數(shù)據(jù)庫名][NAME長表名]例.
利用student表的結(jié)構(gòu)創(chuàng)建一個新表xs,包括學(xué)號,姓名,性別和入學(xué)成績字段。UsestudentCopystrutoxs
fiel
學(xué)號,姓名,性別,入學(xué)成績問:
Copystrutoxsxx
的作用?
第七章表的基本操作(二)記錄的更新★
、刪除、恢復(fù)和復(fù)制記錄的瀏覽和編輯移動記錄指針★●顯示記錄★向數(shù)據(jù)表中添加記錄要求:必須先打開表1.菜單方式(瀏覽窗口必須打開)“顯示”菜單——“追加方式”※在表的尾部添加記錄,可一直追加§7.3向數(shù)據(jù)表中添加記錄2.命令方式:
APPEND[BLANK][IN工作區(qū)號]※在表的尾部添加一條記錄
BLANK:空白記錄3.從其他表文件添加記錄:
※將源表中記錄添加到當(dāng)前表尾部1)菜單方式(瀏覽窗口必須打開)“表”菜單——“追加記錄”2)命令方式APPENDFROM表名[FIELDS字段名列表][FOR條件表達(dá)式]注意:字段名和字段類型需相同,注意字段寬度。※在結(jié)果顯示區(qū)顯示結(jié)果(要求:先打開表)7.4.1LIST命令命令格式LIST[Scope][FIELDS字段列表]
[FOR條件表達(dá)式1][WHILE條件表達(dá)式2]
[OFF]
[NOCONSOLE]
[TOPRINT[PROMPT]|TOFILE文件名]§7.4顯示記錄√★說明:1.SCOPE:指明命令的作用范圍(4種)ALL:所有記錄(省略范圍時,默認(rèn)為ALL)RECORDN:記錄號為N的記錄NEXTN:從當(dāng)前記錄開始的共n個記
REST:從當(dāng)前記錄開始直到最后一個記錄2.OFF:不顯示記錄號3.FIELDS字段列表:指定輸出字段4.FOR條件:對滿足條件的所有記錄進(jìn)行操作。
WHILE條件:從當(dāng)前記錄開始,按順序進(jìn)行條件比較,一旦碰到不滿足條件的記錄即停止。5.ToPrinter:送到打印機(jī)打印。6.ToFile:將要顯示的記錄保存到指定文件。7.Noconsole:在打印或保存時不在屏幕上顯示。注:無范圍無條件時默認(rèn)顯示所有記錄所有字段7.4.2DISPLAY命令命令格式DISPLAY[Scope][FIELDS字段列表][FOR條件表達(dá)式1][WHILE條件表達(dá)式2][OFF][NOCONSOLE][TOPRINT[PROMPT]|TOFILE文件名]注意:無范圍無條件時默認(rèn)顯示當(dāng)前記錄說明:1.SCOPE指明命令的作用范圍(4種)*ALL:所有記錄(省略范圍時,默認(rèn)為ALL)*RECORDN
:記錄號為N的記錄*NEXTN
:從當(dāng)前記錄開始的共n個記錄*REST:從當(dāng)前記錄開始直到最后一個記錄2.OFF不顯示記錄號3.FIELDS字段列表:指定輸出字段7.4.3LIST命令和DISPLAY命令的區(qū)別1.無范圍無條件的LIST顯示表中全部記錄無范圍無條件的DISPLAY顯示表中的當(dāng)前記錄2.LIST連續(xù)顯示,DISPLAY分屏顯示。注意:1)使用
List、Listall、Listrest、Listfor…、Dispall、Disprest、Dispfor…以后,指針指向文件結(jié)束標(biāo)記,eof()函數(shù)返回值為.T.2)測試當(dāng)前記錄號
recno()的值記錄指針:每個打開的表都有一個指針,指向當(dāng)前被操作的記錄,即當(dāng)前記錄。對任意一條記錄操作都需要先將指針指向它,可通過移動指針來改變當(dāng)前操作的記錄,即記錄的定位。※剛打開的表,指針指向第一條記錄?!?.5記錄的定位√首記錄(TOP)第x號記錄……第n號記錄……尾記錄(BOTTOM)BeginOfFile
(BOF文件開始標(biāo)記)EndOfFile
(EOF文件結(jié)束標(biāo)記)表的邏輯結(jié)構(gòu)eof()和bof():測試指針是否指向開始和結(jié)束標(biāo)記※移動記錄指針的方式:1.菜單方式(瀏覽窗口必須打開):
“表”菜單——“轉(zhuǎn)到記錄”菜單項(xiàng)2.命令方式⑴絕對移動:將記錄指針定位到指定記錄上
GO[RECORD]記錄號n|TOP|BOTTOM
[IN工作區(qū)號|IN表別名]除Go命令外,還可以使用goto或直接輸入記錄號n⑵相對移動:在當(dāng)前記錄基礎(chǔ)上向前或向后移動指針
SKIPn[IN工作區(qū)號|IN表別名]注意:①n>0,指針向后移動n個;n<0,指針向前移動n個②可以將SKIP1命令簡寫為SKIP③索引無效時按物理順序,生效時按索引順序移動④當(dāng)指針指向文件結(jié)束標(biāo)記時,eof()為.T.,recno()為記錄總數(shù)加1;⑤當(dāng)指針指向文件開始標(biāo)記時,bof()為.T.,recno()為首記錄的記錄號?!獭镌O(shè)STUDENT表中共有10條記錄USESTUDENT(記錄的邏輯指針指向第一條記錄)DISP(顯示1號記錄的內(nèi)容)?BOF(),RECNO().F.1SKIP–1(記錄的邏輯指針指向文件開始標(biāo)記)?BOF(),RECNO().T.1DISP
(顯示1號記錄的內(nèi)容)GOBOTTOM(記錄的邏輯指針指向尾記錄)?EOF(),RECNO().F.10DISP(顯示最后一條記錄的內(nèi)容)SKIP(記錄的邏輯指針指向文件結(jié)束標(biāo)記)?EOF(),RECNO().T.11DISP(無記錄顯示)?RECCOUNT()10(記錄總個數(shù))INDEON入學(xué)成績TOICJ(按入學(xué)成績升序排列)GOTOP(記錄的邏輯指針指向排序后的首記錄)?BOF(),RECNO()
.F.?(入學(xué)成績最低者對應(yīng)的記錄號)GOBOTTOM(記錄的邏輯指針指向排序后的尾記錄)?EOF(),RECNO().F.?(入學(xué)成績最高者對應(yīng)的記錄號)(注意:索引后首記錄和記錄號為1的記錄的區(qū)別;尾記錄和記錄號為10的記錄的區(qū)別)7.6.1瀏覽記錄1.使用“項(xiàng)目管理器”瀏覽記錄步驟:1)打開“項(xiàng)目管理器”并選擇“數(shù)據(jù)”選項(xiàng)卡。2)在“數(shù)據(jù)”選項(xiàng)卡中選擇要瀏覽的表。3)單擊“瀏覽”按鈕。§7.6記錄的瀏覽與編輯2.瀏覽窗口的使用1)添加記錄2)編輯記錄3)刪除記錄(邏輯刪除、物理刪除)4)定位記錄3.使用“瀏覽”菜單“顯示”——“瀏覽”4.使用BROWSE命令瀏覽記錄BROWSE[FIELDS字段列表][FONT字體名字[,字號]][STYLE字體樣式][FOR條件表達(dá)式1[Rest]][FREEZE字段名][KEY表達(dá)式1[,表達(dá)式2]][LAST|NOINIT][LOCKnNumberofFields][LPARTITION][NOAPPEND]使用上次BROWSE所使用的參數(shù)指定可編輯字段只瀏覽索引關(guān)鍵字值滿足條件的記錄(要求索引為當(dāng)前索引生效)禁止追加[NODELETE][NOEDIT|NOMODIFY][NOLGRID][NORGRID][NOLINK][NOMENU][NOWAIT][PARTITIONnColumnNumber[LEDIT][REDIT]][SAVE][TIMEOUTnSeconds][TITLEctitletext]禁止在系統(tǒng)菜單欄顯示“表”菜單禁止修改設(shè)置瀏覽窗口的標(biāo)題5.定制瀏覽窗口1)調(diào)整列寬2)調(diào)整字段的顯示順序3)設(shè)置顯示字體4)調(diào)整和拆分瀏覽窗口5)回復(fù)默認(rèn)瀏覽設(shè)置(Browse)例:USESTUDENTBROWBROWFIEL姓名,性別FOR入學(xué)成績>=500BROWNOMODIFYTITLE“學(xué)生表”;
FONT“黑體”,147.5.2記錄編輯1.使用菜單:(瀏覽窗口必須打開)“顯示”——“編輯”2.使用EDIT命令(功能同BROWSE)命令格式
EDIT[FIELDS字段列表]7.5.3更新記錄※用表達(dá)式的值替換指定字段命令格式REPLACE字段名1WITH表達(dá)式1[ADDITIVE][,字段名2WITH表達(dá)式2[ADDITIVE]…][FOR條件表達(dá)式1][WHILE條件表達(dá)式2][SCOPE][IN工作區(qū)號|表別名]注意:缺省范圍和條件,默認(rèn)為當(dāng)前記錄。√例:USESCOREREPL計(jì)算機(jī)WITH計(jì)算機(jī)+50?EOF(),RECNO()REPLALL
總分WITH高等數(shù)學(xué)+計(jì)算機(jī)+;英語+解剖+化學(xué)?EOF(),RECNO()REPL平均分WITH總分/5FOR
總分>=300?EOF(),RECNO()7.5.4插入記錄命令格式INSERT[BLANK][BEFORE]在當(dāng)前記錄之后插入一條記錄。BEFORE指定在當(dāng)前記錄之前插入一條記錄。注意:1.設(shè)置了有效性規(guī)則的數(shù)據(jù)庫表
2.索引生效的表
3.與append的差別7.5.6刪除記錄邏輯刪除、物理刪除、全部物理刪除1.邏輯刪除※給指定記錄加上邏輯刪除標(biāo)記“*”命令格式DELETE[Scope][FOR條件表達(dá)式1][WHILE條件表達(dá)式2][IN工作區(qū)號|表別名]例:
USESTUDENTDELETEDELETENEXT3DELETEFOR性別=“女”注意:1.省略范圍條件,默認(rèn)為當(dāng)前記錄2.邏輯刪除后,可以使用RECALL命令恢復(fù)3.SETDELETEDON(過濾已邏輯刪除的記錄)2.記錄恢復(fù)※給指定記錄取消邏輯刪除標(biāo)記“*”
命令格式RECALL[Scope][FOR條件表達(dá)式1][WHILE條件表達(dá)式2]例:
USESTUDENTRECALLALL
注意:省略范圍條件,默認(rèn)為當(dāng)前記錄。3.物理刪除命令格式PACK[MEMO][DBF]說明:MEMO僅釋放備注型字段未用的磁盤空間4.ZAP命令命令格式
ZAP[IN工作區(qū)號|表別名]說明:1.物理刪除表中所有記錄,保留表的結(jié)構(gòu)。2.SETSAFETYON/OFF
若為ON則彈出確認(rèn)對話框,否則直接刪除7.6復(fù)制記錄※被復(fù)制的表必須先打開COPYTO
新表名[SCOPE][FIELDS字段列表][FOR條件表達(dá)式1][WHILE條件表達(dá)式2][TYPESDF|DELIMITED]說明:1.缺省范圍,默認(rèn)為ALL2.TYPE子句將表文件復(fù)制成文本文件SELECT…USE…LISTSTRU/MODIFYSTRU/COPYSTRULIST…/DISP…APPEND[BLANK]/APPENDFROM…GON|TOP|BOTTOMSKIPN|-NEOF()、BOF()、RECNO()、RECCOUNT()回顧BROWSE…/EDIT…REPALCE…WITH…INSERT[BLANK][BEFORE]DELE…/PACKRECALL…ZAP1.打開一個空表,即只有結(jié)構(gòu)而沒有記錄,
?BOF(),EOF()的值是()。
A..t.和.f.B..t.和.t.C..f.和.f.D..f.和.t.2.對打開的表執(zhí)行l(wèi)istall命令后,
?Eof()的值是()。
A..T.B..F.C.ND.都不對3.表中有100條記錄、設(shè)當(dāng)前記錄指針為5,執(zhí)行
LISTNEXT5后記錄指針指向()號記錄
A.5B.9C.10D.100練習(xí)4.在VFP中,打開某數(shù)據(jù)表后,要將記錄的指針定位在第3條記錄,可以使用的命令是()
A.skip3B.locate3C.find3D.skip25.為當(dāng)前表中所有職工增加80元工資應(yīng)該使用命令()
A.CHANGE工資WITH工資+80B.REPLACE工資WITH工資+80C.CHANGEALL工資WITH工資+80D.REPLACEALL工資WITH工資+806.要對一個表進(jìn)行插入、刪除、修改記錄的操作,首先要做的是()
A.可以不打開表B.直接操作
C.查找要操作的記錄D.打開表7.當(dāng)前數(shù)據(jù)表中共有30條記錄(未打開索引文件),其記錄指針指向第20條記錄,當(dāng)執(zhí)行了SKIP6后,系統(tǒng)顯示的記錄號為()
A.26B.14C.15D.258.以下不能顯示表文件中記錄的命令是()
A.DISPALLB.LISTOFFC.DISPLAYD.LISTSTRU9.有多條記錄的數(shù)據(jù)表剛打開,記錄指針()。A.指向第二條記錄B.指向第一條記錄C.指向最后錄入的一條記錄D.指向最后一條記錄10.現(xiàn)已打開表STUDENT,欲將該表的結(jié)構(gòu)復(fù)制給表ST,下列命令中,正確的是()。
A.COPYTOSTB.APPENDFROMSTC.COPYSTRUTOSTD.LISTSTRU11.在VisualFoxpro6.0中,()命令默認(rèn)顯示記錄指針指向的當(dāng)前記錄。
A.LISTB.DISPLAYC.BROWSED.PRINT12.在VisualFoxpro6.0中,APPEND命令可以()添加記錄。A.在表文件首部B.在表文件中間C.在表文件末尾D.在任意位置13.VisualFoxpro6.0中,DELETE命令默認(rèn)()。A.邏輯刪除當(dāng)前記錄B.物理刪除當(dāng)前記錄C.邏輯刪除所有記錄D.物理刪除所有記錄14.下列命令中,()能對數(shù)據(jù)表中的數(shù)據(jù)進(jìn)行修改。
A.DISPLAYB.LIST C.DELETED.BROWSE15.對字段進(jìn)行有規(guī)律的成批修改時,使用()命令最方便。
A.CHANGEB.BROWSE C.EDITD.REPLACE16.在VISUALFOXPRO中,每個工作區(qū)可以打開()個數(shù)據(jù)表文件。
A.1B.2C.10D.15關(guān)閉當(dāng)前表文件使用的命令是
,關(guān)閉所有文件使用的命令是
。打開表設(shè)計(jì)器的命令是
。要在表文件尾部追加一條新記錄,使用的命令動詞是
。第七章表的基本操作(三)數(shù)據(jù)查詢★設(shè)置主控索引●記錄的邏輯排序★●記錄的物理排序表的統(tǒng)計(jì)7.7.1建立排序命令格式
SORTTO<新表名>
ON<排序字段1>[/A][/D][/C][,<排序字段2>[/A][/D][/C]…..][ASCENDING|DESCENDING][FOR條件表達(dá)式1][WHILE條件表達(dá)式2][SCOPE][FIELDS<字段列表>]§7.7記錄的索引與排序說明:1.對記錄按排序關(guān)鍵字段進(jìn)行物理排序,排序的結(jié)果送往新表保存。2.排序產(chǎn)生的表文件必須先打開,后使用。3.缺點(diǎn):數(shù)據(jù)冗余,不能自動更新。例
USESTUDENTSORTON入學(xué)成績TOSRXCJUSESRXCJLIST索引:按某一表達(dá)式值使表記錄有序排列的一種技術(shù)。索引文件:保存排序的結(jié)果的文件。注意:索引是邏輯排序,不改變表記錄原有的物理存儲順序(即記錄對應(yīng)的記錄號不發(fā)生變化)。7.7.2索引的概念什么是索引通過建立記錄號列表(二維表格)實(shí)現(xiàn)邏輯排序。列表由兩列數(shù)據(jù)組成:關(guān)鍵字值和記錄的物理位置關(guān)鍵字值:字段的排序規(guī)則表達(dá)式。記錄的物理位置:關(guān)鍵字值在表中的物理位置即記錄號注意:索引生效后,對記錄的顯示等操作順序按記錄號列表中記錄的排列順序進(jìn)行。索引的實(shí)現(xiàn)記錄號姓名性別年齡基本工資1楊長興男428502周賽德男4612003劉艷女327004王紅波男285005賈濤女431200EOFBOTTTOPBOF物理順序:即在磁盤上存儲的先后順序表文件關(guān)鍵字值(基本工資)記錄號5004700385011200212005EOFTOPBOFBOTT物理順序按基本工資字段升序建立索引邏輯位置12345邏輯順序索引記錄號姓名身高1張三1.732李四1.823王五1.684陳六1.79表文件關(guān)鍵字值記錄的物理位置1.6831.7311.7941.822索引(按身高字段升序建立索引)1234■索引類型(按記錄是否允許字段有重復(fù)值)主索引:主關(guān)鍵字,字段值唯一,索引值唯一。只有數(shù)據(jù)庫表可建立主索引,一個表一個。候選索引:字段值唯一,索引值唯一,一個表可建多個候選索引。唯一索引:字段值可重復(fù),索引值唯一,索引中只記錄重復(fù)字段值的第一個,可建多個。普通索引:字段值索引值均可不唯一,一個表可建多個?!獭鏊饕募愋停ò词欠窨梢员4娑喾N邏輯順序)單一索引文件(擴(kuò)展名.idx):
主文件名由用戶自定,一個索引文件只保存一種邏輯順序。復(fù)合索引文件(擴(kuò)展名.cdx):
一個索引文件可保存多種邏輯順序,每種順序用索引標(biāo)識區(qū)分。索引標(biāo)識:給邏輯順序的命名。STUDENT表物理位置n關(guān)鍵字值n…物理位置2關(guān)鍵字值2物理位置1關(guān)鍵字值1索引標(biāo)識cj
索引標(biāo)識xh
……
索引標(biāo)識rq…分別按入學(xué)成績、學(xué)號、出生日期建立3個升序索引標(biāo)識為cj、xh、rq,存放于同一個復(fù)合索引文件中。區(qū)別:①結(jié)構(gòu)復(fù)合索引文件主文件名與對應(yīng)表相同,隨該表的打開而自動打開,一個表只有一個。②非結(jié)構(gòu)復(fù)合索引文件主文件名由用戶自定,不隨相關(guān)表的打開而打開,一個表可建多個。
非結(jié)構(gòu)復(fù)合索引復(fù)合索引文件結(jié)構(gòu)復(fù)合索引●表設(shè)計(jì)器方式:
只建立結(jié)構(gòu)復(fù)合索引,并不生效。需要通過命令或表菜單屬性對話框設(shè)置其有效?!衩罘绞剑?/p>
可以建立所有索引,建立即刻有效。7.7.3建立索引√★INDEXON
索引表達(dá)式
TO
單一索引文件名|TAG
復(fù)合索引標(biāo)識
[OF非結(jié)構(gòu)復(fù)合索引文件名][FOR條件表達(dá)式][COMPACT][ASCENDING|DESCENDING][UNIQUE|CANDIDATE][ADDITIVE]1.建立單一索引(.IDX)
INDEXON索引表達(dá)式TO單一索引文件名例如
USESTUDENTINDEXON入學(xué)成績TOICJ1LIST
注意:
默認(rèn)狀態(tài)下單一索引建立后自動打開生效,同時關(guān)閉其他單一索引。單一索引僅有升序,可用表達(dá)式使之呈降序顯示。
INDEXON━入學(xué)成績TOICJ22.建立結(jié)構(gòu)復(fù)合索引(.CDX)INDEXON索引表達(dá)式TAG復(fù)合索引標(biāo)識名例如
USESTUDENTINDEXON姓名
TAGIXM注意:可多次使用該命令為結(jié)構(gòu)復(fù)合索引建立多個索引標(biāo)識。索引標(biāo)識建立后即刻生效。建立多個索引標(biāo)識后,以最后一個為生效索引。3.建立非結(jié)構(gòu)復(fù)合索引例如
USESTUDENTINDEXON學(xué)號TAGIXHOFIXHAO4.設(shè)置復(fù)合索引排序方式(默認(rèn)為升序)ASCENDING:升序DESCENDING:降序例如USESTUDENTINDEXON入學(xué)成績TAGICJDDESC5.設(shè)置有條件的索引例如INDEXON入學(xué)成績TOICJ3FOR
性別=“女”6.建立唯一索引和候選索引例如
INDEXON性別TOIXBUNIQUEINDEXON學(xué)號TAGIXH1CANDIDATE7.建立組合索引解決排序沖突例如SORTON性別,入學(xué)成績toXBINDEXON性別+STR(入學(xué)成績)TOIXBCJ組合索引關(guān)鍵字類型必須相同注意:
ADDITIVE用于禁止在建立新的索引時關(guān)閉已打開的其它索引文件?!襞判蚝退饕膮^(qū)別:1.排序是從物理上對記錄進(jìn)行重新整理,并將排序后的記錄送到新表保存。要察看排序的結(jié)果,需要將新表打開。2.索引是對記錄進(jìn)行邏輯的排序,對記錄的物理順序沒有影響,將索引的結(jié)果存于索引文件中。要察看索引的結(jié)果,需要將索引打開,并設(shè)置為當(dāng)前主控索引。1.打開索引文件命令格式
SETINDEXTO<索引文件名列表>|?[ORDER<索引文件列表序號>|<單一索引文件名>]|TAG<復(fù)合索引標(biāo)識>
[OF<非結(jié)構(gòu)復(fù)合索引文件名>][ASCENDING|DESCENDING][ADDITIVE]7.7.4打開和關(guān)閉索引文件例如USESTUDENTSETINDEXTOICJ1.IDX,IXHAO.CDXSETINDEXTOIXBCJ.IDXORDERTAGIXMDESC注意:
1.ORDER指定哪個索引順序有效。2.ASCENDING|DESCENDING在原有索引順序上再升序或降序。2.打開表的同時打開索引文件(單一、非結(jié)構(gòu))命令格式USE
表文件名INDEX
索引文件列表例如
USESTUDENTINDEXICJ1,IXHAOUSESTUDENTINDEXICJ1,IXHAOORDERTAGIXH注意:單一索引第一個打開立即生效,除非用ORDER
指定其他索引為有效索引。3.關(guān)閉索引文件①關(guān)閉表時自動關(guān)閉相關(guān)索引文件
②SETINDEXTO③CLOSEINDEX主控索引:即當(dāng)前有效索引1.菜單方式在瀏覽狀態(tài)下,通過“表”菜單的“屬性”選項(xiàng)2.數(shù)據(jù)工作期窗口屬性選項(xiàng)3.命令方式
SETORDERTO
7.7.5設(shè)置設(shè)置主控索引SETORDERTO<索引文件列表序號>|<單一索引文件名>]|TAG<復(fù)合索引標(biāo)識>[OF<非結(jié)構(gòu)復(fù)合索引文件名>]
例如:USESTUDENTSETINDEXTOINDEXICJ1,IXHAO,IXBCJSETORDERTOTAGIXHSETORDERTO3注意:索引序號單一排前,結(jié)構(gòu)中間,非結(jié)構(gòu)最后。1.自動修改索引文件打開后,會隨著表的變化自動修改2.命令修改索引文件未打開,不會隨表的變化自動修改
REINDEX
<索引文件名>7.7.6修改索引文件1.表設(shè)計(jì)器2.命令刪除
DELETETAG
<索引標(biāo)識>|ALL7.7.7刪除索引說明:
1.在表結(jié)構(gòu)中建立的索引都是結(jié)構(gòu)復(fù)合索引,建立后并不生效,必須設(shè)置為主控索引才能生效。2.單一索引建立即生效,重新打開時,若未使用order設(shè)置其他索引為主索引,且在第一順序打開,則打開同時也生效。3.結(jié)構(gòu)復(fù)合索引文件隨表的打開自動打開,單一索引和非結(jié)構(gòu)復(fù)合索引需要命令打開(可在打開表時用index指定,也可用setindexto打開)。4.可以在打開表的時候用order設(shè)置主控索引,或打開索引文件時用order指定,或用setorderto另外設(shè)置。1.索引文件按擴(kuò)展名分單一索引文件(.idx)和復(fù)合索引文件(.cdx)復(fù)合索引文件:結(jié)構(gòu)和非結(jié)構(gòu)復(fù)合索引文件.idx保存一種邏輯順序,.cdx保存多種邏輯順序INDEXON表達(dá)式TO單一索引文件名INDEXON表達(dá)式TAG索引標(biāo)識[OF復(fù)合索引文件名]三者在打開時的區(qū)別:結(jié)構(gòu)復(fù)合索引文件隨相關(guān)表的打開而自動打開單一索引和非結(jié)構(gòu)復(fù)合索引文件需用命令打開索引小結(jié)2.索引按索引類型分1.主索引:字段值唯一,只有數(shù)據(jù)庫表才能建立主索引,一個表只能有一個主索引2.侯選索引:字段值唯一,數(shù)據(jù)庫表和自由表都能建立侯選索引,一個表可有多個侯選索引
(在命令格式中用CANDIDATE指明)3.唯一索引:字段值可以不唯一,索引值唯一
(在命令格式中用UNIQUE指明)4.普通索引:邏輯排序打開索引文件①USE表文件名INDEX索引文件列表②SETINDEXTO索引文件列表設(shè)置當(dāng)前索引(主控索引)①USE表文件名INDEX索引文件列表ORDER……②SETINDEXTO索引文件列表ORDER……③SETORDERTO序號/索引文件名/索引標(biāo)識[OF…]關(guān)閉索引USE或SETINDEXTO或CLOSINDEX7.8.1順序查找LOCATE命令按記錄順序查找復(fù)合條件的首記錄若找到,將指針定位到該記錄,且FOUND()返回.T.命令格式
LOCATE[SCOPE]FOR
條件表達(dá)式例如
USESTUDENTLOCATEFOR性別=“女”§7.8數(shù)據(jù)查詢√注意:
1)若索引生效,按索引后的記錄順序查找。
2)若找不到,則指針指向eof,eof()為.t.。7.8.2繼續(xù)查找命令CONTINUECONTINUE注意:
CONTINUE與LOCATE必須配對使用√7.8.3利用索引快速查詢查找索引關(guān)鍵字值與給定表達(dá)式匹配的首記錄若找到,將指針定位到該記錄,且FOUND()返回.T.若找不到,則指針指向eof,eof()為.t.。1.FIND命令命令格式FIND<表達(dá)式>例如:
USESTUDENTINDEON姓名TAGIXMFIND張2.SEEK命令命令格式SEEK<表達(dá)式>例如:
USESTUDENTINDEON入學(xué)成績TAGIRUCJSEEK500說明:1.Find和Seek在使用之前必須先按查找關(guān)鍵字進(jìn)行索引。2.Find只能查找字符型、數(shù)值型的常量和變量
Seek可以查找字符型、數(shù)值型、日期型3.Find查找字符型時不加定界符,但若包含前置空格則必須加定界符;Seek必須加定界符。
Find查找內(nèi)存變量時要使用宏替換&,Seek不用7.9.1計(jì)數(shù)命令統(tǒng)計(jì)指定范圍內(nèi)符合條件的記錄的個數(shù)。命令格式
COUNT[SCOPE][FOR<條件表達(dá)式1>[WHILE<條件表達(dá)式2>][TO<內(nèi)存變量名>]例如
USESTUDENTCOUNTFOR性別=“女”TOX?“女生人數(shù)一共有:”,X,“人!”
§7.9表的統(tǒng)計(jì)7.9.3求平均值命令指定數(shù)值表達(dá)式求平均,默認(rèn)對所有數(shù)值表達(dá)式求平均命令格式
AVERAGE[SCOPE][<數(shù)值表達(dá)式列表>][FOR<條件表達(dá)式1>[WHILE<條件表達(dá)式2>][TO<內(nèi)存變量列表>]|ARRAY<數(shù)組名>]例如
USESCORE
AVER計(jì)算機(jī)TOPJAVERTOA1,B1,C1,D1,E1,F1,G17.9.2求和命令對指定數(shù)值表達(dá)式求和,默認(rèn)對所有數(shù)值表達(dá)式求和命令格式
SUM[SCOPE][<數(shù)值表達(dá)式列表>][FOR<條件表達(dá)式1>[WHILE<條件表達(dá)式2>][TO<內(nèi)存變量列表>]|ARRAY<數(shù)組名>]例如
USESCORESUM計(jì)算機(jī)TOJSJSUMTOA,B,C,D,E,F,G7.9.4計(jì)算命令通過函數(shù)對指定數(shù)值表達(dá)式進(jìn)行計(jì)算。命令格式CALCULATE[Scope][函數(shù)(數(shù)值表達(dá)式)][FOR<條件表達(dá)式1>[WHILE<條件表達(dá)式2>][TO<內(nèi)存變量列表>]|ARRAY<數(shù)組名>]常用函數(shù):VG(),CNT(),MAX(),MIN(),SUM()CNT()作用同RECCOUNT()例如:USESTUDENTCALCULATESUM(入學(xué)成績),;AVG(YEAR(DATE())-YEAR(出生日期))TOX,Y7.9.5匯總命令對關(guān)鍵字相同記錄的數(shù)值型字段求和,結(jié)果存入新表。注意:1.先按分組關(guān)鍵字索引,再匯總。
2.新表中所保存的記錄信息。
3.FIELDS子句指定需要匯總的字段命令格式TOTALTO<新表名>[Scope]
ON<索引關(guān)鍵字段名>[FIELDS<字段列表>][FOR<條件表達(dá)式1>][WHILE<條件表達(dá)式2>]例如
USESTUDENTINDEON性別TOIXBTOTALON性別TOTJXBUSETJXBLISTUSE SCOREINDEXONSUBS(學(xué)號,5,2)TOIXBHTOTALONSUBS(學(xué)號,5,2)TOTXBFIEL總分USETXBLIST
INDEXON表達(dá)式TO單一索引文件名INDEXON━數(shù)值型表達(dá)式TO單一索引文件名INDEXON表達(dá)式TAG
索引標(biāo)識
INDEXON表達(dá)式TAG
索引標(biāo)識
OF
非結(jié)構(gòu)復(fù)合索引名INDEXON……FOR……INDEXON……TAG……ASCE/DESCINDEXON……UNIQUEINDEXON……TAG……CANDIDATEINDEXON表達(dá)式1+表達(dá)式2+……+表達(dá)式n……小結(jié)USE表文件名INDEX索引文件列表SETINDEXTO索引文件列表USE表文件名INDEX索引文件列表ORDER……SETINDEXTO索引文件列表ORDER……SETORDERTO序號|索引文件名|TAG索引標(biāo)識SETORDERTOTAG索引標(biāo)識OF非結(jié)構(gòu)復(fù)合索引USE或SETINDEXTO或CLOSINDEXREINDEXDELETETAG索引標(biāo)識|ALL
SORTON排序關(guān)鍵字/DTO新表名FOR…FIELDS…LOCATE…FOR…/CONTINUEFIND表達(dá)式SEEK表達(dá)式COUNT…SUM數(shù)值型字段…AVERAGE數(shù)值型字段…CALCULATE…TOTALTO新表ON索引關(guān)鍵字…注意:匯總前先按分組關(guān)鍵字索引1.自由表不能建立的索引是()。A.主索引B.候選索引B.普通索引D.唯一索引2.不允許記錄中出現(xiàn)重復(fù)字段值的索引是()A.主索引 B.主索引和侯選索引 C.主索引、候選索引、普通索引D.主索引、侯選索引和唯一索引3.單一索引可以實(shí)現(xiàn)()邏輯排序A.降序B.升序C.降序和升序D.不能實(shí)現(xiàn)降序和升序4.可以伴隨著表的打開而自動打開的索引是()A.單一索引文件(IDX)B.復(fù)合索引文件(CDX)C.結(jié)構(gòu)化復(fù)合索引文件D.非結(jié)構(gòu)化復(fù)合索引5.復(fù)合索引的中標(biāo)識名是指()A.文件名B.一個變量名C.存放在復(fù)合索引中的一個標(biāo)識名D.一個常量名文件6.如果索引值不唯一,則建立的索引是()A.主索引B.普通索引B.候選索引D.唯一索引7.表的文件名是student.dbf,給它建立結(jié)構(gòu)的復(fù)合索引,索引的文件名是()A.student.idx
B.student.txt
C.student.cdxD.以上都不對8.建立邏輯排序使用的命令動詞是()A.CREATEB.SORTC.INDEXD.SET9.統(tǒng)計(jì)當(dāng)前表文件中記錄個數(shù)的命令是()SUMB.TOTALC.COUNTD.AVERAGE10.查找命令LOCATE執(zhí)行后,繼續(xù)查找的命令是()A.CGTOB.NEXTC.SKIPD.CONTINUE在一個數(shù)據(jù)庫表中可以有
個主索引。物理排序后要查看排序結(jié)果,需要先
表。查找命令LOCATE執(zhí)行后,繼續(xù)查找相同條件的其他記錄的命令是
。使用索引查找之前需要先打開或者建立
。執(zhí)行順序查找或者索引查找命令,若查找成功,都是定位到表中符合條件的
記錄,同時found()函數(shù)的值為
,eof()函數(shù)的值為
;若查找不成功,則found()函數(shù)的值為
,eof()函數(shù)的值為
。設(shè)置參照完整性●第七章表的基本操作(四)——多表操作表間關(guān)系多表連接與數(shù)據(jù)更新建立表間永久關(guān)系★●建立表間臨時關(guān)系★工作區(qū)概念及互訪★回顧
工作區(qū)是系統(tǒng)為打開的表分配的內(nèi)存單元一個表使用一個工作區(qū)工作區(qū)號:1~32767A~J表示前10個
VFP命令默認(rèn)對當(dāng)前工作區(qū)的表進(jìn)行操作選擇工作區(qū)數(shù)據(jù)工作期方式命令方式
SELECT工作區(qū)號|表別名7.10.1工作區(qū)
例SELEAUSESTUDENTUSESCOREALIASCJIN2?SELE()SELE0USEDEPARTMENT?SELE()SELESTUDENT?SELE()注意:0表示當(dāng)前未使用的最小工作區(qū)號SELE2USESCORESELE1USESTUDENTLIST學(xué)號,姓名,總分例
分別在不同工作區(qū)打開student表和score表,顯示學(xué)號,姓名,總分信息。非當(dāng)前工作區(qū)字段引用格式:1)<非當(dāng)前工作區(qū)表名>.<字段名>2)<非當(dāng)前工作區(qū)表別名>.<字段名>3)<工作區(qū)名>.<字段名>7.10.2工作區(qū)互訪注意:引用字段時工作區(qū)名不能使用數(shù)字編號SELE2USESCORESELE1USESTUDENTLIST學(xué)號,姓名,b.總分總分不變化?當(dāng)前工作區(qū)表STUDENT的指針從頭移動到文件尾部非當(dāng)前工作區(qū)表SCORE的指針一直在首記錄不動如何將2個表的信息對應(yīng)起來,使一個表的記錄指針移動時,另一個表的記錄指針也移動到相應(yīng)記錄上?根據(jù)表記錄的對應(yīng)關(guān)系劃分一對一(1:1)表1的一條記錄唯一對應(yīng)表2的一條記錄一對多(1:M)表1的一條記錄對應(yīng)表2的多條記錄多對一(M:1)表1的多條記錄對應(yīng)表2的一條記錄多對多(M:M)表1的多條記錄對應(yīng)表2的多條記錄7.10.3了解表間關(guān)系一對一關(guān)系一對多關(guān)系與多對一關(guān)系根據(jù)關(guān)系的存續(xù)時間劃分1.臨時關(guān)系各數(shù)據(jù)表在數(shù)據(jù)工作期間建立的關(guān)系,通過程序執(zhí)行方式進(jìn)行連接,使表間記錄指針關(guān)聯(lián)移動的關(guān)系。表關(guān)閉,關(guān)聯(lián)自動消失。2.永久關(guān)系利用數(shù)據(jù)庫設(shè)計(jì)器在不同表的索引間建立聯(lián)系,使各數(shù)據(jù)表關(guān)聯(lián)起來,用以維護(hù)數(shù)據(jù)庫表間的數(shù)據(jù)完整性。這種關(guān)系永久保存在數(shù)據(jù)庫中,打開數(shù)據(jù)庫即生效。但永久關(guān)系平時并不控制表記錄指針間的關(guān)系。臨時關(guān)系和永久關(guān)系★主表(父表):自身指針移動帶動它表指針移動的表對父表執(zhí)行操作可以帶動子表記錄指針移動進(jìn)行相應(yīng)操作。子表:被主表關(guān)聯(lián)的表注意:涉及2個表的操作一般在主表工作區(qū)執(zhí)行。
即主表動子表動,子表動主表不動。1.建立臨時關(guān)系通過數(shù)據(jù)工作期建立表間臨時關(guān)系7.10.4建立表間臨時關(guān)系★√對哪個表排序索引?按什么關(guān)鍵字排序索引?★兩表間建立臨時關(guān)系,必須對子表建立索引通過命令建立表間臨時關(guān)系命令格式SETRELATIONTO
關(guān)系表達(dá)式1
INTO
工作區(qū)號|子表別名
[,關(guān)系表達(dá)式2INTO工作區(qū)號|子表別名2…][IN工作區(qū)號|表別名][ADDITIVE]SELECT
2USEscoreINDEON學(xué)號
TAGxhSELECT1USE
studentSETRELATIONTO
學(xué)號
INTO
Score
LIST
學(xué)號,姓名,score.總分例
編一程序,按SCORE表中平均分由高到低顯示所有學(xué)生的學(xué)號、姓名、平均分信息。例
編一程序,顯示所有學(xué)生的學(xué)號、姓名、計(jì)算機(jī)成績。例
編一程序,按STUDENT表中年齡由大到小顯示所有學(xué)生的學(xué)號、姓名、年齡、總分信息。注意:
1.怎樣選擇主表
2.子表需按關(guān)鍵字建立索引3.如何引用非當(dāng)前工作區(qū)字段4.如何在3個以上的表間建立臨時關(guān)系?練習(xí):顯示所有學(xué)生的學(xué)號、姓名、總分、系名稱盡量選擇需要查詢或排序的字段所在表父-子-孫父-子(父)-子2.表間臨時關(guān)系的取消命令格式
SETRELATIONTO注意:當(dāng)相關(guān)表關(guān)閉時,臨時關(guān)系自動取消補(bǔ)充:按記錄號建立臨時關(guān)系SETRELATORECNO()INTO…SETRELATORECNO()+1INTO…1.建立永久關(guān)系的步驟:1)為各數(shù)據(jù)庫表建立索引。(1:1)主表子表建立主索引或候選索引都可以(1:m)主表建立主索引或候選索引,子表為普通索引2)將一個表的索引拖曳到需要建立關(guān)系的另一個表的相應(yīng)索引上。7.10.5表間永久關(guān)系(數(shù)據(jù)庫表)2.刪除表間關(guān)系3.編輯表間關(guān)系√級聯(lián):父表主關(guān)鍵字或候選關(guān)鍵字的操作反映到子表限制:禁止操作父表的主關(guān)鍵字或候選關(guān)鍵字忽略:允許對父表記錄進(jìn)行操作,不管子表相關(guān)記錄說明:永久關(guān)系的作用:維護(hù)數(shù)據(jù)庫表間的數(shù)據(jù)完整性。在“查詢設(shè)計(jì)器”和“視圖設(shè)計(jì)器”中,自動作為默認(rèn)聯(lián)接條件;作為表單和報表的默認(rèn)的臨時關(guān)系在“數(shù)據(jù)環(huán)境設(shè)計(jì)器”中顯示出來;用來存儲參照完整性信息。
7.10.6設(shè)置參照完整性※連接:將兩個數(shù)據(jù)表文件通過一定的條件連接成一個新數(shù)據(jù)表。命令格式:JOINWITH<工作區(qū)代號>TO<新庫名>
FOR<條件1>
溫馨提示
- 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)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 2025年在線預(yù)約服務(wù)協(xié)議
- 2025年倉庫出租合同
- 2025年現(xiàn)金贈與合同的風(fēng)險評估
- 2025年進(jìn)口擔(dān)保協(xié)議
- 2025年存貨質(zhì)押法律法規(guī)匯編
- 2025版委托代銷與授權(quán)經(jīng)營合同3篇
- 2025版高端酒店客房裝修與維護(hù)服務(wù)合同4篇
- 2025年度商鋪?zhàn)赓U預(yù)付定金合同范本4篇
- 二零二五年度企業(yè)裁員補(bǔ)償解除勞動合同賠償協(xié)議
- 二零二五年度鐵路貨運(yùn)合同貨物運(yùn)輸合同糾紛解決機(jī)制協(xié)議
- 機(jī)電安裝工程安全管理
- 2024年上海市第二十七屆初中物理競賽初賽試題及答案
- 信息技術(shù)部年終述職報告總結(jié)
- 高考滿分作文常見結(jié)構(gòu)完全解讀
- 理光投影機(jī)pj k360功能介紹
- 六年級數(shù)學(xué)上冊100道口算題(全冊完整版)
- 八年級數(shù)學(xué)下冊《第十九章 一次函數(shù)》單元檢測卷帶答案-人教版
- 帕薩特B5維修手冊及帕薩特B5全車電路圖
- 小學(xué)五年級解方程應(yīng)用題6
- 年月江西省南昌市某綜合樓工程造價指標(biāo)及
- 作物栽培學(xué)課件棉花
評論
0/150
提交評論