VFP数据库操作常用命令.docx

上传人:b****3 文档编号:3516419 上传时间:2022-11-23 格式:DOCX 页数:15 大小:22.17KB
下载 相关 举报
VFP数据库操作常用命令.docx_第1页
第1页 / 共15页
VFP数据库操作常用命令.docx_第2页
第2页 / 共15页
VFP数据库操作常用命令.docx_第3页
第3页 / 共15页
VFP数据库操作常用命令.docx_第4页
第4页 / 共15页
VFP数据库操作常用命令.docx_第5页
第5页 / 共15页
点击查看更多>>
下载资源
资源描述

VFP数据库操作常用命令.docx

《VFP数据库操作常用命令.docx》由会员分享,可在线阅读,更多相关《VFP数据库操作常用命令.docx(15页珍藏版)》请在冰豆网上搜索。

VFP数据库操作常用命令.docx

VFP数据库操作常用命令

1,FoxPro文件的主要类型

库文件和备注文件.dbf.fpt

程序文件.prg.fxp

索引文件.idx.cdx

查询文件.qpr

屏幕格式文件.scx.sct.spr.spx

选单格式文件.mnx.mnt.mpr.mpx

报表格式文件.frx.frt

标签格式文件.lbx.lbt

内存变量文件.mem

视图文件.vue

文本文件.txt

2,命令中,规定使用的单词叫保留字,保留字大小写随意,并且可以只写前面的四个字母。

命令窗口中,保留字以蓝色显示。

3,表中的字段类型

字符型C字符串格式:

'abc',"abc",[abc]

数值型N

货币型Y货币常量格式:

$12,$12.68

日期型D日期型常量:

{^2013-1-16},{^2013.1.16},{^2013/1/16},{^2013116}

日期时间型T日期时间型常量:

{^日期,时间},

时间格式:

8:

10:

30,20:

10:

30,8:

10:

30A,8:

10:

30AM,8:

10:

30P,8:

10:

30PM

逻辑型L格式:

真(.T./.t./.Y./.y.),假(.F./.f./.N./.n.)

浮点型F

整型I

双精度型B

备注型M

通用型G

4,各类型数据大小的规定

数值型和货币型:

同数学中大小

日期型和日期时间型:

靠后的大

逻辑型:

真大于假

字符型:

当setcollateto"Machine"(机器顺序)时:

字符:

空格<数字<大写字母<小写字母

汉字:

按拼音

当setcollateto"PinYin"(拼音顺序)时:

字符:

空格<数字<'a'<'A'<'b'<'B'......

汉字:

按拼音

当setcollateto"Stroke"(笔画顺序)时:

字符:

空格<数字<'a'<'A'<'b'<'B'......

汉字:

笔画多的大

5,字符串大小的规定

setexacton设置为精确比较,比较进行到最长字符串为止

setexactoff设置为非精确比较,从左到右,比较到能分辨出大小的某个字符

"=":

按当前的比较方式比较

"==":

精确比较

6,数值运算符

**或^:

乘方运算

*:

乘法运算

/:

除运算

%:

求余运算

+:

加运算

-:

减运算

7,字符运算符

+:

将前后两个字符串合并,如"abc"+"def",结果为"abcdef"

-:

将前后两个字符串合并,前字符串尾部的空格会移到结果的后面,如"abc"+"def",结果为"abcdef"

8,逻辑运算符

.not.或not或!

.and.或and:

.or.或or:

优先级:

非>与>或

9,日期表达式

日期和日期,日期和数值,日期时间和数值可以加减

不能:

数值-日期,数值-日期时间,日期时间-日期时间

10,查看当前日期

?

date()

11,查看当前日期格式

?

set('date')

12,设置日期格式

setdateto日期格式

常用日期格式:

american,ansi,mdy,dmy,ymd

13,设置年份显示

setcenturyon|off

显示两位(on),显示四位(off)

14,设置年月日之间的分隔符

setmarkto分隔符

常用:

'-',"-",[-]

15,显示当前默认目录

?

sys(5)+sys(2003)

16,设置默认目录

setdefaultto目录

如:

setdefaulttod:

\driverg

一次性,再次进入VFP时无效,在"选项"对话框中可以设置长期有效的默认目录

17,改变主窗口的属性

主窗口对象:

_screen

_screen.fontname="黑体"

_screen.fontsize=25

18,变量的赋值

变量=表达式

store表达式to变量1,变量2,......

