VFP中常用命令包含一些SQL命令.docx
- 文档编号:30431952
- 上传时间:2023-08-15
- 格式:DOCX
- 页数:24
- 大小:23.69KB
VFP中常用命令包含一些SQL命令.docx
《VFP中常用命令包含一些SQL命令.docx》由会员分享,可在线阅读,更多相关《VFP中常用命令包含一些SQL命令.docx(24页珍藏版)》请在冰豆网上搜索。
VFP中常用命令包含一些SQL命令
VFP中常用命令(包含一些SQL命令)
一、数据库的建立、打开、关闭和删除
建立数据库:
CREATEDATABASE[databasename|?
]
从磁盘中删除数据库:
DELETEDATABASEdatabasename|?
打开数据库:
OPENDATABASE[EXCLUSIVE|SHARED][NOUPDATE]
打开数据库设计器(允许用户按交互方式编辑当前数据库):
MODIFYDATABASE[databasename|?
]
指定的数据库databasename为当前数据库。
指定当前的数据库:
SETDATABASETO[databasename]
Databasename必须为已经打开的数据库。
如果省略数据库名称databasename,则不指定当前数据库(没有当前数据库)。
关闭数据库:
CLOSEDATABASE[ALL]
关闭当前数据库,如果带ALL子句,则关闭所有打开的数据库。
二、数据表和视图的建立、打开、关闭和删除
建立数据表(SQL命令):
CREATETABLE|DBFtablename(Col_name1Type1[NOTNULL/NULL]
[{,Col_name2Type2[NOTNULL/NULL]}...])
table_name是所创建的数据表的名字。
Col_name1,Col_name2,...是表中列的名。
Type1,Type2...是相应列的数据类型(VFP的数据类型见表3-9)。
如果说明为NOTNULL,则列中不允许分配空值(这种情况下,列不能包含空值,如果插入空值,将返回错误信息)。
向当前打开的数据库中添加数据表:
ADDTABLEtablename|?
从当前打开的数据库中删除数据表:
REMOVETABLEtablename|?
[DELETE]
如果包含DELETE子句,将从磁盘中删除这个表文件,否则,只从数据库中删除,但文件仍保存在磁盘中。
在当前打开的数据库中建立视图:
CREATESQLVIEWviewnameASSELECT……
其中SELECT……为SELECT语句。
执行这个语句时,如果没有打开的数据库,则建立独立的视图,这样的视图不能存储。
从当前打开的数据库中删除视图:
DELETEVIEWviewname
打开一个表:
USEtablename|?
[IN工作区号]
将当前数据表与另一数据表连接后建立一个新表:
JOINWITH工作区号|表别名TOtablenameFOR条件[FIELDS字段名表]
三、数据表和表结构的编辑、修改
打开浏览窗口(可在其中编辑数据表):
BROWSW(详细格式见P.114~116)
打开并修改数据表中的字段:
(1)CHANGE[FIELDS字段名列表]
(2)EDIT[FIELDS字段名列表]
这两个命令的功能相似,可选子句较多(详见手册)。
数据表改名:
RENAMETABLEtablename1TOtablename2
其中数据表tablename1必须存在且未打开。
视图改名:
RENAMEVIEWviewname1TOviewname2
其中数据表tablename1必须存在且未打开。
修改数据表结构(SQL命令):
ALTERTABLEtablename;
ADD字段名Type[NULL|NOTNULL]
[,字段名Type[NULL|NOTNULL];
[ALTERCOLUMN字段名Type{NULL|NOTNULL}];
[{,字段名TypeNULL|NOTNULL}...];
[DROP字段名[,字段名[,...]]
将当前表与另一表之间建立关联:
SETRELATIONTO[表达式1INTO工作区号1|表别名1];
[,表达式2INTO工作区号2|表别名2][,...]
建立关联的两个表必须事先已按关联表达式进行索引排序。
在当前表与另一表之间建立一对多关联:
SETSKIPTO表别名1[,表别名2]
消除当前表与另一表之间的关联:
SETRELATIONOFFINTO工作区号|表别名
四、数据表中数据操作(查询、插入、删除和修改等)
数据查询SELECT语句(SQL命令)
格式见教材的有关章节。
这是本课程的重点内容,必须很好地掌握。
更改数据表中的记录:
REPLACE字段1WITH表达式1[ADDITIVE];
[,<[,<字段2>WITH<表达式2>[ADDITIVE],…];
[FOR条件1][WHILE条件2]
其中的ADDITIVE子句适用于备注字段,表示将表达式的值加在字段的末尾。
用内存数组的值更新数据表中的记录:
REPLACEFROMARRAY数组名[FIELDS字段名列表][常用子句]
用新的值更新表中的记录(SQL命令):
UPDATE[databasename!
]tablename;
SETColumn_1=Expression1[{Column_2=expression2}...];
[WHERECondition]
用一个表中的数据更新当前指定工作区中打开的表:
UPDATEONfieldnameFROMfilename;
REPLACEfieldname1WITHexpr1
[,fieldname2WITHexpr2[,...]]
给记录加删除标记(SQL命令):
DELETEFROM[databasename!
]tablename;
[WHERE条件]
给记录加删除标记:
DELETE[范围][FOR条件][WHILE条件];
[IN工作区号|表别名]
永久删除加了删除标记的记录:
PACK
永久删除打开的数据库中加了删除标记的记录:
PACKDATABASE
去掉删除标记(恢复)
RECALL[常用子句]
删除一个表中所有记录(保留表的结构):
ZAP[INtablename|alias]
为数据表文件追加记录:
APPEND[BLANK][IN工作区号|别名]
从另一个文件中提取数据添加到当前数据表的尾部:
APPENDFROMfilename|?
[FIELDS字段名列表][FOR条件]
其中filename所指定的文件可以是数据表、EXCEL电子表格、文本文件等,如果不是数据表,需要其它子句指定格式(详见手册)。
用内存数组的值添加到当前数据表的尾部:
APPENDFROMARRAYarrayname[FOR条件][FIELDS字段名列表]
数据中的一行对应一个新记录,一列对应一个字段。
从一个文件输入一个OLE对象放入一个通用(general)字段:
APPENDGENERAL通用字段名[FROMfilename]
如果省略子句FROMfilename,则将指定的字段清空。
将一个文本文件的内容拷贝到一个备注字段:
APPENDMEMO备注字段名[FROMfilename][OVERWRITE]
如果省略子句FROMfilename,则将指定的字段清空。
插入新记录(在当前记录之前或后插入):
INSERT[BLANK][BEFORE]
如不省略BLANK,则插入一个空白记录,且不显示输入窗口。
在表中插入新记录并赋值(SQL命令):
INSERTINTOtablename[(字段1[,字段2,...])]VALUES(eExpression1[,eExpression2,...])
或
INSERTINTOtablenameFROMARRAYArrayName|FROMMEMVAR
如带有FROMMEMVAR子句,则用同名的内存变量给字段赋值。
清除当前记录中字段的数据:
BLANK[常用子句]
移动记录指针:
SKIP[n][IN工作区号|表别名]
五、文件管理(文件和文件夹的复制、创建和删除)
从当前表复制出表或其它类型的文件(表须打开)
COPYTOfilename[FIELDS字段名列表][常用子句][其它子句]
如果没有指定类型,则复制一个与当前的表相同的数据表。
复制表的结构
COPYSTRUCTURETOfilename[FIELDS字段名列表]
复制任何文件:
COPYFILE源文件TO目的文件
如果用此命令复制表,表须关闭
从磁盘上删除任意文件:
(1)ERASEfilename|?
(2)DELETEFILE[filename|?
]
任意文件改名(或文件移动到另一文件夹):
RENAMEfilename1TOfilename2
其中filename1和filename2都可以包含路径。
如二者不在同一文件夹,则将filename1移动到filename2所在的文件夹。
显示一个文件夹中的文件信息:
DIR|DIRECTORY[ONdrive]
从磁盘上删除一个文件夹:
RD|REDIR文件夹名
在磁盘上建立一个文件夹:
MD|MKDIR文件夹名
六、数据的复制与传送
单个记录与数组间的数据传送
当前记录→数组或内存变量:
SCATTER[FIELDS字段名列表][MEMO]TO数组名[BLANK]|MEMVAR[BLANK]
其中[BLANK]表示建立一个空元素的数组。
如果用MEMVAR子句,则表示将各字段的值复制到同名同类型的内存变量。
如果包含MEMO子句,则备注字段一起复制。
数组或内存变量→当前记录
GATHERFROM数组名|MEMVAR[FILEDS字段名列表][MEMO]
用同名的内存变量或数组中的第一行置换当前记录,如果数组为多行的二维数组,也只用第一行。
成批记录与数组间的数据传送
表→数组:
COPYTOARRAYarrayname[常用子句]
数组→表:
(1)APPENDFROMARRAYarrayname[FOR条件][FIELDS字段名列表]
用内存数组的值加在数据表的尾部,数据中的一行对应一个新记录,一列对应一个字段。
(2)REPLACEFROMARRAY数组名[常用子句]
用内存数组的值更新数据表中符合条件的记录。
查询结果→数组:
SELECT……INTOARRAYarrayname
将SQLSELECT语句的查询结果传给数组arrayname。
这里“SELECT……”可为各种形式的SELECT查询语句。
给内存变量赋值:
STORE表达式TO变量名
或
变量名=表达式
七、排序与索引
将当前表排序后建立一个新数据表:
SORTTO文件名ON字段名1[/A|/D];
[/C][字段名2[/A|/D][/C]...];
[ASCENDING|DESCENDING][常用子句];
建立单索引文件:
INDEXON表达式TO单索引文件名;
[FOR<条件>][UNIQUE][COMPACT];
[ASCENDING][DESCENDING][ADDITIVE]
建立复合索引文件:
INDEXON表达式TOTAG索引名[OF复合索引文件名];
[FOR条件][UNIQUE|CANDIDATE];
[ASCENDING][DESCENDING][ADDITIVE]
使用索引文件:
打开表时将索引文件一并打开,USE命令带INDEX子句:
USEtablename|?
[IN工作区号][INDEX索引文件名列表|?
]
给当前表打开一个或多个索引文件:
SETINDEXTO[索引文件名列表|?
];
[ORDER索引文件名序号|索引文件名|[TAG]索引名[OF复合索引文件名];
[ASCENDING][DESCENDING]]
指定字符字段在排序或索引时的整理系列:
SETCOLLATETO整理系列
对于汉字字符串,“整理系列”可以是“Machine”、“PinYin”或“Stroke”三者之一(必须带引号),分别表示按机器码、拼音和笔划排序。
指定当前表中的控制索引文件或标记:
SETORDERTO;
[索引文件名序号|索引文件名|[TAG]索引名[OF复合索引文件名];
[IN工作区号|表别名];
[ASCENDING][DESCENDING]
删除索引
DELETETAGALL[OF复合索引文件名]
DELETETAG索引标识1[OF复合索引文件名1];
[,索引标识2[OF复合索引文件名2]]…
八、查找和定位
顺序查找当前表中满足条件的第一条记录:
LOCATEFOR条件下[范围][WHILE条件]
找到后将记录指针定位在满足条件的第一条记录,且函数FOUND()的返回值为真。
在索引表中查找:
FINDcExpr
其中cExpr为字符串表达式。
如果找到,则记录指针定位在满足条件的第一条记录,且函数FOUND()的返回值为真;查找失败时,FOUND()的返回值为假,记录指针定位在文件尾。
在索引表中查找:
SEEKeExpr;
[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内存变量名|TOARRAY数组名]
求平均值:
AVERAGE[表达式列表];
[范围][FOR条件][WHILE条件][TO内存变量名|TOARRAY数组名]
对当前表中数值型字段进行分组求和:
TOTALTOtablenameON字段名[常用子句]
其中tablename为存放结果的表文件名,字段名为确定求和分组的字段。
计算:
CALCULATE表达式列表;
[范围][FOR条件][WHILE条件][TO内存变量名|TOARRAY数组名]
其中表达式列表可以是如下函数的任意组合:
AVG(nExpr),CNT(),MAX(eExpr),MIN(eExpr),NPV(nExpr1,nExpr2,…),
STD(nExpr),SUM(nExpr),VAR(nExpr)
其中nExpr为数值表达式,eExpr为任意表达式。
十、程序控制
条件语句:
IF条件[THEN]
……
[ELSE]
[……]
ENDIF
多分支语句:
DOCASE
CASE逻辑表达式1
……
CASE逻辑表达式2
……
CASE逻辑表达式n
……
[OTHERWISE]
……
ENDCASE
DO循环:
DOWHILE条件
[LOOP]
……
[EXIT]
……
ENDDO
FOR循环
FOR循环变量=初值TO终值STEP步长
……(中间可插入[LOOP]或[EXIT])
ENDFOR|NEXT
扫描循环(对一个表中满足条件的记录进行循环):
SCAN[范围][FOR条件][WHILE条件]
……(中间可插入[LOOP]或[EXIT])
ENDSCAN
集合扫描循环
FOREACHVarINGroup
Commands
[EXIT]
[LOOP]
ENDFOR|NEXT[Var]
十一、其它
定义数组:
DECLARE|DIMENSION数组名(下标1,下标2,……)
定义过程:
PROCEDURE过程名
PARAMETERS参数表
……
RETURN[TOMASTER|TO程序名]
定义函数:
FUNCTION函数名
PARAMETERS参数表
……
RETURN表达式
调用一个子程序或过程
DO子程序名|过程名[IN程序文件名][WITH实在参数表]
定义公共变量:
PUBLIC变量名列表
PUBLIC[ARRAY]数组名1(行1,列1)[,数组名2(行2,列2)[,…]]
定义私有变量
PRIVATE变量名列表
PRIVATEALL[LIKE|EXCEPT通配符]
定义局部变量
LOCAL变量名列表
LOCAL[ARRAY]数组名1(行1,列1)[,数组名2(行2,列2)[,…]]
显示各种信息:
LIST…(格式见有关手册)
DISPLAY…(格式见有关手册)
输出提示信息:
WAIT[<提示信息>][TO<内存变量>];
[WINDOW[AT[<行>,<列>][NOWAIT]];
[CLEAR|NOCLEAR];
[TIMEOUT<数值表达式>]
各种设置命令:
设置是否显示日期中的世纪:
SETCENTURYON|OFF
设置显示的小数位数:
SETDECIMALSTO小数位数
设置是否处理带删除标记的记录:
SETDELETEDON|OFF
如果设置为ON,则不处理带删除标记的记录。
设置是否显示命令的结果:
SETTALKON|OFF
设置文件的搜索路径:
SETPATHTO路径
设置传给子程序或自定义函数的参数是按值还是按引用方式传递:
SETUDFPARMSTOVALUE|REFERENCE
如设置为TOVALUE,表示按值传递。
执行一个外部命令或程序:
RUN命令或程序
在指定的位置显示或打印:
@行,列SAY…
在指定的位置显示表达式的值,并等待用户输入,将输入值赋给一变量:
@行,列SAY表达式GET变量名[DEFAULT表达式]
READ
例:
@2,2say"请输入金额:
"getnMoneydefault50
Read
此例先在第2行、第2列显示"请输入金额:
",等待用户输入一个数值,将用户输入值赋给变量nMoney,如果用户不输入数值(直接按回车),则将50赋给nMoney。
请注意在下一行不能漏掉“Read”。
ALL:
命令对表中所有记录起作用,即执行时从首记录到末记录,最记录指针停在数据库的末尾。
NEXT
NEXT1表示仅作用于当前记录。
Record
TEST命令作用范围从当前记录开始到表的最后一个记录为止
命令中的FOR子句只作用于满足条件的记录。
一、基本命令
1.打开和关闭数据表
USE[<数据表名>]当省略选项时为关闭当前数据表
CLOSEALL关闭所有数据表
2.选择当前工作区
SELECT<工作区号|数据表名|0>
功能:
选择当前工作区。
可以直接选择工作区号,也可通过指定其中已经打开的数据表别名来指定工作区。
SELECT0是选择当前未使用的最低编号的工作区
3.增加记录
APPENDBLANK在当前表的尾部追加一个空白记录
INSERTBLANK在当前表的当前记录之后插入一条空白记录
INSERTBLANKBEFORE在当前表的当前记录之前插入一条空白记录
注意:
在表建立索引后,INSERT的功能与APPEND相同
4.替换字段的值
REPLACE[范围]<字段1>WITH<表达式1>[,<字段2>WITH<表达式2>,...<字段n>WITH<表达式n>][FOR
功能:
计算表达式的值,并填入指定字段,当范围和条件选项省略时只对当前记录操作。
5.删除记录
DELETE[范围][FOR条件]
功能:
对记录加删除标记(即逻辑删除),当范围和条件选项省略时只对当前记录操作。
RECALL[范围][FOR条件]
功能:
对记录去除删除标记(即恢复删除),当范围和条件选项省略时只对当前记录操作。
PACK
功能:
删除带有删除标记的记录
ZAP
功能:
物理删除当前表所有记录
6.建立索引与选择主控索引
INDEXON<关键字表达式>TAG<索引标识符>[DESCENDING]
功能:
对当前表按<关键字表达式>建立结构复合索引,索引文件名与表名相同,扩展名默认为CDX。
DESCENDING选项为按关键字降序排列,默认为升序。
SETORDERTOTAG<索引标识符>
功能:
在结构复合索引文件打开后,指定主控索引标识符。
7.记录指针定位
GOBOTTOM|TOP|
功能:
移动记录指针直接指定记录。
BOTTOM为指向末记录,TOP为指向首记录,
SKIP[expN]
功能:
按expN的值,从当前位置出发移动记录指针。
当expN为正时向尾部方向移动expN条记录,当expN为负时向首部方向移动expN条记录,当expN为1时可以省略。
8.查找
LOCATE[范围][FOR条件]
功能:
在数据表的指定范围中搜索满足条件的第一个记录。
搜索成功,记录指针指向该记录,并将FOUND()置为.T.;否则,记录指针指数据表末尾,并将FOUND()置为.F.。
<范围>缺省为ALL。
CONTINUE
功能:
查找下一个满足LOCATE命令指定条件的记录,查找成
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- VFP 常用命令 包含 一些 SQL 命令
![提示](https://static.bdocx.com/images/bang_tan.gif)