一、思考題
1.什么是數(shù)據(jù)庫(kù)表?什么是自由表?
2.什么是表結(jié)構(gòu)?表的哪幾種字段的寬度是固定不變的?
3.打開(kāi)表文件之后,為什么在Visual FoxPro主窗口沒(méi)有任何顯示信息?
4.如何編輯備注型字段的值?
5.LIST命令和DISPLAY命令有什么區(qū)別?
6.如果缺省范圍子句,哪幾條命令只對(duì)當(dāng)前記錄操作?
7.ZAP命令和PACK命令有什么區(qū)別?
8.什么是記錄指針,它的作用是什么?
9.什么是排序和索引?為什么索引的查詢(xún)效率高?
10.Visual FoxPro有幾種類(lèi)型的索引?是否所有的索引都可以在自由表中使用?在表設(shè)計(jì)器中可以創(chuàng)建的索引文件是哪一種?
11.什么是主控索引文件和主控索引標(biāo)識(shí)?它們的作用是什么?
12.LOCATE、FIND、SEEK命令在使用上有什么區(qū)別?怎么判斷查詢(xún)是否成功?
二、選擇題
1.某表文件有5個(gè)字段,其中3 個(gè)字符型寬度分別為6、12、和10,另外還有一個(gè)邏輯型字段和一個(gè)日期型字段,該數(shù)據(jù)庫(kù)文件中每條記錄的總字節(jié)數(shù)是 。
A)37 B)38 C)39 D)40
2.在表文件文件尾部增加一條空記錄,應(yīng)該使用命令 。
A)APPEND B)APPEND BLANK C)INSERT D)INSERT BLANK
3.設(shè)表文件及其索引文件已打開(kāi),為了確保指針定位在物理記錄號(hào)為1的記錄上,應(yīng)該使用命令 。
A)GO B)GO BOF() C)SKIP 1 D)GO 1
4.設(shè)職工表文件已經(jīng)打開(kāi),其中有工資字段,要把指針定位在第一個(gè)工資大于620元的記錄上,應(yīng)使用命令 。
A)FIND FOR 工資>620 B)SEEK 工資>620
C)LOCATE FOR 工資>620 D)FIND 工資>620
5.刪除學(xué)生表中姓王的學(xué)生,應(yīng)使用命令 。
A)DELETE FOR “王”$姓名 B)DELETE FOR SUBSTR (姓名,1,2)=“王”
C)DELETE FOR 姓名=王* D)DELETE FOR RIGHT (姓名,1)=“王”
6.USE職工
LOCATE FOR工資=900
為了將指針定位在下一個(gè)工資是900的記錄上,應(yīng)該接著使用命令 。
A)SKIP B)CONTINUE C)SEEK 900 D)FIND 900
7.設(shè)當(dāng)前表有10條記錄,當(dāng)EOF()為真時(shí),命令?RECNO()的顯示結(jié)果是 。
A)10 B)11 C)0 D)空
8.設(shè)當(dāng)前表中姓名字段為字符型,要把內(nèi)存變量NAME 字符串的內(nèi)容輸入到當(dāng)前記錄的姓名字段,應(yīng)當(dāng)使用命令 。
A)姓名=NAME B)REPLACE 姓名 WITH NAME
C)REPLACE 姓名 WITH &NAME D)REPLACE ALL 姓名 WITH NAME
9.在Visual FoxPro中,打開(kāi)索引文件的命令中,錯(cuò)誤的是 。
A) USE<庫(kù)文件名> INDEX TO <索引文件名>
B) USE<庫(kù)文件名> INDEX <索引文件名>
C) INDEX ON 職工號(hào) TO <索引文件名>
D) SET INDEX TO <索引文件名>
10.順序執(zhí)行下面命令之后,屏幕所顯示的記錄號(hào)順序是 。
USE XYZ
GO 6
LIST NEXT 4
A)1~4 B)4~7 C)6~9 D)7~10
11.在Visual FoxPro中,可以使用FOUND()函數(shù)來(lái)檢測(cè)查詢(xún)是否成功的命令包括 。
A) LIST、FIND、SEEK B)FIND、SEEK、LOCATE
C) FIND、DISPLAY、SEEK D) LIST、SEEK、LOCATE
三、上機(jī)題
1、建立表與復(fù)制表操作:
(1)建立一個(gè)職工表(zg.dbf),字段有:職工號(hào)(C,6),姓名(C,8),性別(L),出生日期(D),職稱(chēng)(C,10),基本工資(N,8,2),獎(jiǎng)金(N,8,2),實(shí)發(fā)工資(N,8,2),其內(nèi)容如下:
(2)修改職工表表結(jié)構(gòu),在實(shí)發(fā)工資前增加一個(gè)新的字段,扣款(N,8,2)。
(3)將zg.dbf的表結(jié)構(gòu)復(fù)制到新表zg1.dbf中。
(4)將zg.dbf 中的所有男教師的記錄都復(fù)制到zg2.dbf中。
2、寫(xiě)出下列顯示表記錄的命令。
(1)顯示zg.dbf中所有的講師
(2)顯示所有女教師的姓名
(3)顯示70年后出生的教師
(4)顯示第三條記錄的內(nèi)容
(5)顯示前三條男教師的姓名,出生日期,職稱(chēng)
(6)從第3條記錄開(kāi)始顯示到末尾記錄
(7)顯示所有男教授的姓名、年齡、基本工資
(8)顯示所有男性教授或副教授
(9)顯示所有姓林的教師
(10)顯示姓名中有“林”字的記錄。
3、修改命令。
(1)計(jì)算實(shí)發(fā)工資字段的值,實(shí)發(fā)工資=基本工資+津貼-扣款。
(2)在實(shí)發(fā)工資為0的情況下,分別執(zhí)行下列三條命令,比較它們的執(zhí)行結(jié)果。
Repl 實(shí)發(fā)工資 with 基本工資+津貼-扣款
Repl 實(shí)發(fā)工資 with 基本工資+津貼-扣款 for 職稱(chēng)="講師"
Repl all 實(shí)發(fā)工資 with 基本工資+津貼-扣款
4、完成下列刪除與恢復(fù)的命令。
(1)刪除所有男教師的記錄
(2)在刪除所有男教師的記錄的前提下,除姓“林”的外,恢復(fù)所有男教師的記錄
(3)在刪除所有男教師的記錄的前提下,除姓“陳”的助講外,恢復(fù)所有男教師的記錄
5、對(duì)zg.dbf完成下排序、索引命令。
(1)按基本工資降序建立排序文件szg1.dbf
(2)按基本工資建立單項(xiàng)索引,文件名為izg1.idx
(3)按基本工資建立結(jié)構(gòu)復(fù)合索引文件,按降序索引
(4)按基本工資建立獨(dú)立復(fù)合索引文件,索引標(biāo)識(shí)為jbgz,按降序索引,文件名為zgd1.cdx
(5)按基本工資升序,基本工資相同再按出生年月建立索引文件,文件名為zgd2.cdx
(6)分別按姓名、職稱(chēng)、出生日期建立結(jié)構(gòu)復(fù)合索引文件,索引標(biāo)識(shí)分別為XM、ZC、BIRTHDAY。
(7)打開(kāi)前面所建的所有索引文件,設(shè)置結(jié)構(gòu)復(fù)合索引文件為主控索引文件,設(shè)置XM為主控索引。
6、查找與統(tǒng)計(jì)。
(1)查找林一凡
(2)查找姓王的人
(3)查找工資是820.00的記錄
(4)查找職工號(hào)為3002姓名為丁強(qiáng)的記錄
(5)查找66年8月4日出生,職稱(chēng)為副教授的記錄
(6)統(tǒng)計(jì)男教師與女教師的人數(shù)
(7)統(tǒng)計(jì)女教師的實(shí)發(fā)工資、津貼總和
(8)求男教師的平均基本工資
(9)計(jì)算平均基本工資、平均津貼、基本工資和最少基本工資
(10)按職稱(chēng)進(jìn)行基本工資的匯總,匯總結(jié)果寫(xiě)入表zchz.dbf
參考答案
二、選擇題
1、B 2、B 3、D 4、C 5、B 6、B 7、B 8、B 9、A 10、C 11、B
三、上機(jī)題
1、建立表與復(fù)制表操作:
(1)用表設(shè)計(jì)器建立表zg.dbf,步驟詳見(jiàn)4.1.2建立表結(jié)構(gòu)。
(2)修改zg.dbf表結(jié)構(gòu),步驟詳見(jiàn)4.2.1 表結(jié)構(gòu)的修改。
(3)將zg.dbf的表結(jié)構(gòu)復(fù)制到新表zg1.dbf中。
USE ZG
COPY STRU TO ZG1
(4)將zg.dbf 中的所有男教師的記錄都復(fù)制到zg2.dbf中。
USE ZG
COPY TO ZG2 FOR 性別
2、寫(xiě)出下列顯示表記錄的命令。
(1)顯示zg.dbf中所有的講師
USE ZG
LIST FOR 職稱(chēng)=“講師”
(2)顯示所有女教師的姓名
LIST 姓名 FOR 性別=.F.(或 LIST 姓名 FOR !性別 )
(3)顯示70年后出生的教師
LIST FOR 出生日期>{^1970/01/01} 或 LIST FOR YEAR(出生日期)>1970
(4)顯示第三條記錄的內(nèi)容
LIST RECO 3
(5)顯示前三條男教師的姓名,出生日期,職稱(chēng)
GO
LIST NEXT 3 FOR 性別 FIELDS 姓名,出生日期,職稱(chēng)
(6)從第3條記錄開(kāi)始顯示到末尾記錄
GO 3
LIST REST
(7)顯示所有男教授的姓名、年齡、基本工資
LIST 姓名,年齡,基本工資 FOR 性別 AND 職稱(chēng)="教授"
(8)顯示所有男性教授或副教授
LIST FOR 性別 AND (職稱(chēng)="教授" OR 職稱(chēng)="副教授")
(9)顯示所有姓林的教師
命令一:LIST FOR LEFT(姓名,2)="林"
命令二:LIST FOR SUBSTR(姓名,1,2)="林"
命令三:LIST FOR 姓名="林"
(10)顯示姓名中有“林”字的記錄。
LIST FOR "林"$姓名
3、修改命令
(1)計(jì)算實(shí)發(fā)工資字段的值,實(shí)發(fā)工資=基本工資+津貼-扣款。
REPL ALL 實(shí)發(fā)工資 WITH 基本工資+津貼-扣款
(2)在實(shí)發(fā)工資為0的情況下,分別執(zhí)行下列三條命令,比較它們的執(zhí)行結(jié)果。
REPL 實(shí)發(fā)工資 WITH 基本工資+津貼-扣款
REPL 實(shí)發(fā)工資 WITH 基本工資+津貼-扣款 FOR 職稱(chēng)="講師"
REPL ALL 實(shí)發(fā)工資 WITH 基本工資+津貼-扣款
4、完成下列刪除與恢復(fù)的命令
(1)刪除所有男教師的記錄
DELE FOR 性別
(2)在刪除所有男教師的記錄的前提下,除姓“林”的外,恢復(fù)所有男教師的記錄
RECA FOR !(SUBSTR(姓名,1,2)="林")
(3)在刪除所有男教師的記錄的前提下,除姓“陳”的助講外,恢復(fù)所有男教師的記錄
RECA FOR !(SUBSTR(姓名,1,2)="陳" AND 職稱(chēng)="助教")
5、對(duì)zg.dbf完成下排序、索引命令
(1)按基本工資降序建立排序文件szg1.dbf
SORT ON 基本工資/D TO SZG1
(2)按基本工資降序建立單項(xiàng)索引,文件名為izg1.idx
INDEX ON -基本工資 TO IZG1
(3)按基本工資建立結(jié)構(gòu)復(fù)合索引文件,按降序索引
INDEX ON 基本工資 TAG GZ DESC
(4)按基本工資建立獨(dú)立復(fù)合索引文件的降序,索引標(biāo)識(shí)為jbgz,文件名為zgd1.cdx
INDEX ON 基本工資 DESC TAG JBGZ OF ZGD1
(5)按基本工資升序,基本工資相同再按出生年月建立索引文件,文件名為zgd2.cdx
USE ZG
INDEX ON STR(基本工資,6,2)+DTOC(出生日期) TAG GZCS OF ZGD2
(6)分別按姓名、職稱(chēng)、出生日期建立結(jié)構(gòu)復(fù)合索引文件,索引標(biāo)識(shí)分別為XM、ZC、BIRTHDAY。
USE ZG1
INDEX ON 姓名 TAG XM
INDEX ON 職稱(chēng) TAG ZC
INDEX ON 出生日期 TAG BIRTHDAY
(7)打開(kāi)前面所建的所有索引文件,設(shè)置結(jié)構(gòu)復(fù)合索引文件為主控索引文件,設(shè)置XM為主控索引。
SET INDEX TO IZG1, ZGD1,ZGD2 ORDER TAG XM
或 SET INDEX TO IZG1, ZGD1,ZGD2
SET ORDER TO TAG XM
6、查找與統(tǒng)計(jì)
(1)查找林一凡
USE ZG
SET INDEX TO XM
FIND 林一凡
SEEK "林一凡"
(2)查找姓王的人
FIND 王
SEEK "王"
(3)查找工資是820.00的記錄
INDEX ON 基本工資 TAG SALARY
FIND 820 或SEEK 820
(4)查找職工號(hào)為3002叫丁強(qiáng)的記錄
INDEX ON職工號(hào)+姓名 TAG GHXM
FIND 3002丁強(qiáng) 或 SEEK "3002"+"丁強(qiáng)"
(5)查找66年8月4日出生的副教授
INDEX ON DTOC(出生日期)+職稱(chēng) TO BZC
SEEK "08/04/66"+"副教授"
(6)統(tǒng)計(jì)男教師與女教師的人數(shù)
COUNT FOR 性別 TO X1
COUNT FOR !性別 TO X2
(7)統(tǒng)計(jì)女教師的實(shí)發(fā)工資、津貼總和
SUM 實(shí)發(fā)工資,津貼 FOR !性別 TO Y1,Y2
(8)求男教師的平均基本工資
AVERAGE 基本工資 FOR 性別
(9)計(jì)算平均基本工資、平均津貼、基本工資和最少基本工資
CALC AVG(基本工資),AVG(獎(jiǎng)金),MAX(基本工資),MIN(基本工資)
(10)按職稱(chēng)進(jìn)行基本工資的匯總,匯總結(jié)果寫(xiě)入表zchz.dbf
SET ORDER TO TAG ZC
TOTAL ON 職稱(chēng) TO ZCHZ FIELDS 基本工資
USE ZCHZ
LIST
注意:在zchz.dbf中只有四條記錄。