Ⅰ 誰能列表告訴我Visual FoxPro的一些常用命令
Visual FoxPro常用命令分類表
資料庫文件及記錄命令
ADD TABLE 在當前資料庫中添加一個自由表
APPEND 在表的末尾添加一個或多個新記錄
APPEND FROM ARRAY 由數組添加記錄到表中
APPEND FROM 從一個文件中讀入記錄,追加到當前表的尾部
APPEND GENERAL 從文件中導入OLE對象並將其放入通用欄位中
APPEND MEMO 將文本文件的內容復制到備注欄位中
APPEND PROCEDURES 將文本文件中的存儲過程追加到當前資料庫中
AVERAGE 計算數值表達式或欄位的算術平均值
BLANK 清除當前記錄中所有欄位的數據
BROWSE 打開瀏覽窗口,顯示當前或選定表的記錄
CALCULATE 對表中的欄位或包含欄位的表達式進行財務和統計操作
CHANGE 顯示要編輯的欄位
CLOSE 關閉各種類型的文件
CLOSE MEMO 關閉一個或多個備注編輯窗口
COMPILE DATABASE 編譯資料庫中的存儲過程
CONTINUE 繼續執行先前的LOCATE命令
COPY MEMO 復制當前記錄中的指定備注欄位的內容到文本文件
COPY PROCEDURES 將當前資料庫中』的存儲過程復制到文本文件
COPY STRUCTURE 用當前選擇的表結構創建一個新的空自由表
COPY STRUCTURE EXTENDED 創建新表,它的欄位包含當前選定表的結構信息
COPY TO ARRAY 將當前選定表中的數據復制到數組
COPY TO 用當前選定表的內容創建新文件
COUNT 統計表中記錄數目
CREATE 生成一個新的VisualFoxPro表
CREATE CONNECTION 創建一個命名連接並把它存儲在當前資料庫中
CREATE DATABASE 創建並打開一個資料庫
CREATE TRIGGER 創建表的刪除、插入或更新觸發器
CREATE VIEW 從VisualFoxPro環境創建視圖文件
DELETE 給要刪除的記錄做標記
DELETE CONNECTION 從當前資料庫中刪除一個命名連接
DELETE DATABASE 從磁碟上刪除資料庫
DELETE TRIGGER 從當前資料庫的表中刪除「刪除」、「插入」或「更新」觸發器│
DELETE VIEW 從當前資料庫中刪除一個SQL視圖
DISPLAY 在VisualFoxPro主窗口或用戶自定義窗口中顯示與當前表有關的信息
DISPLAY CONNECTIONS 顯示當前資料庫中與命名連接有關的信息
DISPLAY DATABASE 顯示有關當前資料庫的信息,或當前資料庫中的欄位、命名連接、表或視圖的信息
DISPLAY MEMORY 顯示內存變數和數組的當前內容
DISPLAY PROCEDURES 顯示當前資料庫中存儲過程的名稱
DISPLAY STRUCTURE 顯示一個表文件的結構
DISPLAY TABLES 顯示包含在當前資料庫中所有的表和表的信息
DISPLAY VIEWS 顯示當前資料庫中關於SQL視圖的信息以及SQL視圖是否基於本地或遠程表的信息
DROP TABLE 把一個表從資料庫中移出,並從磁碟中刪除它
DROP VIEW 從當前資料庫中刪除指定的SQL視圖
EDIT 顯示要編輯的欄位
FoxPro的命令結構一般由命令動詞、語句體和注釋幾部分構成。
如:LIST [范圍] [[FIELDS 欄位名列表] [FOR 條件][WHILE 條件] [OFF] [TO PRINT]
常用子句
范圍:表示記錄的執行范圍,可以是下面幾項其中之一:
ALL 表示全部記錄;
NEXT n 表示從當前記錄開始的以下n條記錄;
RECORD n 表示第n號記錄;
REST 表示從當前記錄到最後一條記錄。
FIELDS 欄位名表:用於指定操作的欄位,多個欄位時用逗號分隔。
FOR條件:對滿足條件的記錄進行操作。
WHILE 條件:當遇到第一個不滿足條件的記錄時,停止命令執行。
以下命令中,大寫的英文詞為關鍵詞,必須原樣照寫。
「常用子句」指以下幾個可選子句:
[范圍] [FIELDS 欄位名表] [FOR 條件] [WHILE 條件]
命令中的「列表」,指用「,」分隔的各項。如「欄位名列表」就是將各個欄位名用逗號分隔。
部分英文詞的意義:Databasename 數據名 tablename 數據表名 filename 文件名 Viewname 視圖名 arrayname 數組名
提示:加下劃線的為本課程要求掌握的命令。
一、資料庫的建立、打開、關閉和刪除
建立資料庫:
CREATE DATABASE [databasename|?]
從磁碟中刪除資料庫:
DELETE DATABASE databasename|?
打開資料庫:
OPEN DATABASE [EXCLUSIVE|SHARED][NOUPDATE]
打開資料庫設計器(允許用戶按交互方式編輯當前資料庫):
MODIFY DATABASE [databasename|?]
指定的資料庫databasename為當前資料庫。
指定當前的資料庫:
SET DATABASE TO [databasename]
Databasename必須為已經打開的資料庫。如果省略資料庫名稱databasename,則不指定當前資料庫(沒有當前資料庫)。
關閉資料庫:
CLOSE DATABASE [ALL]
關閉當前資料庫,如果帶ALL子句,則關閉所有打開的資料庫。
二、數據表和視圖的建立、打開、關閉和刪除
建立數據表(SQL命令):
CREATE TABLE | DBF tablename (Col_name1 Type1 [NOT NULL/NULL]
[{,Col_name2 Type2 [NOT NULL/NULL]}...])
table_name是所創建的數據表的名字。
Col_name1,Col_name2,...是表中列的名。
Type1, Type2...是相應列的數據類型(VFP的數據類型見表3-9)。
如果說明為NOT NULL,則列中不允許分配空值(這種情況下,列不能包含空值,如果插入空值,將返回錯誤信息)。
向當前打開的資料庫中添加數據表:
ADD TABLE tablename|?
從當前打開的資料庫中刪除數據表:
REMOVE TABLE tablename|? [DELETE]
如果包含DELETE子句,將從磁碟中刪除這個表文件,否則,只從資料庫中刪除,但文件仍保存在磁碟中。
在當前打開的資料庫中建立視圖:
CREATE SQL VIEW viewname AS SELECT ……
其中SELECT ……為SELECT語句。
執行這個語句時,如果沒有打開的資料庫,則建立獨立的視圖,這樣的視圖不能存儲。
從當前打開的資料庫中刪除視圖:
DELETE VIEW viewname
打開一個表:
USE tablename|? [IN 工作區號]
將當前數據表與另一數據表連接後建立一個新表:
JOIN WITH 工作區號|表別名 TO tablename FOR 條件 [FIELDS 欄位名表]
三、數據表和表結構的編輯、修改
打開瀏覽窗口(可在其中編輯數據表):
BROWSW(詳細格式見P. 114~116)
打開並修改數據表中的欄位:
(1) CHANGE [FIELDS 欄位名列表]
(2) EDIT [FIELDS 欄位名列表]
這兩個命令的功能相似,可選子句較多(詳見手冊)。
數據表改名:
RENAME TABLE tablename1 TO tablename2
其中數據表tablename1必須存在且未打開。
視圖改名:
RENAME VIEW viewname1 TO viewname2
其中數據表tablename1必須存在且未打開。
修改數據表結構(SQL命令):
ALTER TABLE tablename ;
ADD 欄位名 Type [NULL | NOT NULL]
[,欄位名 Type [NULL | NOT NULL] ;
[ALTER COLUMN欄位名Type {NULL | NOT NULL}];
[{,欄位名Type NULL | NOT NULL}...] ;
[DROP欄位名[,欄位名[, ...]]
將當前表與另一表之間建立關聯:
SET RELATION TO [表達式1 INTO 工作區號1 | 表別名1];
[, 表達式2 INTO 工作區號2 | 表別名2] [, ...]
建立關聯的兩個表必須事先已按關聯表達式進行索引排序。
在當前表與另一表之間建立一對多關聯:
SET SKIP TO表別名1[, 表別名2]
消除當前表與另一表之間的關聯:
SET RELATION OFF INTO 工作區號 | 表別名
四、數據表中數據操作(查詢、插入、刪除和修改等)
數據查詢SELECT語句(SQL命令)
格式見教材的有關章節。這是本課程的重點內容,必須很好地掌握。
更改數據表中的記錄:
REPLACE 欄位1 WITH 表達式1[ADDITIVE];
[,< [,<欄位2> WITH <表達式2>[ADDITIVE],…];
[FOR 條件1][WHILE條件2]
其中的ADDITIVE子句適用於備注欄位,表示將表達式的值加在欄位的末尾。
用內存數組的值更新數據表中的記錄:
REPLACE FROM ARRAY數組名 [FIELDS 欄位名列表][常用子句]
用新的值更新表中的記錄(SQL命令):
UPDATE [databasename!]tablename;
SET Column_1=Expression1 [{Column_2=expression2}...] ;
[WHERE Condition]
用一個表中的數據更新當前指定工作區中打開的表:
UPDATE ON fieldname FROM filename;
REPLACE fieldname1 WITH expr1
[, fieldname2 WITH expr2 [, ...]]
給記錄加刪除標記(SQL命令):
DELETE FROM [databasename!]tablename;
[WHERE 條件]
給記錄加刪除標記:
DELETE [范圍] [FOR 條件] [WHILE 條件];
[IN 工作區號|表別名]
永久刪除加了刪除標記的記錄:
PACK
永久刪除打開的資料庫中加了刪除標記的記錄:
PACK DATABASE
去掉刪除標記(恢復)
RECALL [常用子句]
刪除一個表中所有記錄(保留表的結構):
ZAP [IN tablename|alias]
為數據表文件追加記錄:
APPEND [BLANK][IN 工作區號|別名]
從另一個文件中提取數據添加到當前數據表的尾部:
APPEND FROM filename|? [FIELDS 欄位名列表][ FOR 條件]
其中filename所指定的文件可以是數據表、EXCEL電子表格、文本文件等,如果不是數據表,需要其它子句指定格式(詳見手冊)。
用內存數組的值添加到當前數據表的尾部:
APPEND FROM ARRAY arrayname [ FOR 條件][FIELDS欄位名列表]
數據中的一行對應一個新記錄,一列對應一個欄位。
從一個文件輸入一個OLE對象放入一個通用(general)欄位 :
APPEND GENERAL 通用欄位名 [FROM filename]
如果省略子句FROM filename,則將指定的欄位清空。
將一個文本文件的內容拷貝到一個備注欄位 :
APPEND MEMO 備注欄位名 [FROM filename][OVERWRITE]
如果省略子句FROM filename,則將指定的欄位清空。
插入新記錄(在當前記錄之前或後插入):
INSERT [BLANK] [BEFORE]
如不省略BLANK,則插入一個空白記錄,且不顯示輸入窗口。
在表中插入新記錄並賦值(SQL命令):
INSERT INTO tablename [(欄位1 [, 欄位2, ...])]VALUES (eExpression1 [, eExpression2, ...])
或
INSERT INTO tablename FROM ARRAY ArrayName | FROM MEMVAR
如帶有FROM MEMVAR子句,則用同名的內存變數給欄位賦值。
清除當前記錄中欄位的數據:
BLANK [常用子句]
移動記錄指針:
SKIP [n] [IN 工作區號|表別名]
五、文件管理(文件和文件夾的復制、創建和刪除)
從當前表復制出表或其它類型的文件(表須打開)
COPY TO filename [FIELDS 欄位名列表] [常用子句] [其它子句]
如果沒有指定類型,則復制一個與當前的表相同的數據表。
復製表的結構
COPY STRUCTURE TO filename [FIELDS欄位名列表]
復制任何文件:
COPY FILE 源文件 TO 目的文件
如果用此命令復製表,表須關閉
從磁碟上刪除任意文件:
(1)ERASE filename|?
(2)DELETE FILE [filename|?]
任意文件改名(或文件移動到另一文件夾):
RENAME filename1 TO filename2
其中filename1和filename2都可以包含路徑。如二者不在同一文件夾,則將filename1移動到filename2所在的文件夾。
顯示一個文件夾中的文件信息:
DIR | DIRECTORY [ON drive]
從磁碟上刪除一個文件夾:
RD | REDIR 文件夾名
在磁碟上建立一個文件夾:
MD | MKDIR文件夾名
六、數據的復制與傳送
單個記錄與數組間的數據傳送
當前記錄 → 數組或內存變數:
SCATTER [FIELDS欄位名列表][MEMO]TO 數組名 [BLANK] | MEMVAR [BLANK]
其中[BLANK]表示建立一個空元素的數組。如果用MEMVAR子句,則表示將各欄位的值復制到同名同類型的內存變數。
如果包含MEMO子句,則備注欄位一起復制。
數組或內存變數 → 當前記錄
GATHER FROM 數組名 | MEMVAR [FILEDS欄位名列表] [MEMO]
用同名的內存變數或數組中的第一行置換當前記錄,如果數組為多行的二維數組,也只用第一行。
成批記錄與數組間的數據傳送
表 → 數組:
COPY TO ARRAY arrayname [常用子句]
數組 → 表:
(1) APPEND FROM ARRAY arrayname [ FOR 條件][FIELDS欄位名列表]
用內存數組的值加在數據表的尾部,數據中的一行對應一個新記錄,一列對應一個欄位。
(2) REPLACE FROM ARRAY數組名 [常用子句]
用內存數組的值更新數據表中符合條件的記錄。
查詢結果 → 數組:
SELECT …… INTO ARRAY arrayname
將SQL SELECT語句的查詢結果傳給數組arrayname。這里「SELECT ……」可為各種形式的SELECT查詢語句。
給內存變數賦值:
STORE 表達式 TO 變數名
或
變數名=表達式
七、排序與索引
將當前表排序後建立一個新數據表:
SORT TO 文件名 ON 欄位名1 [/A | /D] ;
[/C] [ 欄位名2 [/A | /D] [/C] ...];
[ASCENDING | DESCENDING] [常用子句];
建立單索引文件:
INDEX ON 表達式 TO 單索引文件名;
[FOR<條件>] [UNIQUE] [COMPACT];
[ASCENDING][DESCENDING][ADDITIVE]
建立復合索引文件:
INDEX ON 表達式 TO TAG 索引名 [OF 復合索引文件名];
[FOR 條件] [UNIQUE|CANDIDATE];
[ASCENDING][DESCENDING][ADDITIVE]
使用索引文件:
打開表時將索引文件一並打開,USE命令帶INDEX子句:
USE tablename|? [IN 工作區號][INDEX 索引文件名列表|?]
給當前表打開一個或多個索引文件:
SET INDEX TO〔索引文件名列表|?〕;
[ORDER 索引文件名序號|索引文件名|[TAG]索引名 [OF 復合索引文件名] ;
[ASCENDING][DESCENDING]〕
指定字元欄位在排序或索引時的整理系列:
SET COLLATE TO 整理系列
對於漢字字元串,「整理系列」可以是「Machine」、「PinYin」或「Stroke」三者之一(必須帶引號),分別表示按機器碼、拼音和筆劃排序。
指定當前表中的控制索引文件或標記:
SET ORDER TO;
[索引文件名序號|索引文件名|[TAG]索引名 [OF 復合索引文件名];
[IN 工作區號|表別名];
[ASCENDING][DESCENDING]
刪除索引
DELETE TAG ALL [OF 復合索引文件名]
DELETE TAG 索引標識1 [OF 復合索引文件名1];
[,索引標識2 [OF 復合索引文件名2]]…
八、查找和定位
順序查找當前表中滿足條件的第一條記錄:
LOCATE FOR 條件下[范圍][WHILE條件]
找到後將記錄指針定位在滿足條件的第一條記錄,且函數FOUND()的返回值為真。
在索引表中查找:
FIND cExpr
其中cExpr為字元串表達式。如果找到,則記錄指針定位在滿足條件的第一條記錄,且函數FOUND()的返回值為真;查找失敗時,FOUND()的返回值為假,記錄指針定位在文件尾。
在索引表中查找:
SEEK eExpr;
[ORDER 索引文件名序號|索引文件名|[TAG]索引名 [OF 復合索引文件名] ;
[ASCENDING][DESCENDING]〕;
[IN 工作區號|表別名]
如果找到,則記錄指針定位在滿足條件的第一條記錄,且為真;查找失敗時,FOUND()的返回值為假,記錄指針定位在文件尾。
繼續查找:
CONTINUE
用LOCATE、 FIND或 SEEK查找到一條記錄後,用CONTINUE繼續查找下一條。
用以上查找命令LOCATE、 FIND、SEEK和CONTINUE的查找結果,都可以通過函數FOUND()的返回值反映出來。
九、統計計算
統計表中的記錄數:
COUNT [范圍] [FOR 條件] [WHILE 條件][TO內存變數名]
統計滿足條件的記錄數,顯示記錄數或將結果賦給內存變數名。
求和:
SUM [表達式列表];
[范圍] [FOR 條件] [WHILE 條件][TO內存變數名|TO ARRAY 數組名]
求平均值:
AVERAGE [表達式列表];
[范圍] [FOR 條件] [WHILE 條件][TO內存變數名|TO ARRAY 數組名]
對當前表中數值型欄位進行分組求和:
TOTAL TO tablename ON 欄位名[常用子句]
其中tablename為存放結果的表文件名,欄位名為確定求和分組的欄位。
計算:
CALCULATE 表達式列表;
[范圍] [FOR 條件] [WHILE 條件][TO內存變數名|TO ARRAY 數組名]
其中表達式列表可以是如下函數的任意組合:
AVG(nExpr), CNT(), MAX(eExpr), MIN(eExpr), NPV(nExpr1, nExpr2,…),
STD(nExpr),SUM(nExpr),VAR(nExpr)
其中nExpr為數值表達式,eExpr為任意表達式。
十、程序控制
條件語句:
IF 條件 [THEN]
……
[ELSE]
[……]
ENDIF
多分支語句:
DO CASE
CASE 邏輯表達式1
……
CASE 邏輯表達式2
……
CASE 邏輯表達式n
……
[OTHERWISE]
……
ENDCASE
DO循環:
DO WHILE 條件
[LOOP]
……
[EXIT]
……
ENDDO
FOR循環
FOR 循環變數=初值 TO 終值 STEP 步長
……(中間可插入[LOOP]或[EXIT])
ENDFOR | NEXT
掃描循環(對一個表中滿足條件的記錄進行循環):
SCAN [范圍] [FOR 條件] [WHILE 條件]
……(中間可插入[LOOP]或[EXIT])
ENDSCAN
集合掃描循環
FOR EACH Var IN Group
Commands
[EXIT]
[LOOP]
ENDFOR | NEXT [Var]
十一、其它
定義數組:
DECLARE | DIMENSION 數組名(下標1,下標2,……)
定義過程:
PROCEDURE 過程名
PARAMETERS 參數表
……
RETURN [TO MASTER | TO 程序名]
定義函數:
FUNCTION 函數名
PARAMETERS 參數表
……
RETURN 表達式
調用一個子程序或過程
DO 子程序名 | 過程名 [IN 程序文件名][WITH 實在參數表]
定義公共變數:
PUBLIC 變數名列表
PUBLIC [ARRAY] 數組名1(行1,列1)[, 數組名2(行2,列2) [,…]]
定義私有變數
PRIVATE變數名列表
PRIVATE ALL[LIKE | EXCEPT 通配符]
定義局部變數
LOCAL 變數名列表
LOCAL [ARRAY] 數組名1(行1,列1)[, 數組名2(行2,列2) [,…]]
顯示各種信息:
LIST … (格式見有關手冊)
DISPLAY … (格式見有關手冊)
輸出提示信息:
WAIT [<提示信息>] [TO <內存變數>];
[WINDOW[AT[<行>,< 列>] [NOWAIT]];
[CLEAR|NOCLEAR];
[TIMEOUT<數值表達式>]
各種設置命令:
設置是否顯示日期中的世紀:
SET CENTURY ON | OFF
設置顯示的小數位數:
SET DECIMALS TO 小數位數
設置是否處理帶刪除標記的記錄:
SET DELETED ON | OFF
如果設置為ON,則不處理帶刪除標記的記錄。
設置是否顯示命令的結果:
SET TALK ON | OFF
設置文件的搜索路徑:
SET PATH TO 路徑
設置傳給子程序或自定義函數的參數是按值還是按引用方式傳遞:
SET UDFPARMS TO VALUE | REFERENCE
如設置為TO VALUE,表示按值傳遞。
執行一個外部命令或程序:
RUN 命令或程序
在指定的位置顯示或列印:
@行,列 SAY …
在指定的位置顯示表達式的值,並等待用戶輸入,將輸入值賦給一變數:
@行,列 SAY 表達式 GET 變數名 [DEFAULT 表達式]
READ
例:
@2,2 say "請輸入金額: " get nMoney default 50
Read
此例先在第2行、第2列顯示"請輸入金額: ",等待用戶輸入一個數值,將用戶輸入值賦給變數nMoney,如果用戶不輸入數值(直接按回車),則將50賦給nMoney。請注意在下一行不能漏掉「Read」。
Ⅱ VF中如何建立索引,用命令。從建表到用命令建立索引
建表命令:CREAT 表名建立索引步驟及命令:USE 要建立索引的表名INDEX ON 索引關鍵字 TO 索引文件名索引關鍵字:是表中的一個欄位,也就是你要以哪個欄位為關鍵字進行索引索引文件名:建立的索引文件的文件名,可以和表的文件名相同,也可以不同。
Ⅲ 請總結一下表的排序和表索引有什麼不同
建索引是在系統中建立一個索引表,在查找記錄的時候可以通過這個表迅速找到。
排序是將表在系統中按一個鍵值的進行的,改變了記錄的物理順序。
Ⅳ VF中索引和排序的區別是什麼
排序是將文件按排序後的格式重新寫回磁碟,而索引並不改變文件中記錄的物理順序,只是用一個索引文件通過其它一些方法使文件中記錄在內存中有序。
從這一點來說,索引比排序快。
Ⅳ 索引排序vb演算法原理
快速從一個大數據集中找出某個欄位等於確定值的記錄。
vb內部排序7大演算法:1、冒泡排序2、直接選擇排序(StraightSelectSort)(BubbleSort)3、直接插入排序(StraightInsertionSort)4、希爾排序(ShellSort)5、快速排序(QuickSort)6、歸並排序(MergeSort)7、堆排序(HeapSort)。
索引是一種利用某種規則的數據結構與實際數據的關系加快數據查找的功能;索引數據節點中有著實際文件的位置,因為索引是根據特定的規則和演算法構建的,在查找的時候遵循索引的規則可以快速查找到對應數據的節點,從而達到快速查找數據的效果;其實宏觀來說索引其實是一種概念而不是具體的某項技術,只是我們在某個技術中運用得比較廣泛和鮮明(比如說資料庫)漸漸的有了特定領域的標簽,其實在生活中索引的使用無處不在,比如說:書本里的目錄;讀書時的座位號,考試編號都有類似索引的功能。
Ⅵ sort命令排序與索引文件排序的區別在哪裡(考慮優缺點)
少兒的命令排序和索引文件排序的區別,可以從他們的六七點考慮
Ⅶ Visual Foxpro 5.0怎樣建立索引及排序
創建一個索引文件,利用該文件可以按某種邏輯順序顯示和訪問表記錄。
INDEX ON eExpression TO IDXFileName | TAG TagName
[ COLLATE cCollateSequence ] [OF CDXFileName] [FOR lExpression]
[COMPACT] [ASCENDING | DESCENDING] [UNIQUE | CANDIDATE] [ADDITIVE]
參數
eExpression
指定一個索引表達式,該表達式中可以包含當前表中的欄位名。在索引文件中,按索引表達式給每一個表記錄都創建一個索引關鍵字,Visual FoxPro 使用這些關鍵字來顯示和訪問表中的記錄。
注意 不要使用變數, 數組元素, 或另一個工作區中的欄位或欄位表達式作為 eExpression。如果你訪問一個包含變數或不再存在或不能找到的欄位的索引, Visual FoxPro 產生一條錯誤信息。
備注欄位不能單獨用於索引文件的表達式; 它們必須與其它字元表達式組合使用。如果你包含前綴是表別名或工作區的欄位到索引表達式中, Visual FoxPro 產生一條錯誤信息。
雖然在包含別名欄位的情況下,可以用 Rushmore 技術優化 FOR 子句,但在創建索引時最好避免使用別名欄位。在有些情況下(USE ... AGAIN、SQL 查詢等等),Visual FoxPro 會自動給表指定一個不同的別名,這時可能不能正確更新或使用索引。有關 Rushmore 技術的詳細內容,請參閱 用 Rushmore 查詢優化數據訪問速度。
如果要建立一個具有可變長度關鍵字的索引,關鍵字會被空格填充。Visual FoxPro 不支持可變長度的索引關鍵字。
索引關鍵字的長度可以為 0。例如,當索引表達式是空備注欄位的一個子字元串時,所創建的索引關鍵字長度就為 0。當 Visual FoxPro 創建索引時,它檢驗表中第一個記錄的欄位,如有一個欄位為空,可能需要向第一個記錄中這樣的欄位內填入一些臨時數據,以免產生長度為 0 的索引關鍵字。
.idx 索引的索引關鍵字長度必須在 1 到 100 個字元之間。 .cdx 索引的索引關鍵字必須在 1 到 240 字元之間。
TO IDXFileName
創建 .IDX 索引文件。索引文件的默認擴展名為 .IDX,可以使用一個與之不同的擴展名,也可以在 Visual FoxPro 配置文件內改變索引文件的這個默認擴展名。創建索引文件時,必須遵循標准 MS-DOS 的文件命名規則。
TAG TagName [COLLATE cCollateSequence] [OF CDXFileName]
創建一個復合索引文件。復合索引文件是一種可包含任意數量的獨立標識(索引項)的單個索引文件,每一個標識都由其唯一標識名確定。標識名必須以字母或下劃線開頭,最多可由 10 個字母、數字或下劃線組成。復合索引文件中的標識數目僅受可用內存和磁碟空間的限制。
多項復合索引文件一般是壓縮的。創建復合索引文件時不必包含 COMPACT 。復合索引文件的擴展名為 .CDX。
COLLATE cCollateSequence 子句指定一個非默認設置 MACHINE 的比較序列。cCollateSequence 參數必須是可用的 Visual FoxPro 比較序列。關於設置比較序列的詳細信息, 參見 優化國際化應用程序 和 set collate 命令。
可創建的復合索引文件有兩種類型:結構復合索引文件的和非結構復合索引文件。
在 TAG TagName 參數中不包含可選的 OF CDXFileName 子句,便可以創建結構復合索引文件。結構復合索引文件的基本名(不含擴展名的文件名)總是與表的基本名相同,並且自動與表同時打開。
如果一個表的復合索引文件不能被定位、已被刪除,或者已被重命名,則在打開該表時會顯示一個對話框。這時如果在對話框中選擇默認的「取消」按鈕,則不打開表;如選擇「忽略」按鈕,則打開該表,並且刪除表頭中的標記。表頭表明該表與結構復合索引文件相關聯。
提示 如果一個結構復合索引已經與它的表脫離關系,則用下面的命令可以使它重新和表相關聯:
USE TableName INDEX CDXFileName
在 TAG TagName 參數之後包含 OF CDXFileName,便可以創建非結構復合索引文件。與結構復合索引不同的是,必須明確使用 SET index 命令或 USE 命令中的 INDEX 子句打開非結構復合索引文件。
如果一個復合索引文件已經創建並打開, 發出 INDEX 帶 TAG TagName 添加一個標識到復合索引文件中。
CDXFileName 的名字與結構復合索引是非關聯的。確信在表被修改後重新索引它 如果是非關聯的結構復合索引。
FOR lExpression
指定一個條件,只顯示或訪問滿足這個條件表達式 lExpression 的記錄,索引文件只為那些滿足條件表達式的記錄創建索引關鍵字。
如果 lExpression 是一個可優化表達式,Rushmore 將優化 INDEX ... FOR lExpression 命令。
詳細信息, 參見SET OPTIMIZE 和 用 Rushmore 查詢優化數據訪問速度。
COMPACT
創建一個壓縮的 .IDX 文件。
ASCENDING
指定 .CDX 文件為升序。在默認情況下,按升序創建 .CDX 標識(包含 ASCENDING 參數可以將索引文件的排序方式明確指示出來)。同樣,包含 DESCENDING 可按降序索引一個表。
DESCENDING
指定 .CDX 文件為降序。在創建 .IDX 文件時不能包含 DESCENDING 參數,但可以用 SET INDEX 或 SET ORDER 命令將 .IDX 索引文件指定為降序。
UNIQUE
對於一個索引關鍵字值,只有第一個滿足該值的記錄包含在 .IDX 文件或 .CDX 標識中。利用 UNIQUE 子句可以避免顯示或訪問記錄的重復值。所有添加到表中的記錄,如果與表中原有記錄有重復的索引關鍵字值,則不包含在索引文件之內。使用 index 命令的 UNIQUE 選項,與在執行 INDEX 或 REindex 命令之前執行 SET UNIQUE ON 命令完全等效。
在 UNIQUE 索引或索引標識處於激活狀態時,如果更改了一個有重復索引關鍵字值的記錄,則同時需要更新索引或索引標識。但在重新用 REindex 命令重索引該文件之前,仍然不能訪問下一個有相同索引關鍵字值的記錄。
CANDIDATE
創建候選結構索引標識。只有在創建結構索引標識時才能包含關鍵字 CANDIDATE;否則,Visual FoxPro 會產生錯誤信息。
使用候選索引標識可以避免索引表達式 eExpression 指定的欄位或欄位組合有重復值。Candidate(候選)一詞是指索引類型;因為候選索引中不同的記錄沒有重復值,所以它們可以作為主索引的「候選」索引。
如果一個欄位或欄位組合已包含重復值,那麼為它創建候選索引標識時,Visual FoxPro 會產生錯誤信息。
有關候選索引標識和主索引標識的詳細內容,請參閱 設置主索引或候選索引。
ADDITIVE
所有先前已打開的索引文件保持打開狀態。如省略 ADDITIVE 子句,則在用 index 命令創建索引文件或表時,關閉所有先前已打開的索引文件(結構復合索引文件除外)。
備注
在具有索引文件的表中,可以按索引表達式所規定的順序顯示或訪問記錄,但並不按索引文件更改表的物理存儲順序。
如果 SET TALK 設置成 ON,則在索引過程中,Visual FoxPro 會報告已建立索引的記錄數目。索引過程中顯示記錄的計數器間隔可由 SET ODOMETER 指定。
使用 DISPLAY STATUS 命令可以顯示打開的索引文件的許多內容,其中包括所有打開的索引文件的文件名、類型(結構、非結構的 .CDX、.IDX)、索引表達式、排序序列以及主控索引文件名或主控標識名。
可以打開的索引文件(.CDX 或 .IDX)數目只受內存或系統資源的限制。在 Visual FoxPro、FoxPro for Windows 和 FoxPro for MS-DOS 中,能打開的文件總數目由 MS-DOS 的配置文件 CONFIG.SYS 中的 FILES 設置決定。有關 FILES 設置的詳細內容,請參閱 MS-DOS 手冊。
索引類型 Visual FoxPro 允許創建兩種類型的索引文件:
包含多個索引標識項(索引名)的 .CDX 復合索引文件
包含一個索引項的 .IDX 單項索引文件
也可以創建結構復合索引文件,這種索引文件在打開表時自動打開。
提示 因為結構復合索引文件隨表的打開而自動打開,所以這種類型比較常用。
包含 COMPACT 子句可創建壓縮的 .IDX 索引文件,復合索引文件總是壓縮的。
索引的順序與更新 表的顯示或訪問順序只由一個索引文件(主控索引文件)或標識(主控標識)控制項。有一些命令(如 SEEK 命令)使用主控索引文件或標識搜索記錄,但是在修改表時,所有已打開的 .IDX 和 .CDX 索引文件都將被更新。使用 USE 命令的 INDEX 子句或 SET INDEX 和 SET ORDER 命令可以指定主控索引文件或標識。
注意 替換關鍵欄位修改當前記錄在索引中的相對位置。因此你在執行 REPACE ALL 或 SCAN...ENDSCAN 修改一個范圍的索引時應該小心。這也適用於在使用了 FOR 子句創建的索引上的 REPLACE 操作。
用戶定義函數 索引表達式中雖然可以包含用戶自定義函數,但最好不要這樣做,因為索引表達式中使用用戶自定義函數會增加創建或更新索引所需的時間。另外,如果索引表達式中使用了用戶自定義函數,有可能不更新這個索引。
如果索引表達式中使用了用戶自定義函數,則應該保證 Visual FoxPro 能夠找到這個函數。當 Visual FoxPro 創建索引時,索引表達式存儲在索引文件中,但用戶自定義函數並不存儲在索引文件中,索引文件中只保存指向用戶自定義函數的引用。
示例
在例 1 中,打開 customer 表,並創建一個名為 complist 的索引文件,該索引文件按 company 欄位的字母順序顯示和處理記錄。
在例 2 中,再一次打開 customer 表,並創建名為 citycomp 的索引文件,其索引表達式由 city 欄位的前 5 個字母和 company 欄位的前 6 個字母組成。在使用該文件時,表記錄先根據 city 欄位排列順序,然後才按 company 欄位排序。
在例 3 中,創建了一些索引標識:第一個是 address1 的結構復合索引標識,第二個是在名為 custcdx 的非結構索引文件中創建的,最後一個也是在非結構索引文件 custcdx 中創建的,但按照遞減順序。
* 示例 1
CLOSE DATABASES
OPEN DATABASE (HOME(2) + 'Data\testdata')
USE Customer && 打開 customer 表
INDEX ON company TO complist
CLEAR
DISPLAY STATUS
* 示例 2
CLOSE DATABASES
OPEN DATABASE (HOME(2) + 'Data\testdata')
USE Customer && 打開 customer 表
INDEX ON SUBSTR(city,1,5) + SUBSTR(company,1,6) TO citycomp
CLEAR
DISPLAY STATUS
* 示例 3
CLOSE DATABASES
OPEN DATABASE (HOME(2) + 'Data\testdata')
USE Customer && 打開 customer 表
INDEX ON address TAG address
INDEX ON company TAG company OF custcdx
CLEAR
DISPLAY STATUS
Ⅷ 資料庫VF中排序與索引相比各有什麼優缺點
一般使用索引,索引可以建立多個,想用哪個用哪個,特別是當數據特別多、特別大的情況下,排序一次需要很多時間,而索引就非常快速。
補充:
可以這樣說,現在的資料庫都沒有排序的的概念,排序是早期FOXBASE的產品,你不要去學習什麼排序,除非你想考古。
一、排序(物理排序)
通常記錄是按輸入的順序(物理順序)存放在數據表中的,排序是指表的所有記錄按指定欄位的值的大小順序進行重新排列到新的數據表文件中。
二、索引(邏輯排序)
與排序相比,索引是一種邏輯排序方法,它不改變記錄在物理上的排列順序,而是建立一個與原文件相對應的索引文件,索引文件中存儲了一組記錄指針,它指向原文件的記錄。
Ⅸ vfp中排序命令和索引命令的區別
排序:對表進行物理性的排序,記錄位置發生變化。
索引:對表進行索引,建立索引文件,不改變記錄位置。
Ⅹ VF索引排序命令 求
1 .
index on 10000-入學成績 to sy1
go top
list next 5
2.
index on dtoc(出生日期,1) to sy2 for year(出生日期)>=1983 tag sy3
(這題答案是按出生日期升序排列的。按出生日期降序我不會)
3.
index on 籍貫 tag sy3 unique
4.
index on 性別+str(10000-入學成績)+dtoc(出生日期,1) tag sy4
5.
index on 性別+學號 tag abc of sy5 &&生成sy5.cdx非結構復合索引文件