VF中的SQL语句大全
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
VFP的SQL命令和语句大全
1.CREATE TABLE
一般格式为:CREATE TABLE |dbf <表文件名>(字段名1 字段类型[(字段宽度[,小数位数])][,字段名2 字段类型[(字段宽度[,小数位数])]]……)例:CREATE TABLE xscj(xh c(8),xm c(6),xb c(2),;cj n(5,1),ksrq d)
2.ALTER TABLE
命令格式:
添加字段ALTER TABLE xscj ADD COLUMN kcmc C(14)
重命名字段ALTER TABLE xscj RENAME COLUMN kcmc TO kc
删除字段ALTER TABLE xscj DROP COLUMN kc
3.INSERT
一般格式为:INSERT INTO <表名>[(字段名1[,字段名2 …])] VALUES (表达式1[,表达式2 …])
例:INSERT INTO xscj(xh,xm,cj)VALUES ("81991001", "张良", 85.5)
4.UPDATE
命令格式:UPDATE <表名> SET 字段1 = 表达式1 [,字段2 = 表达式2 …];
WHERE 条件表达式
例:UPDATE xscj SET cj = cj*1.05 WHERE cj>80
5.DELETE
命令格式:DELETE FROM <表名> [WHERE 条件表达式]
例:DELETE FROM xscj WHERE cj<60
6.SELECT-SQL命令创建查询
常用的格式:SELECT 表名1. 字段名1 [AS 标题名1], 表名1. 字段名
2 [AS 标题名2], …
FROM 数据库名! 表名 1 [,数据库名! 表名 2 ] [, 数据库名! 表名
3 ]
[TO FILE 文本文件名| into table | into cursor 表文件名] [ WHERE 选定条件]
[GROUP BY 分组字段名]
[HAVING 分组中的满足条件]
[ORDER BY 排序字段名 1 [ASC | DESC] [, 排序字段名
2 [ASC | DESC] ...]]
示例:
浏览学生中的查询学生student.qpr :
SELECT 表xs.xh as 学号, 表xs.xm as 姓名, 表xs.xb as 性别, ; 表xs.csrq as 出生日期, 表xs.bj as 班级名称;
FROM 数据test!表xs;
WHERE 表xs.bj =cs1;
ORDER BY 表xs.xh;
INTO TABLE xs
浏览成绩中的按课程查询sub_cj.qpr :
SELECT 表xs.bj as 班级名称, COUNT(表xs.xh) as 班级人数, AVG(表cj.cj) as 平均分, ; MAX(表cj.cj) as 最高分, MIN(表cj.cj) as 最低分;
FROM 数据test!表xs, 数据test!表cj, 数据test!表kc;
WHERE 表cj.xh = 表xs.xh;
AND 表kc.kcm = 表cj.kcm;
AND 表cj.kcm = sc1;
GROUP BY 表xs.bj;
ORDER BY 表xs.bj;
INTO TABLE sub_cj
7.CREATE SQL VIEW 命令创建视图
打开数据库,用命令来创建视图:
OPEN DATABASE 数据库名
CREATE SQL VIEW 视图文件名AS SQL-SELECT 语句
例: OPEN DATABASE SJ
CREAT SQL VIEW SCORE AS SELECT SJCJ.XH, SJCJ.CJ ;
FROM SJ!SJCJ WHERE SJCJ.KCH=”计算机基础”
8.CREATE TABLE-SQL 命令创建数据库表
命令一般格式:
Create table 表名1 [free] ( 字段名1 字段类型代号[ (字段宽度[,小数位数] ) ][null | not null] [check 字段规则1 [error “信息1”] ] [default 默认值][primary key | unique] [references 表名 2 [tag 索引标识1 ] ][ , 字段名 2 字段类型代号[ (字段宽度[, 小数位数]) ] [null | not null] ][check 字段规则 2 [error “信息2”] ] [default 默认值] ) | from array 数组名使用示例:creat data xscjgl && 创建学生成绩管理数据库
create table xs (;
xh c(4) default "1201" primary key,;
xm c(6), ;
xb c(2) check xb="男" or xb="女" error"性别只能是男或女" default "女",;
nl n(2) null;
) && 创建学生表
create table kc (;
kch c(3) unique, ;
kcm c(10),;
xf n(3,1),;
bxk l;
) && 创建课程表
create table cj(;
xh c(4) default "1201" reference xs tag xh, ;
kch c(8),;
ksrq d,;
cj n(5,1);
) && 创建成绩表
modi data
alter table cj add primary key xh+kch+str(cj,4,1) tag dh &&为成绩表添加一个主索引
一、主要命令:
1、CREATE
CREATE DATABASE 库文件名.DBC―――建立数据库:
CREATE TABLE/DBF 表名(各个字段属性)¬¬¬¬¬¬¬¬¬¬¬¬¬¬—————建立表CREATE VIEW <视图名> AS <SELECT 查询语句>——建立视图
执行这个语句时,如果没有打开的数据库,则建立独立的视图,这样的视图不能存储。
2.DROP
DROP VIEW <视图>————删除视图
3、MODIFY STRUCTURE
作用:显示表文件结构,并允许修改此表的结构。
格式:MODIFY STRUCTURE
说明:只有在用USE命令打开表文件以后,才能显示或修改表文件的结构。
4、APPEND
作用:在当前表的尾部(无论表中有无记录)追加记录(在当前表指当前正使用的表)。
格式:APPEND [BLANK]
说明:在APPEND命令后面加上BLANK参数表示在当前表的尾部添加一条空白记录。
无BLANK参数时,表示在当前表的尾部添加一条记录并要求用户输入相应的字段内容。
5、INSERT
INSERT BLANK BEFORE 在当前表的当前记录之前插入一条空白记录INSERT INTO 表名[(字段] VALUES(表达式1[,表达式2…])——插入记录
INSERT INTO 表名FROM ARRAY ArrayName | FROM MEMVAR
如带有FROM MEMVAR子句,则用同名的内存变量给字段赋值。
例:INSERT INTO 学生(XH,XM,XB)VALUES(“950106”,“高山”,“男”)
6. ALTER TABLE 表名ADD 字段名字段类型(字段参数)―――添加字段
ALTER TABLE 表名ALTER 字段名SET CHECK <条件>——为字段添加有效性规则
例:ALTER TABLE 评分ALTER分数SET CHECK 分数>=0 AND 分数<=10 ALTER TABLE 表名DROP 字段名[ALTER COLUMN字段名
Type {NULL | NOT NULL}][{,字段名
Type NULL | NOT NULL}...] [DROP字段名[,字段名[, ...]]
例:alter table 歌手add最后得分F(6,2)
7、UPDATE
update <表名> set <字段1=表达式1>,<字段2=表达式2...> where <条件>
例: update 产品set 单价=单价*1.08
8、BROWSE
作用:打开一个“浏览”窗口,供用户浏览或修改记录。
格式:BROWSE [FIELDS <字段名表>]
9、USE
作用:打开和关闭表文件。
格式:USE [<文件名>]
10、LIST和DISPLAY
格式:LIST|DISPLAY [OFF] [<范围>] [FIELDS] <表达式表> [WHILE <条件>] [FOR <条件>]
[TO PRINT|TO FILE <文件>]
LIST|DISPLAY STRUCTURE TO PRINT|TO FILE <文件>)
LIST|DISPLAY STATUS [TO PRINT|TO FILE <文件>]
注:LIST命令一次连续显示完所有记录内容。
DISPLAY命令在显示记录满屏后,要求用户按任意键继续显示。
如果LIST与DISPLAY都无任何选择项时,LIST显示文件的全部记录,DISPLAY仅显示当前记录。
11、记录的定位
作用:用记录指针(POINTER)定位记录。
格式:
1)GO[TO] RECORD n|TOP|BOTTOM
命令定位GO [RECORD] NGO BOTTOMGO TOP
2)n
3)SKIP [+|-] n
说明:第一个命令又叫绝对定位,其中,RECORD n定位到n号记录,TOP定位到第1个记录,BOTTOM定位到最后一个记录。
第二个命令定位到第n个记录,n是一个数值。
第三个命令又叫相对定
位,它以当前记录为基准前移(-)或后移(+)n个记录,不选任选项,则默认记录指针后移一个记
录。
LOCATE [<范围>] FOR <表达式>范围: ALL NEXT N ,RECORD N, REST
12、CHANGE和EDIT
作用:显示要编辑或修改的字段。
格式:CHANGE|EDIT [<范围>] [FIELDS <字段名表>] [WHILE <条
件>] [FOR <条件>]
13、REPLACE
格式:REPLACE [<范围>] <字段1> WITH <表达式1>[,<字段2> WITH <表达式2>] [FOR <条件>]
[WHILE<条件>]
例:REPLACE ALL 工资WITH 工资+200 FOR 工资<1000
REPLACE FROM ARRAY数组名[FIELDS 字段名列表][常用子句]——用内存数组的值更新数据表中的记录:
14、DELETE、PACK、ZAP和RECALL
作用:分别是给要删除的记录作删除标记、彻底删除、删除所有记录和取消被选中的表记录的删除标志。
格式:DELETE [<范围>] [WHILE<条件>] [FOR <条件>] (特例:DELETE FILE FILENAME.DBF,该命令删除指定的表文件)
DELETE TAG ALL [OF 复合索引文件名]
DELETE TAG 索引标识1 [OF 复合索引文件名1][,索引标识2 [OF 复合索引文件名2>…例:DELETE FROM 订单WHERE 签订日期<={^2001-01-02}PACK
ZAP
RECALL [<范围>] [FOR <条件>] [WHILE<条件>]
15、SORT和INDEX
1)SORT
作用:是建立一个其记录以新的物理顺序排列的新表文件,原文件不变.
格式:SORT TO <文件名> ON <字段名1> [/A] [/C] [/D][,<字段名2> [/A] [/C] [/D>...
[ASCENDING|DESCENDING] [<范围>] [FOR <条件>] [WHILE<条
件>] [FIELDS<字段表>]
2)INDEX
作用: 对当前表根据关键字表达式的值从小到大排列,并存入TO后指定的索引文件名的文件或复合索引文件的一个标识中。
格式: INDEX ON <关键字表达式> TO <文件名>
INDEX ON <关键字表达式> TAG <标识名> [OF <文件名>] [FOR <条件>]
说明:第1个命令中,/A按字段名升序排序,/D按字段名降序排序,/C忽略大小写,针对字符型。
关键字而言,ASCENDING和DESCENDING分别表示升序和降序。
第1个命令建立.dbf表文件,第2个命令建立.idx单一索引文件,第3个
命令建立.cdx复合索引文件(Compound Index)。
16、USE <表文件名> INDEX <索引文件名表>、SET INDEX TO和
SET ORDER TO
作用:分别是打开表文件的同时打开索引文件、打开索引文件和改变主索引。
并确定第一个索引文件为主控索引文件.(当前起作用的索引文件称为主控索引文件, 当前起作用的索引标识称为主控索引)
格式:USE <表文件名> INDEX <索引文件名表>
SET INDEX TO [<索引文件名表>]
作用:打开当前表的一个或多个索引文件并确定第一个索引文件为主控索引文件,该命令用于单索引文件.
格式:SET INDEX TO [<索引文件表>] [ADDITIVE]
说明: (1)[<索引文件表>]中第一个索引文件为主控索引文件.
(2)若缺省ADDITIVE选项,则在用本命令打开索引文件时,除结构复合索引文件以外的索引文件均被关闭
SET ORDER TO [<数值表达式>]|[<单索引文件名>]|[TAG] <索引标
识> [ASCENDING|DESCENDING>(特例:重新索引命令:REINDEX)
作用:对于打开表时自动打开的复合索引文件确定主索引,也能确定主索引文件.
(1) 数值表达式表示已打开的索引的序号.系统先为单索引文件编号,故结构复合索引文件的序号比单索引文件大.
(2) SET ORDER TO 或SET ORDER TO 0命令取消主索引和主索引文件,表中记录将按物理记录输出.
17、FIND、SEEK和LOCATE及CONTINUE
作用:前两个命令FIND和SEEK是在一个已经建立了索引文件的表中,定位到关键字中的内容与命
令行中字符串相同的第一个记录。
后一个命令在用USE打开表文件以后,直接查询表中字段内容。
格式:FIND <“字符串”>|<字符串>SEEK <表达式> (表达式的数据类型可为字符型、数字型、日期型和逻辑型。
)
LOCATE [<范围>] [FOR <条件>] [WHILE<条件>]
CONTINUE
说明:FIND命令与SEEK命令的区别是前者后跟字符串,而后者后跟表达式。
在用LOCATE命令找到
一个匹配记录后,可用CONTINUE命令搜索表的剩余部分来寻找其他匹配的记录。
18、COUNT
作用:统计当前表文件中符合条件的记录数。
格式:COUNT [<范围>] [FOR <条件>] [WHILE<条件>] [TO <内存变量名>] 说明:内存变量名可用除参数外的任意字符。
19、SUM
作用:对当前表中选中记录的全部或指定的数值字段或由指定字段组成的数值表达式累加求和。
格式:SUM [<范围>] [数值<表达式>] [TO <内存变量名表>] [FOR <条件>] [WHILE<条件>]
20、AVERAGE
作用:对当前表中选中记录的全部或部分数值型字段及其组成的表达式求平均值并显示。
格式:AVERAGE [<范围>] [数值<表达式>] [TO <内存变量名表>] [FOR <条件>] [WHILE<条件>]
21、TOTAL
作用:分类汇总命令,按<表达式>做过索引或排序的表文件的数字型字段进行分类汇总。
它把与<表达式>值相同的所有记录中的数字字段的值分别进行求和,并各自作为一条记录存放在由文件指定的文件中去。
在新生成的记录中,还将包括与<表达式>值相同的所有记录中的首项记录的其他字段内容。
格式:TOTAL TO <文件名> ON <表达式>[FIELDS <数值型字段名表>][<范围>][FOR <逻辑表达式1>][WHILE <逻辑表达式2>]
例:USE B2-1
INDEX ON 职称TO ZC
TATOL ON 职称TO B2-1T FILEDS 工资
22.APPEND FROM
作用:从其他文件向表文件添加数据。
数据来源文件既可以是表文件,也可是文本文件或其他符合规定的文件。
从一个文件输入一个OLE对象放入一个通用(general)字段:APPEND GENERAL 通用字段名[FROM filename]如果省略子句FROM filename,则将指定的字段清空。
将一个文本文件的内容拷贝到一个备注字段:APPEND MEMO 备注字段名[FROM filename][OVERWRITE]
格式:APPEND FROM <文件名>|?[FIELDS <字段名表>][FOR <逻辑表达式>] FIELDS <字段名表>和FOR <逻辑表达式>,用于源文件为表文件时,指定追加记录的字段和条件。
在字段名表和逻辑表达式中的字段名,必须是在来源和目的两个文件中公有的,共注意宽度和类型匹配。
实际应用中,数据来源文件常为表文件(.DBF)和ASCII码文本文件(.TXT) 对于文本文件又有标准格式(SDF)和通用格式(DELIMITED)之分.
例: USE B2-1APPE FROM S3-1.TXT SDFBROWSE
23.COPY (选择表的部分内容生成一个新表)
作用:把打开的表文件结构及数据复制成由<文件名>所指定的并符合规定要求的文件。
如果默认全部选择项和文件名的扩展名,则结构及全部数据都被复制,且其文件扩展名由系统规定为“.DBF”。
格式:COPY TO<文件名> [FIELDS <字段名表>][<范围>][FOR <逻辑表达式1>][WHILE <逻辑表达式2>]
格式中的或用来为新表建立一个与原表相同的结构索引.
例1: COPY TO B3-2COPY TO S3-2.TXT SDF
例2: USE RS
COPY TO RS3 FIELDS 姓名,基本工资,奖金
USE RS3
LIST
24. COPY FILE复制数据整表:(可用于复制任何类型文件)
COPY FILE 原文件名TO 目标文件名
注:复制表时,还应当复制和它相配的备注文件(.FPT,如有备注字段)和结构复合索引文件。
当前表应关闭。
(如果已打开表:COPY TO 新文件名)例:将RS.DBF复制为RS1.DBF
COPY FILE RS.DBF TO RS1.DBF
或USE RSCOPY TO RS1USE RS1LIST
25.COPY STRUCTURE (只复制结构不复制数据)
作用:表文件结构复制,生成一个指定文件名和包括指定字段的表文件结构;如有CDX或PRODUCTION选择项还将为新表建立一个与源表相同的结构索引.
格式: COPY STRUCTURE TO<文件名> [FIELDS <字段名表>]
例: COPY STRUCTURE TO B3-3 FIELDS 编号,姓名,何时工作,职称
26.copy to建立结构扩展文件
作用:把已打开的表文件的结构作为数据记录复制到由<文件名>指定的库文件中去.
格式: COPY TO<文件名> STRUCTURE EXTENDED
例: USE B3-3
COPY TO B3-4 STRUCTURE EXTENDED
USE B3-4
BROW
该命令可以用于测试表文件结构,也可以用于顺序方式建立库文件结构.
新库文件的结构是一个由系统规定的标准结构,它由4个字段构成:
FIELD_NAME 字段名
FIELD_TYPE 字段类型
11/23页
FIELD_LEN 字段宽度
FIELD_DEC 小数位数
27.常用命令:
库表
打开数据: OPEN DATABASE 库文件名
打开表:USE 表文件名
使用非前库的表:USE 库名!表名
打开索引表:USE 表名INDEX 索引名
显示库信息:DISP DATABASE [TO PRINTER]
显示记录:LIST (快速查看)
BROWSE(分屏浏览可修改)
DISP (显示当前记录)
关闭数据库:CLOSE ALL (关闭所有库、表、索引)
关闭表:USE
CLOSE DATABASES(关闭当前库、表)CLOSE TABLES(关闭当前表,不关库) CLOSE INDEXES (关闭当前索引)
添加表:ADD TABLE 表名追加记录:
APPEND
APPEND FROM 源文件
移去表:REMOVE TABLE 表名
删除库:DELETE DATABASE 库名(先关闭库)
删除表:DELETE FILE 表名(先关闭表)
二、字符中操作函数
UPPER(S)小写字母UPPER(abc) ABC
LOWER(S)大写字母LOWER(ACD) acd
LEN(S)求字符串的长度LEN("中国1号") 7
AT(S1,S2)在字符串S2,找字符串S1 AT("H","CHINA") 2
SUBSTR(S,I,N)在S字符串中的第I个字符起取N个字符SUBSTR('TECHNOLO',3,3) CHN
LEFT(S,N)从字符串S左边取N个字符LEFT(“中国人”,4)中国RIGHT(S,N)从字符串S右边取N个字符S=‘12345’
RIGHT(S,3)345
SPACE(N)生成N个空格"合计"+SPACE(2)+"123" 合计123
TRIM(S)消除字符串尾部空格TRIM("姓名") 姓名
ALLTRI(S)消除字符串中所有空格ALLTRIM("李丽")李丽
STUFF(S1,N1,N2,S2) 用字符串S2替换S1中第N1个字符起的N2个字符STUFF ("NOW",2,1,"E")NEW
& 宏替换P=“G2”
USE &P USE G2
二、常用函数
1、数学函数
函数用途
ABS(<数值表达式>)绝对值,|x|
CEILING(<数值表达式>)>=自变量的最小整数
EXP(<数值表达式>)对基E的幂,e=2.71828
FLOOR(<数值表达式>)<=自变量的最大整数
INT(<数值表达式>)取整(舍尾)自变量
LOG(<数值表达式>)自变量的自然对数,ln x
LOG10(<数值表达式>)自变量的普通对数,lg x
MAX(<表达式1>,<表达式2>)两个值的最大值
MIN(<表达式1>,<表达式2>)两个值的最小值
MOD(<数值表达式1>,<数值表达式2>)求余数
RAND([<数值表达式1>])返回伪随机数
ROUND(<数值表达式1>,<数值表达式2>)四舍五入第一个自变量
SIGN(<数值表达式>)自变量的符号
SQRT(<数值表达式>)平方根(正根)
2、字符串操作函数
函数用途
&<内存变量> 用于代替内存变量内容
LEN(<字符串表达式>)返回字符串表达式的字符个数
SPACE(<数值表达式>)生成空格
SUBSTR(<字符串表达式>,<数值表达式n>[,<数值表达式L>])求子字符串,从指定的字符串表达式第n个开始,总长为L的字符串
LOWER(<字符串表达式>)将字符串字母转换成小写字母
UPPER(<字符串表达式>)将字符串字母转换成大写字母
TRIM(<字符串表达式>)删除字符串尾空格
ASC(<字符串表达式>)返回字符串表达式最左边的第一个字符的ASCII码CHR(<数值表达式>)将数值表达式转换成字符
AT(<字符串表达式1>,<字符串表达式2>[,<数值表达式n>])
确定字符串表达式1在字符串表达式2中的位置,n为字符串表达式第几次出现STR(<数值表达式>[,<数值表达式L>][,<数值表达式n>)将数值转换为字符串,L为数值表达式总长,n为小数位数
VAL(<字符串表达式>)将数字字符串转换为数字
TYPE(<表达式>)检测表达式值的数据类型
LTRIM(<字符串表达式>)删除字符串左部空格
RTRIM(<字符串表达式>)删除字符串右部空格
LEFT(<字符串表达式>,<数值表达式n>)取字符串左边部分字符,n为返回的字符个数RIGHT(<字符串表达式>,<数值表达式n>)取字符串右边部分字符,n从右边截取字符个数MONTH(<日期型表达式>|<日期时间型表达式>)从日期
查月份函数:
CMONTH(<日期型表达式>|<日期时间型表达式>)由日期查月份名函数
DAY(<日期型表达式>|<日期时间型表达式>)从日期查当月的日函数
DOW(<日期型表达式>|<日期时间型表达式>[,<数值表达式>])由日期查星期函数
5、显示、打印位置函数
函数用途
ROW()判断光标行位置函数
COL()判断光标列位置函数
INKEY([<数值表达式>])检测用户所击键对应的ASCII码函数,数值表达式以秒为单位等待击键的时间
6、其他函数
函数用途
DISKSPACE()返回默认磁盘驱动器中可用字节数函数
OS()检测操作系统名称的函数
VERSION()返回VFP版本号的函数打开并修改数据表中的字段:
(1) CHANGE [FIELDS 字段名列表]
(2)EDIT[FIELDS字段名列表]这两个命令的功能相似,可选子句较多(详见手册)。
数据表改名:RENAME TABLE tablename1 TO tablename2 其中数据表tablename1必须存在且未打开。
RENAME VIEW viewname1 TO viewname2——视图改名其中数据表tablename1必须存在且未打开。
将当前表与另一表之间建立关联:
SET RELATION TO [表达式1 INTO 工作区号1 | 表别名1];[, 表达式2 INTO 工作区号2 | 表别名2] [, ...] 建立关联的两个表必须事先已按关联表达式进行索引排序。
在当前表与另一表之间建立一对多关联:SET SKIP TO表别名1[, 表别名2] 消除当前表与另一表之间的关联:SET RELATION OFF INTO 工作区号| 表别名
五、文件管理(文件和文件夹的复制、创建和删除)
从当前表复制出表或其它类型的文件(表须打开)
COPY TO filename [FIELDS 字段名列表] [常用子句] [其它子句] 如果没有指定类型,则复制一个与当前的表相同的数据表。
复制表的结构:COPY STRUCTURE TO filename [FIELDS字段名列表]
复制任何文件:COPY FILE 源文件TO 目的文件
如果用此命令复制表,表须关闭
六、数据的复制与传送
单个记录与数组间的数据传送
当前记录→数组或内存变量:
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”三者之一(必须带引号),分别表示按机器码、拼音和笔划排序。
八、查找和定位
顺序查找当前表中满足条件的第一条记录:
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 为任意表达式。
定义数组:DECLARE | DIMENSION 数组名(下标1,下标2,……)
定义过程:PROCEDURE 过程名PARAMETERS 参数表……
RETURN [TO MASTER | TO 程序名]
定义函数:FUNCTION 函数名PARAMETERS 参数表……
RETURN 表达式
定义公共变量:PUBLIC 变量名列表
PUBLIC [ARRAY] 数组名1(行1,列1)[, 数组名2(行2,列2) [,…]]
定义私有变量PRIVATE变量名列表PRIVATE ALL[LIKE | EXCEPT 通配符] 定义局部变量LOCAL 变量名列表
LOCAL [ARRAY] 数组名1(行1,列1)[, 数组名2(行2,列2) [,…]]
显示各种信息:
设置是否显示日期中的世纪: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 50Read
此例先在第2行、第2列显示"请输入金额: ",等待用户输入一个数值,将用户输入值赋给变量nMoney,如果用户不输入数值(直接按回车),则将50赋给nMoney。
请注意在下一行不能漏掉“Read”。
ALL:命令对表中所有记录起作用,即执行时从首记录到末记录,最记录指针停在数据库的末尾。
NEXT <expN> 命令作用于从当前记录开始到当前记录后<expN>条记录为止的范围内的记录,最后记录指针指向作用范围内的最后一条记录处。
NEXT 1表示仅作用于当前记录。
Record <expN> 命令作用于记录号为<expN>的记录。
TEST 命令作用范围从当前记录开始到表的最后一个记录为止命令中的FOR 子句只作用于满足条件的记录。
三、基本命令
1. 选择当前工作区SELECT <工作区号|数据表名|0>功能:选择当前工作区。
可以直接选择工作区号,也可通过指定其中已经打开的数据表别名来指定工作区。
SELECT 0 是选择当前未使用的最低编号的工作区
? 在下一行显示表达式串
?? 在当前行显示表达式串
@... 将数据按用户设定的格式显示在屏幕上或在打印机上打印
ACCEPT 把一个字符串赋给内存变量
APPEND 给数据库文件追加记录
APPEND FROM 从其它库文件将记录添加到数据库文件中
AVERAGE 计算数值表达式的算术平均值
BROWSE 全屏幕显示和编辑数据库记录
CALL 运行内存中的二进制文件
CANCEL 终止程序执行,返回圆点提示符
CASE 在多重选择语句中,指定一个条件
CHANGE 对数据库中的指定字段和记录进行编辑
CLEAR 清洁屏幕,将光标移动到屏幕左上角
CLEAR ALL 关闭所有打开的文件,释放所有内存变量,选择1号工作区CLEAR FIELDS 清除用SET FIELDS TO命令建立的字段名表
CLEAR GETS 从全屏幕READ中释放任何当前GET语句的变量
CLEAR MEMORY 清除当前所有内存变量
CLEAR PROGRAM 清除程序缓冲区
CLEAR TYPEAHEAD 清除键盘缓冲区
CLOSE 关闭指定类型文件
CONTINUE 把记录指针指到下一个满足LOCATE命令给定条件的记录,在LOCATE 命令后出现。
无LOCATE则出错。