foxpro的常用命命令.txt

上传用户:zbdongda
上传日期:2013-12-07
资源大小:6k
文件大小:12k
源码类别:其他数据库
开发平台:VFP
  1. ALL 表示全部记录; 
  2. NEXT n 表示从当前记录开始的以下n条记录; 
  3. RECORD n 表示第n号记录; 
  4. REST 表示从当前记录到最后一条记录。     
  5. FIELDS 字段名表:用于指定操作的字段,多个字段时用逗号分隔。
  6.  FOR条件:对满足条件的记录进行操作。
  7. WHILE 条件:当遇到第一个不满足条件的记录时,停止命令执行。 
  8.  
  9. 以下命令中,大写的英文词为关键词,必须原样照写。
  10. “常用子句”指以下几个可选子句:
  11. [范围] [FIELDS 字段名表] [FOR 条件] [WHILE 条件]
  12. 命令中的“列表”,指用“,”分隔的各项。如“字段名列表”就是将各个字段名用逗号分隔。
  13. 部分英文词的意义:Databasename 数据名 tablename 数据表名 filename 文件名  Viewname 视图名 arrayname 数组名
  14.  
  15. 提示:加下划线的为本课程要求掌握的命令。 
  16.  
  17. 一、数据库的建立、打开、关闭和删除    
  18. 建立数据库:
  19. CREATE DATABASE [databasename|?]
  20.  
  21. 从磁盘中删除数据库:
  22. DELETE  DATABASE  databasename|?
  23.  
  24. 打开数据库:
  25. OPEN DATABASE [EXCLUSIVE|SHARED][NOUPDATE]
  26.  
  27. 打开数据库设计器(允许用户按交互方式编辑当前数据库):
  28. MODIFY DATABASE  [databasename|?]
  29. 指定的数据库databasename为当前数据库。
  30.  
  31. 指定当前的数据库:
  32. SET DATABASE TO [databasename]
  33. Databasename必须为已经打开的数据库。如果省略数据库名称databasename,则不指定当前数据库(没有当前数据库)。
  34.  
  35. 关闭数据库:
  36. CLOSE DATABASE [ALL]
  37. 关闭当前数据库,如果带ALL子句,则关闭所有打开的数据库。
  38.  
  39. 二、数据表和视图的建立、打开、关闭和删除    
  40. 建立数据表(SQL命令): 
  41. CREATE TABLE | DBF tablename (Col_name1 Type1 [NOT NULL/NULL]
  42. [{,Col_name2 Type2 [NOT NULL/NULL]}...])
  43. table_name是所创建的数据表的名字。
  44. Col_name1,Col_name2,...是表中列的名。
  45. Type1, Type2...是相应列的数据类型(VFP的数据类型见表3-9)。 
  46. 如果说明为NOT NULL,则列中不允许分配空值(这种情况下,列不能包含空值,如果插入空值,将返回错误信息)。
  47.  
  48. 向当前打开的数据库中添加数据表:
  49. ADD TABLE tablename|?
  50.  
  51. 从当前打开的数据库中删除数据表:
  52. REMOVE TABLE tablename|? [DELETE]
  53. 如果包含DELETE子句,将从磁盘中删除这个表文件,否则,只从数据库中删除,但文件仍保存在磁盘中。
  54.  
  55. 在当前打开的数据库中建立视图:
  56. CREATE SQL VIEW viewname AS SELECT ……
  57. 其中SELECT ……为SELECT语句。
  58. 执行这个语句时,如果没有打开的数据库,则建立独立的视图,这样的视图不能存储。
  59.  
  60. 从当前打开的数据库中删除视图:
  61. DELETE VIEW viewname
  62.  
  63. 打开一个表:
  64. USE tablename|? [IN 工作区号]
  65.  
  66. 将当前数据表与另一数据表连接后建立一个新表:
  67. JOIN WITH 工作区号|表别名 TO tablename FOR 条件 [FIELDS 字段名表]
  68.  
  69. 三、数据表和表结构的编辑、修改    
  70. 打开浏览窗口(可在其中编辑数据表):
  71. BROWSW(详细格式见P. 114~116)
  72.  
  73. 打开并修改数据表中的字段:
  74. (1) CHANGE [FIELDS 字段名列表]
  75. (2) EDIT [FIELDS 字段名列表]
  76. 这两个命令的功能相似,可选子句较多(详见手册)。
  77.  
  78. 数据表改名:
  79. RENAME TABLE tablename1 TO tablename2
  80. 其中数据表tablename1必须存在且未打开。
  81.  
  82. 视图改名:
  83. RENAME VIEW viewname1 TO viewname2
  84. 其中数据表tablename1必须存在且未打开。
  85.  
  86. 修改数据表结构(SQL命令):
  87. ALTER TABLE tablename ;
  88. ADD 字段名 Type [NULL | NOT NULL]
  89. [,字段名 Type [NULL | NOT NULL] ;
  90. [ALTER COLUMN字段名Type {NULL | NOT NULL}];
  91. [{,字段名Type NULL | NOT NULL}...] ;
  92. [DROP字段名[,字段名[, ...]]
  93.  
  94. 将当前表与另一表之间建立关联:
  95. SET RELATION TO [表达式1 INTO 工作区号1 | 表别名1];
  96. [, 表达式2 INTO 工作区号2 | 表别名2] [, ...]
  97. 建立关联的两个表必须事先已按关联表达式进行索引排序。
  98.  
  99. 在当前表与另一表之间建立一对多关联:
  100. SET SKIP TO表别名1[, 表别名2]
  101.  
  102. 消除当前表与另一表之间的关联:
  103. SET RELATION OFF INTO 工作区号 | 表别名
  104.  
  105. 四、数据表中数据操作(查询、插入、删除和修改等)    
  106.  
  107. 数据查询SELECT语句(SQL命令)
  108. 格式见教材的有关章节。这是本课程的重点内容,必须很好地掌握。
  109.  
  110. 更改数据表中的记录:
  111. REPLACE 字段1  WITH  表达式1[ADDITIVE];
  112. [,<  [,<字段2> WITH <表达式2>[ADDITIVE],…];
  113.  [FOR 条件1][WHILE条件2]
  114. 其中的ADDITIVE子句适用于备注字段,表示将表达式的值加在字段的末尾。
  115.  
  116. 用内存数组的值更新数据表中的记录:
  117. REPLACE FROM ARRAY数组名 [FIELDS 字段名列表][常用子句]
  118.  
  119. 用新的值更新表中的记录(SQL命令):
  120. UPDATE [databasename!]tablename;
  121. SET Column_1=Expression1 [{Column_2=expression2}...] ;      
  122.  [WHERE Condition]
  123.  
  124. 用一个表中的数据更新当前指定工作区中打开的表:
  125. UPDATE ON fieldname FROM filename;
  126. REPLACE fieldname1 WITH expr1
  127. [, fieldname2 WITH expr2 [, ...]]
  128.  
  129. 给记录加删除标记(SQL命令):
  130. DELETE  FROM  [databasename!]tablename;
  131. [WHERE 条件]
  132.  
  133. 给记录加删除标记:
  134. DELETE [范围] [FOR 条件] [WHILE 条件];
  135. [IN 工作区号|表别名]
  136.  
  137. 永久删除加了删除标记的记录:
  138. PACK
  139.  
  140. 永久删除打开的数据库中加了删除标记的记录:
  141. PACK  DATABASE
  142.  
  143. 去掉删除标记(恢复)
  144.  RECALL [常用子句]
  145.  
  146. 删除一个表中所有记录(保留表的结构):
  147. ZAP  [IN tablename|alias]
  148.  
  149. 为数据表文件追加记录:
  150. APPEND [BLANK][IN 工作区号|别名]
  151.  
  152. 从另一个文件中提取数据添加到当前数据表的尾部:
  153. APPEND FROM filename|? [FIELDS 字段名列表][ FOR 条件]
  154. 其中filename所指定的文件可以是数据表、EXCEL电子表格、文本文件等,如果不是数据表,需要其它子句指定格式(详见手册)。
  155.  
  156. 用内存数组的值添加到当前数据表的尾部:
  157. APPEND FROM ARRAY arrayname [ FOR 条件][FIELDS字段名列表]
  158. 数据中的一行对应一个新记录,一列对应一个字段。
  159.  
  160. 从一个文件输入一个OLE对象放入一个通用(general)字段 :
  161. APPEND GENERAL 通用字段名 [FROM filename]
  162. 如果省略子句FROM filename,则将指定的字段清空。
  163.  
  164. 将一个文本文件的内容拷贝到一个备注字段 :
  165. APPEND MEMO 备注字段名 [FROM filename][OVERWRITE]
  166. 如果省略子句FROM filename,则将指定的字段清空。
  167.  
  168. 插入新记录(在当前记录之前或后插入):
  169.  INSERT [BLANK] [BEFORE]
  170. 如不省略BLANK,则插入一个空白记录,且不显示输入窗口。
  171.  
  172. 在表中插入新记录并赋值(SQL命令):
  173. INSERT INTO tablename [(字段1 [, 字段2, ...])]VALUES (eExpression1 [, eExpression2, ...])
  174. INSERT INTO tablename FROM ARRAY ArrayName | FROM MEMVAR
  175. 如带有FROM MEMVAR子句,则用同名的内存变量给字段赋值。
  176.  
  177. 清除当前记录中字段的数据:
  178. BLANK [常用子句]
  179.  
  180. 移动记录指针:
  181. SKIP [n] [IN 工作区号|表别名]
  182.  
  183. 五、文件管理(文件和文件夹的复制、创建和删除)    
  184. 从当前表复制出表或其它类型的文件(表须打开)
  185. COPY  TO  filename [FIELDS 字段名列表] [常用子句] [其它子句] 
  186. 如果没有指定类型,则复制一个与当前的表相同的数据表。
  187.  
  188. 复制表的结构
  189. COPY STRUCTURE TO filename [FIELDS字段名列表]
  190.  
  191. 复制任何文件: 
  192. COPY FILE 源文件 TO 目的文件
  193. 如果用此命令复制表,表须关闭
  194.  
  195. 从磁盘上删除任意文件:
  196. (1)ERASE filename|?
  197. (2)DELETE FILE [filename|?]
  198.  
  199. 任意文件改名(或文件移动到另一文件夹):
  200. RENAME filename1 TO filename2
  201. 其中filename1和filename2都可以包含路径。如二者不在同一文件夹,则将filename1移动到filename2所在的文件夹。
  202.  
  203. 显示一个文件夹中的文件信息:
  204. DIR | DIRECTORY  [ON drive]
  205.  
  206. 从磁盘上删除一个文件夹:
  207. RD | REDIR 文件夹名
  208.  
  209. 在磁盘上建立一个文件夹:
  210. MD | MKDIR文件夹名
  211.  
  212. 六、数据的复制与传送    
  213. 单个记录与数组间的数据传送 
  214.  当前记录 → 数组或内存变量:
  215.    SCATTER [FIELDS字段名列表][MEMO]TO 数组名 [BLANK] | MEMVAR [BLANK]
  216. 其中[BLANK]表示建立一个空元素的数组。如果用MEMVAR子句,则表示将各字段的值复制到同名同类型的内存变量。
  217. 如果包含MEMO子句,则备注字段一起复制。
  218.  
  219.  数组或内存变量 → 当前记录 
  220.  GATHER FROM  数组名 | MEMVAR [FILEDS字段名列表] [MEMO]
  221. 用同名的内存变量或数组中的第一行置换当前记录,如果数组为多行的二维数组,也只用第一行。
  222.  
  223. 成批记录与数组间的数据传送 
  224.  表 → 数组:
  225.  COPY TO ARRAY arrayname [常用子句]
  226.  数组 → 表:
  227. (1) APPEND FROM ARRAY arrayname [ FOR 条件][FIELDS字段名列表]
  228. 用内存数组的值加在数据表的尾部,数据中的一行对应一个新记录,一列对应一个字段。
  229.  (2) REPLACE FROM ARRAY数组名 [常用子句]
  230. 用内存数组的值更新数据表中符合条件的记录。
  231.  
  232. 查询结果 → 数组:
  233. SELECT …… INTO ARRAY arrayname
  234. 将SQL SELECT语句的查询结果传给数组arrayname。这里“SELECT ……”可为各种形式的SELECT查询语句。
  235.  
  236. 给内存变量赋值:
  237. STORE 表达式 TO 变量名
  238. 变量名=表达式
  239.  
  240. 七、排序与索引    
  241. 将当前表排序后建立一个新数据表:
  242. SORT TO  文件名  ON  字段名1  [/A | /D] ;
  243. [/C] [  字段名2  [/A | /D] [/C] ...];
  244. [ASCENDING | DESCENDING] [常用子句];
  245.  
  246. 建立单索引文件:
  247. INDEX  ON  表达式  TO  单索引文件名;
  248. [FOR<条件>]  [UNIQUE] [COMPACT];
  249. [ASCENDING][DESCENDING][ADDITIVE]
  250.  
  251. 建立复合索引文件:
  252. INDEX   ON  表达式 TO  TAG  索引名 [OF 复合索引文件名];
  253. [FOR 条件] [UNIQUE|CANDIDATE];
  254. [ASCENDING][DESCENDING][ADDITIVE]
  255.  
  256. 使用索引文件:
  257. 打开表时将索引文件一并打开,USE命令带INDEX子句:
  258. USE tablename|? [IN 工作区号][INDEX 索引文件名列表|?]
  259.  
  260. 给当前表打开一个或多个索引文件:
  261. SET INDEX TO[索引文件名列表|?];
  262. [ORDER 索引文件名序号|索引文件名|[TAG]索引名 [OF 复合索引文件名] ;
  263. [ASCENDING][DESCENDING]]
  264.  
  265. 指定字符字段在排序或索引时的整理系列:
  266. SET COLLATE TO 整理系列
  267. 对于汉字字符串,“整理系列”可以是“Machine”、“PinYin”或“Stroke”三者之一(必须带引号),分别表示按机器码、拼音和笔划排序。
  268.  
  269. 指定当前表中的控制索引文件或标记:
  270. SET ORDER TO;
  271. [索引文件名序号|索引文件名|[TAG]索引名 [OF 复合索引文件名];
  272. [IN 工作区号|表别名];
  273. [ASCENDING][DESCENDING]
  274.  
  275. 删除索引
  276. DELETE   TAG  ALL [OF 复合索引文件名]
  277. DELETE   TAG  索引标识1 [OF 复合索引文件名1];
  278. [,索引标识2 [OF 复合索引文件名2]]…
  279.  
  280. 八、查找和定位    
  281. 顺序查找当前表中满足条件的第一条记录:
  282. LOCATE FOR 条件下[范围][WHILE条件]
  283. 找到后将记录指针定位在满足条件的第一条记录,且函数FOUND()的返回值为真。
  284.  
  285. 在索引表中查找:
  286. FIND cExpr
  287. 其中cExpr为字符串表达式。如果找到,则记录指针定位在满足条件的第一条记录,且函数FOUND()的返回值为真;查找失败时,FOUND()的返回值为假,记录指针定位在文件尾。
  288.  
  289. 在索引表中查找:
  290. SEEK eExpr;
  291. [ORDER 索引文件名序号|索引文件名|[TAG]索引名 [OF 复合索引文件名] ;
  292. [ASCENDING][DESCENDING]];
  293. [IN 工作区号|表别名]
  294. 如果找到,则记录指针定位在满足条件的第一条记录,且为真;查找失败时,FOUND()的返回值为假,记录指针定位在文件尾。
  295.  
  296. 继续查找:
  297. CONTINUE
  298. 用LOCATE、 FIND或 SEEK查找到一条记录后,用CONTINUE继续查找下一条。
  299.  
  300. 用以上查找命令LOCATE、 FIND、SEEK和CONTINUE的查找结果,都可以通过函数FOUND()的返回值反映出来。
  301.  
  302. 九、统计计算    
  303. 统计表中的记录数:
  304. COUNT [范围] [FOR 条件] [WHILE 条件][TO内存变量名]
  305. 统计满足条件的记录数,显示记录数或将结果赋给内存变量名。
  306.  
  307. 求和:
  308. SUM  [表达式列表];
  309. [范围] [FOR 条件] [WHILE 条件][TO内存变量名|TO ARRAY 数组名]
  310.  
  311. 求平均值:
  312. AVERAGE [表达式列表];
  313. [范围] [FOR 条件] [WHILE 条件][TO内存变量名|TO ARRAY 数组名]
  314.  
  315. 对当前表中数值型字段进行分组求和:
  316. TOTAL TO tablename ON 字段名[常用子句]
  317. 其中tablename为存放结果的表文件名,字段名为确定求和分组的字段。
  318.  
  319. 计算:
  320. CALCULATE 表达式列表;
  321. [范围] [FOR 条件] [WHILE 条件][TO内存变量名|TO ARRAY 数组名]
  322. 其中表达式列表可以是如下函数的任意组合:
  323. AVG(nExpr), CNT(), MAX(eExpr), MIN(eExpr), NPV(nExpr1, nExpr2,…),
  324. STD(nExpr),SUM(nExpr),VAR(nExpr)
  325. 其中nExpr为数值表达式,eExpr为任意表达式。
  326.  
  327. 十、程序控制    
  328. 条件语句:
  329. IF 条件 [THEN]
  330. ……
  331. [ELSE]
  332. [……]
  333. ENDIF
  334.  
  335. 多分支语句:
  336. DO CASE
  337.        CASE 逻辑表达式1
  338.        ……
  339.        CASE 逻辑表达式2
  340.        ……
  341. CASE 逻辑表达式n
  342.        ……
  343.        [OTHERWISE]
  344.        ……
  345. ENDCASE
  346.  
  347. DO循环:
  348. DO WHILE 条件
  349.  [LOOP]
  350. ……
  351. [EXIT]
  352. ……
  353. ENDDO
  354.  
  355. FOR循环
  356. FOR 循环变量=初值 TO 终值 STEP 步长
  357. ……(中间可插入[LOOP]或[EXIT])
  358. ENDFOR | NEXT
  359.  
  360. 扫描循环(对一个表中满足条件的记录进行循环):
  361. SCAN [范围] [FOR 条件] [WHILE 条件]
  362. ……(中间可插入[LOOP]或[EXIT])
  363. ENDSCAN
  364.  
  365. 集合扫描循环
  366. FOR EACH Var IN Group
  367. Commands
  368. [EXIT]
  369. [LOOP]
  370. ENDFOR | NEXT [Var]
  371.  
  372. 十一、其它    
  373. 定义数组:
  374. DECLARE | DIMENSION 数组名(下标1,下标2,……)
  375.  
  376. 定义过程:
  377. PROCEDURE 过程名
  378. PARAMETERS 参数表
  379. ……
  380. RETURN [TO MASTER | TO 程序名]
  381.  
  382. 定义函数:
  383. FUNCTION 函数名
  384. PARAMETERS 参数表
  385. ……
  386. RETURN 表达式
  387.  
  388. 调用一个子程序或过程
  389. DO 子程序名 | 过程名 [IN 程序文件名][WITH 实在参数表]
  390.  
  391. 定义公共变量:
  392. PUBLIC 变量名列表
  393. PUBLIC [ARRAY] 数组名1(行1,列1)[, 数组名2(行2,列2) [,…]]
  394.  
  395. 定义私有变量
  396. PRIVATE变量名列表
  397. PRIVATE ALL[LIKE | EXCEPT 通配符]
  398.  
  399. 定义局部变量
  400. LOCAL 变量名列表
  401. LOCAL  [ARRAY] 数组名1(行1,列1)[, 数组名2(行2,列2) [,…]]
  402.  
  403. 显示各种信息:
  404. LIST … (格式见有关手册)
  405. DISPLAY … (格式见有关手册)
  406.  
  407. 输出提示信息:
  408. WAIT [<提示信息>] [TO <内存变量>];
  409.   [WINDOW[AT[<行>,< 列>] [NOWAIT]];
  410.   [CLEAR|NOCLEAR];
  411. [TIMEOUT<数值表达式>]
  412.  
  413. 各种设置命令:
  414. 设置是否显示日期中的世纪:
  415. SET CENTURY ON | OFF
  416.  
  417. 设置显示的小数位数:
  418. SET DECIMALS TO 小数位数
  419.  
  420. 设置是否处理带删除标记的记录:
  421. SET DELETED ON | OFF
  422. 如果设置为ON,则不处理带删除标记的记录。
  423.  
  424. 设置是否显示命令的结果:
  425. SET TALK ON | OFF
  426.  
  427. 设置文件的搜索路径:
  428. SET PATH TO 路径
  429.  
  430. 设置传给子程序或自定义函数的参数是按值还是按引用方式传递:
  431. SET UDFPARMS TO VALUE | REFERENCE
  432. 如设置为TO VALUE,表示按值传递。
  433.  
  434. 执行一个外部命令或程序:
  435. RUN 命令或程序
  436.  
  437. 在指定的位置显示或打印:
  438. @行,列 SAY  …
  439.  
  440. 在指定的位置显示表达式的值,并等待用户输入,将输入值赋给一变量:
  441. @行,列 SAY  表达式 GET 变量名 [DEFAULT 表达式]
  442. READ
  443.  
  444. 例:
  445. @2,2 say "请输入金额: " get nMoney default 50
  446. Read
  447. 此例先在第2行、第2列显示"请输入金额: ",等待用户输入一个数值,将用户输入值赋给变量nMoney,如果用户不输入数值(直接按回车),则将50赋给nMoney。请注意在下一行不能漏掉“Read”。