19,变量的定义

普通变量在赋值时被自动定义,数组变量必须先定义后使用

dimensionkleclare数组名(下标上限)一维数组

dimensionkleclare数组名(下标上限1,下标上限2)二维数组

20,显示变量信息(变量名/类型/值)

listmemory[like通配名][toprinter][tofile文件名]

displaymemory[like通配名][toprinter][tofile文件名]

display和list的区别,当对全表操作时display只显示当前第一条记录,list显示所有记录,相当于displayall;当显示的信息超过一页时,display会分页显示,list会将前面的信息滚出屏幕

21,清除所有变量(系统变量无法清除)

clearmemory

releaseall

22,清除指定变量

release变量1,变量2,...

releasealllike通配名

releaseallexcept通配名

23,建立数据库

creatdatabase[数据库(不写时会出现对话框)]

在没有指定保存路径的情况下,数据库默认保存位置:

c:

\programfiles\microsoftvisualstudio\vfp98

24,打开已经存在的数据库

opendatabase[数据库]

25,指定当前数据库

setdatabaseto数据库名

26,向数据库中添加表

addtable[表]

27,从数据库中移走表

removetable表

28,关闭数据库

closedatabases关闭当前数据库

closedatabasesall关闭所有打开的数据库

29,删除数据库

deletedata住院信息

30,建立"患者信息"表

create患者信息

31,打开已存在的表

used:

\driverg\spk1230.dbf

usespk1230.dbf在没有指定路径的情况下,默认打开c:

\programfiles\microsoftvisualstudio\vfp98这个位置的spk1230.dbf表

32,定义表的别名

use患者信息alias病人信息未定义别名时,以表的基本名为别名

33,打开表设计器

modifystructure

34,打开数据库设计器

modidatabase住院信息

35,关闭"数据库设计器"

closedata

36,打开表窗口

browse[last/edit/change/append]

37,表的复制

copyto新表[范围][for条件][字段s]

copystructureto新表[字段s]复制当前表的结构产生新表

38,根据字段过滤表信息

browforid=101

39,选择工作区2

select2/b工作区可以用区号表示(1,2,..),也可以用别名表示(A,B,..),还可以用工作区中打开的表的别名表示.

40,在不同工作区打开不同的表

select1

use患者信息aliashzxx

select2

use床位分配

select1/selecthzxx/selecta&&这三条命令是等效的

还可以:

use患者信息in1

use床位分配in2

当use表in0时,指的是未使用的最小工作区

41,记录指针

recno()获知当前记录

gotop或gototop将指针指向最前面的记录

gobottom或gotobottom将指针指向最后面的记录

go记录号或goto记录号或记录号

skip将指针后移一个记录

skipn将指针后移n个记录

skip-n将指针前移n个记录

42,查看记录

go2&&记录指针指向2号记录

disp住院号,姓名,b.医生姓名,b.床位号&&显示2号记录的字段值

skip2&&记录指针下移2位

?

recno()&&显示当前记录的记录号

disp住院号,姓名,b.医生姓名,b.床位号&&显示当前记录的字段值

gobottom&&记录指针指向最后一条记录

?

recno()

skip&&记录指针下移一位

?

recno()

gotop&&记录指针指向第一条记录

?

recno()

skip-1&&记录指针上移一位

?

recno()

setrelationto&&取消关联

43,在主窗口中显示记录

list显示所有记录

display显示当前记录

list/display[范围(all/nextn/rest/recordn)][for<条件>][字段名表][off]显示指定范围(全部/当前开始的n条/当前到最后/第n条)并符合条件的字段记录,加off则不显示记录号

listallforbs>=80andjs<=80xm,nl,bs,js

go5

listnext6lb,bm,mc显示第5-10条记录

44,在工作区1显示当前工作区部分字段的值

select1

list住院号,姓名,性别,出生日期

45,在工作区1显示非当前工作区部分字段的值

select1

display住院号,姓名,性别,出生日期,b.床位号

select1

display住院号,姓名,性别,出生日期,b->床位号

46,插入记录

insert在当前记录之后插入空记录,同时打开表窗口

insertblank在当前记录之后插入空记录,但不打开表窗口

insertbefore在当前记录之前插入空记录,同时打开表窗口

insertbeforeblank在当前记录之前插入空记录,但不打开表窗口

append打开表窗口添加新纪录

appendblank在表的最后添加空记录,但不打开表窗口

