VFP中SQL语句大全.docx
《VFP中SQL语句大全.docx》由会员分享,可在线阅读,更多相关《VFP中SQL语句大全.docx(18页珍藏版)》请在冰豆网上搜索。
![VFP中SQL语句大全.docx](https://file1.bdocx.com/fileroot1/2022-11/22/01b07ac5-586a-4cea-9f80-2dc6951fe7b6/01b07ac5-586a-4cea-9f80-2dc6951fe7b61.gif)
VFP中SQL语句大全
VFP的SQL命令和语句大全
1.CREATETABLE-SQL命令
该命令的一般格式为:
CREATETABLE|dbf<表文件名>(字段名1字段类型[(字段宽度[,小数位数])][,字段名2字段类型[(字段宽度[,小数位数])]]……)
例:
CREATETABLExscj(xhc(8),xmc(6),xbc
(2),;cjn(5,1),ksrqd)
2.ALTERTABLE-SQL命令功能
命令格式示例
添加字段ALTERTABLExscjADDCOLUMNkcmcC(14)
重命名字段ALTERTABLExscjRENAMECOLUMNkcmcTOkc
删除字段ALTERTABLExscjDROPCOLUMNkc
3.INSERT-SQL命令
该命令的一般格式为:
INSERTINTO<表名>[(字段名1[,字段名2…])]VALUES(表达式1[,表达式2…])
例:
INSERTINTOxscj(xh,xm,cj)VALUES("81991001","张良",85.5)
4.UPDATE-SQL命令。
命令格式:
UPDATE<表名>SET字段1=表达式1[,字段2=表达式2…];
WHERE条件表达式
例:
UPDATExscjSETcj=cj*1.05WHEREcj>80
5.DELETE-SQL命令。
命令格式:
DELETEFROM<表名>[WHERE条件表达式]
例:
DELETEFROMxscjWHEREcj<60
6.SELECT-SQL命令创建查询
常用的格式:
SELECT表名1.字段名1[AS标题名1],表名1.字段名2[AS标题名2],…
FROM数据库名!
表名1[,数据库名!
表名2][,数据库名!
表名3]
[TOFILE文本文件名|intotable|intocursor表文件名]
[WHERE选定条件]
[GROUPBY分组字段名]
[HAVING分组中的满足条件]
[ORDERBY排序字段名1[ASC|DESC][,排序字段名2[ASC|DESC]...]]
示例:
浏览学生中的查询学生student.qpr:
SELECT表xs.xhas学号,表xs.xmas姓名,表xs.xbas性别,;
表xs.csrqas出生日期,表xs.bjas班级名称;
FROM数据test!
表xs;
WHERE表xs.bj=cs1;
ORDERBY表xs.xh;
INTOTABLExs
浏览成绩中的按课程查询sub_cj.qpr:
SELECT表xs.bjas班级名称,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;
GROUPBY表xs.bj;
ORDERBY表xs.bj;
INTOTABLEsub_cj
7.CREATESQLVIEW命令创建视图
打开数据库,用命令来创建视图:
OPENDATABASE数据库名
CREATESQLVIEW视图文件名ASSQL-SELECT语句
例:
OPENDATABASESJ
CREATSQLVIEWSCOREASSELECTSJCJ.XH,SJCJ.CJ;
FROMSJ!
SJCJWHERESJCJ.KCH=”计算机基础”
8.CREATETABLE-SQL命令创建数据库表
命令一般格式:
Createtable表名1[free](字段名1字段类型代号[(字段宽度[,小数位数])][null|notnull][check字段规则1[error“信息1”]][default默认值][primarykey|unique][references表名2[tag索引标识1]][,字段名2字段类型代号[(字段宽度[,小数位数])][null|notnull]][check字段规则2[error“信息2”]][default默认值])|fromarray数组名
使用示例:
creatdataxscjgl&&创建学生成绩管理数据库
createtablexs(;
xhc(4)default"1201"primarykey,;
xmc(6),;
xbc
(2)checkxb="男"orxb="女"error"性别只能是男或女"default"女",;
nln
(2)null;
)&&创建学生表
createtablekc(;
kchc(3)unique,;
kcmc(10),;
xfn(3,1),;
bxkl;
)&&创建课程表
createtablecj(;
xhc(4)default"1201"referencexstagxh,;
kchc(8),;
ksrqd,;
cjn(5,1);
)&&创建成绩表
modidata
altertablecjaddprimarykeyxh+kch+str(cj,4,1)tagdh&&为成绩表添加一个主索引
一、主要命令:
1、CREATE
CREATEDATABASE库文件名.DBC―――建立数据库:
CREATETABLE/DBF表名(各个字段属性)¬¬¬¬¬¬¬¬¬¬¬¬¬¬—————建立表
CREATEVIEW<视图名>AS
执行这个语句时,如果没有打开的数据库,则建立独立的视图,这样的视图不能存储。
2.DROP
DROPVIEW<视图>————删除视图
3、MODIFYSTRUCTURE 作用:
显示表文件结构,并允许修改此表的结构。
格式:
MODIFYSTRUCTURE
说明:
只有在用USE命令打开表文件以后,才能显示或修改表文件的结构。
4、APPEND
作用:
在当前表的尾部(无论表中有无记录)追加记录(在当前表指当前正使用的表)。
格式:
APPEND[BLANK]
说明:
在APPEND命令后面加上BLANK参数表示在当前表的尾部添加一条空白记录。
无BLANK参数时,表示在当前表的尾部添加一条记录并要求用户输入相应的字段内容。
5、INSERT
INSERTBLANKBEFORE 在当前表的当前记录之前插入一条空白记录
INSERTINTO表名[(字段]VALUES(表达式1[,表达式2…])——插入记录
INSERTINTO表名FROMARRAYArrayName|FROMMEMVAR
如带有FROMMEMVAR子句,则用同名的内存变量给字段赋值。
例:
INSERTINTO学生(XH,XM,XB)VALUES(“950106”,“高山”,“男”)
6.ALTERTABLE表名ADD字段名字段类型(字段参数)―――添加字段
ALTERTABLE表名ALTER字段名SETCHECK<条件>——为字段添加有效性规则
例:
ALTERTABLE评分ALTER分数SETCHECK分数>=0AND分数<=10
ALTERTABLE表名DROP字段名[ALTERCOLUMN字段名Type{NULL|NOTNULL}][{,字段名TypeNULL|NOTNULL}...][DROP字段名[,字段名[,...]]
例:
altertable歌手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<条件>]
[TOPRINT|TOFILE<文件>]
LIST|DISPLAYSTRUCTURETOPRINT|TOFILE<文件>)
LIST|DISPLAYSTATUS[TOPRINT|TOFILE<文件>]
注:
LIST命令一次连续显示完所有记录内容。
DISPLAY命令在显示记录满屏后,要求用户按任意键继续显示。
如果LIST与DISPLAY都无任何选择项时,LIST显示文件的全部记录,DISPLAY仅显示当前记录。
11、记录的定位
作用:
用记录指针(POINTER)定位记录。
格式:
1)GO[TO]RECORDn|TOP|BOTTOM
命令定位GO[RECORD]NGOBOTTOMGOTOP
2)n
3)SKIP[+|-]n
说明:
第一个命令又叫绝对定位,其中,RECORDn定位到n号记录,TOP定位到第1个记录,
BOTTOM定位到最后一个记录。
第二个命令定位到第n个记录,n是一个数值。
第三个命令又叫相对定
位,它以当前记录为基准前移(-)或后移(+)n个记录,不选任选项,则默认记录指针后移一个记
录。
LOCATE[<范围>]FOR<表达式>范围:
ALLNEXTN,RECORDN,REST
12、CHANGE和EDIT
作用:
显示要编辑或修改的字段。
格式:
CHANGE|EDIT[<范围>][FIELDS<字段名表>][WHILE<条件>][FOR<条件>]
13、REPLACE
格式:
REPLACE[<范围>]<字段1>WITH<表达式1>[,<字段2>WITH<表达式2>][FOR<条件>][WHILE<条件>]
例:
REPLACEALL工资WITH工资+200FOR工资<1000
REPLACEFROMARRAY数组名[FIELDS字段名列表][常用子句]——用内存数组的值更新数据表中的记录:
14、DELETE、PACK、ZAP和RECALL
作用:
分别是给要删除的记录作删除标记、彻底删除、删除所有记录和取消被选中的表记录的删除标志。
格式:
DELETE[<范围>][WHILE<条件>][FOR<条件>](特例:
DELETEFILEFILENAME.DBF,该命令删除指定的表文件)
DELETE TAGALL[OF复合索引文件名]
DELETE TAG索引标识1[OF复合索引文件名1][,索引标识2[OF复合索引文件名2>…
例:
DELETEFROM订单WHERE签订日期<={^2001-01-02}
PACK
ZAP
RECALL[<范围>][FOR<条件>][WHILE<条件>]
13、SORT和INDEX
1)SORT
作用:
是建立一个其记录以新的物理顺序排列的新表文件,原文件不变.
格式:
SORTTO<文件名>ON<字段名1>[/A][/C][/D][,<字段名2>[/A][/C][/D>...
[ASCENDING|DESCENDING][<范围>][FOR<条件>][WHILE<条件>][FIELDS<字段表>]
2)INDEX
作用:
对当前表根据关键字表达式的值从小到大排列,并存入TO后指定的索引文件名的文件或复合索引文件的一个标识中。
格式:
INDEXON<关键字表达式>TO<文件名>
INDEXON<关键字表达式>TAG<标识名>[OF<文件名>][FOR<条件>]
说明:
第1个命令中,/A按字段名升序排序,/D按字段名降序排序,/C忽略大小写,针对字符型。
关键字而言,ASCENDING和DESCENDING分别表示升序和降序。
第1个命令建立.dbf表文件,第2个命令建立.idx单一索引文件,第3个命令建立.cdx复合索引文件(CompoundIndex)。
15、USE<表文件名>INDEX<索引文件名表>、SETINDEXTO和SETORDERTO
作用:
分别是打开表文件的同时打开索引文件、打开索引文件和改变主索引。
并确定第一个索引文件为主控索引文件.(当前起作用的索引文件称为主控索引文件,当前起作用的索引标识称为主控索引)
格式:
USE<表文件名>INDEX<索引文件名表>
SETINDEXTO[<索引文件名表>]
作用:
打开当前表的一个或多个索引文件并确定第一个索引文件为主控索引文件,该命令用于单索引文件.
格式:
SETINDEXTO[<索引文件表>][ADDITIVE]
说明:
(1)[<索引文件表>]中第一个索引文件为主控索引文件.
(2)若缺省ADDITIVE选项,则在用本命令打开索引文件时,除结构复合索引文件以外的索引文件均被关闭
SETORDERTO[<数值表达式>]|[<单索引文件名>]|[TAG]<索引标识>[ASCENDING|DESCENDING>(特例:
重新索引命令:
REINDEX)
作用:
对于打开表时自动打开的复合索引文件确定主索引,也能确定主索引文件.
(1) 数值表达式表示已打开的索引的序号.系统先为单索引文件编号,故结构复合索引文件的序号比单索引文件大.
(2) SETORDERTO或SETORDERTO0命令取消主索引和主索引文件,表中记录将按物理记录输出.
16、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
作用:
分类汇总命令,按<表达式>做过索引或排序的表文件的数字型字段进行分类汇总。
它把与<表达式>值相同的所有记录中的数字字段的值分别进行求和,并各自作为一条记录存放在由文件指定的文件中去。
在新生成的记录中,还将包括与<表达式>值相同的所有记录中的首项记录的其他字段内容。
格式:
TOTALTO<文件名>ON<表达式>[FIELDS<数值型字段名表>][<范围>][FOR<逻辑表达式1>][WHILE<逻辑表达式2>]
例:
USEB2-1
INDEXON职称TOZC
TATOLON职称TOB2-1TFILEDS工资
22.APPENDFROM
作用:
从其他文件向表文件添加数据。
数据来源文件既可以是表文件,也可是文本文件或其他符合规定的文件。
从一个文件输入一个OLE对象放入一个通用(general)字段:
APPENDGENERAL通用字段名[FROMfilename]如果省略子句FROMfilename,则将指定的字段清空。
将一个文本文件的内容拷贝到一个备注字段:
APPENDMEMO备注字段名[FROMfilename][OVERWRITE]
格式:
APPENDFROM<文件名>|?
[FIELDS<字段名表>][FOR<逻辑表达式>]
FIELDS<字段名表>和FOR<逻辑表达式>,用于源文件为表文件时,指定追加记录的字段和条件。
在字段名表和逻辑表达式中的字段名,必须是在来源和目的两个文件中公有的,共注意宽度和类型匹配。
实际应用中,数据来源文件常为表文件(.DBF)和ASCII码文本文件(.TXT)
对于文本文件又有标准格式(SDF)和通用格式(DELIMITED)之分.
例:
USEB2-1APPEFROMS3-1.TXTSDFBROWSE
23.COPY(选择表的部分内容生成一个新表)
作用:
把打开的表文件结构及数据复制成由<文件名>所指定的并符合规定要求的文件。
如果默认全部选择项和文件名的扩展名,则结构及全部数据都被复制,且其文件扩展名由系统规定为“.DBF”。
格式:
COPYTO<文件名>[FIELDS<字段名表>][<范围>][FOR<逻辑表达式1>][WHILE<逻辑表达式2>]
格式中的或用来为新表建立一个与原表相同的结构索引.
例1:
COPYTOB3-2COPYTOS3-2.TXTSDF
例2:
USERS
COPYTORS3FIELDS姓名,基本工资,奖金
USERS3
LIST
24.COPYFILE复制数据整表:
(可用于复制任何类型文件)
COPYFILE原文件名TO目标文件名
注:
复制表时,还应当复制和它相配的备注文件(.FPT,如有备注字段)和结构复合索引文件。
当前表应关闭。
(如果已打开表:
COPYTO新文件名)
例:
将RS.DBF复制为RS1.DBF
COPYFILERS.DBFTORS1.DBF
或 USE RSCOPYTORS1USERS1LIST
25.COPYSTRUCTURE(只复制结构不复制数据)
作用:
表文件结构复制,生成一个指定文件名和包括指定字段的表文件结构;如有CDX或PRODUCTION选择项还将为新表建立一个与源表相同的结构索引.
格式:
COPYSTRUCTURETO<文件名>[FIELDS<字段名表>]
例:
COPYSTRUCTURETOB3-3FIELDS编号,姓名,何时工作,职称
26.copyto建立结构扩展文件
作用:
把已打开的表文件的结构作为数据记录复制到由<文件名>指定的库文件中去.
格式:
COPYTO<文件名>STRUCTUREEXTENDED
例:
USEB3-3
COPYTOB3-4STRUCTUREEXTENDED
USEB3-4
BROW
该命令可以用于测试表文件结构,也可以用于顺序方式建立库文件结构.
新库文件的结构是一个由系统规定的标准结构,它由4个字段构成:
FIELD_NAME字段名
FIELD_TYPE 字段类型
FIELD_LEN 字段宽度
FIELD_DEC 小数位数
27.常用命令:
库表
打开数据:
OPENDATABASE库文件名
打开表:
USE表文件名
使用非前库的表:
USE库名!
表名
打开索引表:
USE表名INDEX索引名
显示库信息:
DISPDATABASE[TOPRINTER]
显示记录:
LIST(快速查看)
BROWSE(分屏浏览可修改)
DISP(显示当前记录)
关闭数据库:
CLOSEALL(关闭所有库、表、索引)
关闭表:
USE
CLOSEDATABASES(关闭当前库、表)CLOSETABLES(关闭当前表,不关库)
CLOSEINDEXES(关闭当前索引)
添加表:
ADDTABLE表名追加记录:
APPEND
APPENDFROM源文件
移去表:
REMOVETABLE表名
删除库:
DELETEDATABASE库名(先关闭库)
删除表:
DELETEFILE表名(先关闭表)
二、字符中操作函数
UPPER(S)小写字母UPPER(abc)ABC
LOWER(S)大写字母LOWER(ACD)acd
LEN(S)求字符串的长度LEN("中国1号")7
AT(S1,S2)在字符串S2,找字符串S1AT("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&PUSEG2
二、常用函数
1、数学函数
函数用途
ABS(<数值表达式>)绝对值,|x|
CEILING(<数值表达式>)>=自变量的最小整数
EXP(<数值表达式>)对基E的幂,e=2.71828
FLOOR(<数值表达式>)<=自变量的最大整数
INT(<数值表达式>)取整(舍尾)自变量
LOG(<数值表达式>)自变量的自然对数,lnx
LOG10(<数值表达式>)自变量的普通对数,lgx
MAX(<表达式1>,<表达式2>)两个值的最大值
MIN(<表达式1>,<表达式2>)两个值的最小值
MOD(<数值表达式1>,<数值表达式2>)求余数
RAND([<数值表达式1>])返回伪随机数
ROUND(<数值表达式1>,<数值表达式2>)四舍五入第一个自变量
SIGN(<数值表达式>)自变量的符号
SQRT(<数值表达式>)平方根(正根)
2、字符串操作函数
函数用途
&<内存变量>