一、思考題
1.什么是數(shù)據(jù)庫(kù)表?什么是自由表?
2.什么是表結(jié)構(gòu)?表的哪幾種字段的寬度是固定不變的?
3.打開表文件之后,為什么在Visual FoxPro主窗口沒有任何顯示信息?
4.如何編輯備注型字段的值?
5.LIST命令和DISPLAY命令有什么區(qū)別?
6.如果缺省范圍子句,哪幾條命令只對(duì)當(dāng)前記錄操作?
7.ZAP命令和PACK命令有什么區(qū)別?
8.什么是記錄指針,它的作用是什么?
9.什么是排序和索引?為什么索引的查詢效率高?
10.Visual FoxPro有幾種類型的索引?是否所有的索引都可以在自由表中使用?在表設(shè)計(jì)器中可以創(chuàng)建的索引文件是哪一種?
11.什么是主控索引文件和主控索引標(biāo)識(shí)?它們的作用是什么?
12.LOCATE、FIND、SEEK命令在使用上有什么區(qū)別?怎么判斷查詢是否成功?
二、選擇題
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è)表文件及其索引文件已打開,為了確保指針定位在物理記錄號(hào)為1的記錄上,應(yīng)該使用命令 。
A)GO B)GO BOF() C)SKIP 1 D)GO 1
4.設(shè)職工表文件已經(jīng)打開,其中有工資字段,要把指針定位在第一個(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中,打開索引文件的命令中,錯(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è)查詢是否成功的命令包括 。
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),職稱(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、寫出下列顯示表記錄的命令。
(1)顯示zg.dbf中所有的講師
(2)顯示所有女教師的姓名
(3)顯示70年后出生的教師
(4)顯示第三條記錄的內(nèi)容
(5)顯示前三條男教師的姓名,出生日期,職稱
(6)從第3條記錄開始顯示到末尾記錄
(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 職稱="講師"
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)分別按姓名、職稱、出生日期建立結(jié)構(gòu)復(fù)合索引文件,索引標(biāo)識(shí)分別為XM、ZC、BIRTHDAY。
(7)打開前面所建的所有索引文件,設(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日出生,職稱為副教授的記錄
(6)統(tǒng)計(jì)男教師與女教師的人數(shù)
(7)統(tǒng)計(jì)女教師的實(shí)發(fā)工資、津貼總和
(8)求男教師的平均基本工資
(9)計(jì)算平均基本工資、平均津貼、基本工資和最少基本工資
(10)按職稱進(jìn)行基本工資的匯總,匯總結(jié)果寫入表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,步驟詳見4.1.2建立表結(jié)構(gòu)。
(2)修改zg.dbf表結(jié)構(gòu),步驟詳見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、寫出下列顯示表記錄的命令。
(1)顯示zg.dbf中所有的講師
USE ZG
LIST FOR 職稱=“講師”
(2)顯示所有女教師的姓名
LIST 姓名 FOR 性別=.F.(或 LIST 姓名 FOR !性別 )
(3)顯示70年后出生的教師
LIST FOR 出生日期>{^1970/01/01} 或 LIST FOR YEAR(出生日期)>1970
(4)顯示第三條記錄的內(nèi)容
LIST RECO 3
(5)顯示前三條男教師的姓名,出生日期,職稱
GO
LIST NEXT 3 FOR 性別 FIELDS 姓名,出生日期,職稱
(6)從第3條記錄開始顯示到末尾記錄
GO 3
LIST REST
(7)顯示所有男教授的姓名、年齡、基本工資
LIST 姓名,年齡,基本工資 FOR 性別 AND 職稱="教授"
(8)顯示所有男性教授或副教授
LIST FOR 性別 AND (職稱="教授" OR 職稱="副教授")
(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 職稱="講師"
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 職稱="助教")
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)分別按姓名、職稱、出生日期建立結(jié)構(gòu)復(fù)合索引文件,索引標(biāo)識(shí)分別為XM、ZC、BIRTHDAY。
USE ZG1
INDEX ON 姓名 TAG XM
INDEX ON 職稱 TAG ZC
INDEX ON 出生日期 TAG BIRTHDAY
(7)打開前面所建的所有索引文件,設(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(出生日期)+職稱 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)按職稱進(jìn)行基本工資的匯總,匯總結(jié)果寫入表zchz.dbf
SET ORDER TO TAG ZC
TOTAL ON 職稱 TO ZCHZ FIELDS 基本工資
USE ZCHZ
LIST
注意:在zchz.dbf中只有四條記錄。