appendfrom表1[for条件][fields字段1,字段2,...]将表1中满足条件的记录添加到当前表,表1无须打开

47,删除记录

逻辑删除(在记录上做一个删除标记,不是真正的删除)

delete[范围][for条件]如果没有范围和条件,仅删除当前记录,其delete()为真

recall[范围][for条件]恢复

物理删除

pack物理删除已经逻辑删除的记录

zap物理删除表的全部记录

48,替换字段内容

replace字段1with表达式1,字段2with表达式2,......[范围][for条件]对表中指定范围内满足条件的记录进行替换,如果没有范围和条件,只替换当前记录

49,字段和变量之间值的传递

scatter字段sto数组名/memvar将当前记录的各字段放到指定数组/同名变量中,数组不用预先定义

scatter字段slike通配名to数组名/memvar

scatter字段sexcept通配名to数组名/memvar

当存在同名变量时,直接写出名称表示字段,'m.名称'或者'm->名称'表示变量

gatherfrom数组名/memvar字段s将数组/同名变量中的元素依次放到当前记录的字段中

gatherfrom数组名/memvar字段slike通配名

gatherfrom数组名/memvar字段sexcept通配名

50,过滤器

setfilterto条件表中只看到符合条件的记录

setfilterto取消过滤,可以看到所有记录

setfieldsto字段1,字段2,...表中只看到指定字段

setfieldsoff可以看到所有字段

51,排序(对当前表根据要求进行排序,产生一新表)

sortto新表on字段1[/A(升序,默认)或/D(降序)][/C(忽略大小写)],字段2[/A或/D][/C],...[ascending或descending(对未指定排序的字段而言)][范围][for条件][字段s]

52,索引

索引得到的记录顺序放在索引文件中,只有一个索引的文件叫单索引文件(.IDX),有多个索引的文件叫复合索引文件(.CDX),当复合索引文件与表同名时,它被称为结构化复合索引文件.如果某个索引文件被指定为当前索引,对表进行处理时,会以索引中的顺序进行.

53,索引得到的文件和排序得到的新表的区别

新表独立于旧表,不随旧表改变;索引文件依附于表,当索引打开时,会随表内容自动更新;索引文件占用的空间比排序的表小

54,索引的建立

在单索引文件中(只能以索引项升序建立)

indexon索引项to文件名[unique/candidate]

在结构化复合索引文件中

indexon索引项tag索引名[ascending(默认)/descending][unique(唯一索引)/candidate(候选索引)]

在非结构化复合索引文件中

indexon索引项tag索引名of文件名[ascending(默认)/descending][unique(唯一索引)/candidate(候选索引)]

55,索引的打开

和表一起打开

use表index索引文件1,索引文件2,...

表打开后再打开

setindexto索引文件1,索引文件2,...[additive(不关闭之前打开的索引,默认关闭)]

56,设置当前索引

setorderto索引号[ascending/descending]

索引号从1开始,顺序:

打开的单索引文件->结构化复合索引文件->打开的非结构化复合索引文件

setorderto[tag]索引名[ascending/descending]

setorderto或setorderto0表示不指定当前索引

order()函数可以得到当前索引的索引名

57,重新索引

reindex对所有打开的索引进行重新索引

58,关闭索引

closeindexes或setindexto

59,索引的删除

结构化复合索引文件

deletetag索引名1,索引名2,...

deletetagall

非结构化复合索引文件(索引要打开)

deletetag索引名1of文件名,索引名2of文件名,......

deletetagallof文件名

单索引文件(索引要关闭)

直接在文件夹窗口删除

60,记录查找

一般查找

locatefor条件[范围]从整个表中找出符合条件的第一个记录,但不会自动显示该记录.查找下一个continue.

索引查找

seek索引项值根据当前索引,找出指定索引项值的第一个记录,比一般查找快.查找下一个skip

61,关联

父表记录指针改变时,会引起子表记录指针的改变.

两表关联必须要有关联依据(共有字段),且子表以关联依据为索引项建立了索引,并设为当前索引.

62,建立关联(当前工作区为父表工作区)

setrelationto关联依据1into子表1所在工作区,关联依据2into子表2所在工作区,...[additive(不取消父表和其他子表的关联,默认取消)]

63,取消关联

setrelationto取消所有关联

setrelationoffinto工作区取消父表与指定工作区中的子表的关联

64,设置一对多关联

建立关联后加上:

setskipto子表1所在工作区,子表2所在工作区,...

65,取消一对多关联

setskipto

66,建立临时性关联(一对一)

select2

use床位分配

indexon住院号tosy

select1

use患者信息

setrelationon住院号intob

list住院号,姓名,性别,出生日期,b->床位号

67,建立临时性关联(一对多)

select2

use住院费用

indexon住院号tosy

select1

use患者信息

setrelationon住院号intob

setskiptob

list住院号,姓名,性别,出生日期,b->费用类别

68,将两表以关键字段相等为条件连接成独立的新表

select2

use床位分配

select1

use患者信息

joinwithbto患者床位for住院号=b.住院号fields住院号,姓名,住院科室,诊断,b.床位号,b.医生姓名

select0

use患者床位

browse

69,使用"住院费用"表的"费用小结"字段更新"患者费用合计"表中的"费用合计"字段

select2

use住院费用

indexon住院号tosy

select1

use患者费用合计

setordertotagsy

updateon住院号from住院费用replace费用合计with费用合计+b.费用小结random&&按住院号更新费用合计字段值

browse

70,数据统计

记录数统计

count[to内存变量][范围][for条件]

求和

sum[字段1,字段2,...][to变量1,变量2,...][范围][for条件]

求平均值

average[字段1,字段2,...][to变量1,变量2,...][范围][for条件]

分类汇总

totalon分类依据to新表[字段s][范围][for条件]

综合统计

calculate统计项目1,统计项目2,...[to变量1,变量2,...][范围][for条件]

统计项目:

cnt()--统计记录个数;sum()--求和统计;avg()--求平均值统计;max()--求指定字段中的最大值;min()--求指定字段中的最小值

71,SQL语句

当一个命令太长需要换行输入时,应在行后面加上分号再回车

例:

查看学生表中的学号

select学号from学生表

查看学生表中的内容

select*from学生表

查看学生表中年龄在18岁以上的学生信息

select*from学生表where年龄>18

显示借过书的学生学号(去重)

selectdistinct学号from借阅表

显示三年后学生的年龄(别名)

select学号,姓名,年龄+3as三年后年龄from学生表

显示年龄在18和22之间的学生信息

select*from学生表where年龄>=18and年龄<=22

select*from学生表where年龄between18and22

显示年龄不在18和22之间的学生信息

select*from学生表wherenot(年龄>=18and年龄<=22)

select*from学生表wherenot年龄between18and22

显示学号为"2004003"和"2004006"两位学生的信息

select*from学生表where学号="2004003"or学号="2004006"

select*from学生表where学号in("2004003","2004006")

以年龄降序显示学生表的内容

select*from学生表orderby年龄desc

显示年龄最大的三位同学信息(top要和order一起使用)

selecttop3*from学生表orderby年龄desc

显示前40%的学生信息

selecttop40percent*from学生表orderby年龄

学生人数

selectcount(*)from学生表

借过书的学生人数

selectcount(distinct学号)from借阅

求年龄和

selectsum(年龄)from学生表

求平均年龄

selectavg(年龄)from学生表

求最大,最小年龄

selectmax(年龄)min(年龄)from学生

统计每个人的借书本数

select学号,count(*)from借阅groupby学号

显示借书在一本以上的学生学号及借书本数

select学号,count(*)from借阅groupby学号havingcount(*)>1

显示借书者的学号,姓名,所借书的书号以及借书日期

select学生.学号(两表都有的字段要在前面加上表名),姓名,书号,借阅日期from学生,借阅where学生.学号=借阅.学号

显示借过书的学生信息

select*from学生where学号in(select学号from借阅)

72,将查询结果放到数组中

select命令intoarray数组名(不用预先定义)

73,将查询结果放到临时表中

select命令intocursor文件名

74,将查询结果放到永久表中

select命令intotabledbf文件名

75,将查询结果放到指定的文本文件中

select命令tofile文件名[additive(查询结果追加到文件后,默认覆盖)]

76,将查询结果送到打印机

select命令toprinter[prompt(显示打印对话框)]

77,将查询结果显示到主窗口

select命令toscreen

78,视图的创建

createview视图名asSQL语句

79,视图的修改

modifyview视图

80,将视图移除

dropview视图名

展开阅读全文
相关资源
猜你喜欢
相关搜索

当前位置:首页 > 工程科技 > 环境科学食品科学

copyright@ 2008-2022 冰豆网网站版权所有

经营许可证编号:鄂ICP备2022015515号-1