VFP机考复习资料.docx

上传人:b****8 文档编号:29831363 上传时间:2023-07-27 格式:DOCX 页数:19 大小:20.73KB
下载 相关 举报
VFP机考复习资料.docx_第1页
第1页 / 共19页
VFP机考复习资料.docx_第2页
第2页 / 共19页
VFP机考复习资料.docx_第3页
第3页 / 共19页
VFP机考复习资料.docx_第4页
第4页 / 共19页
VFP机考复习资料.docx_第5页
第5页 / 共19页
点击查看更多>>
下载资源
资源描述

VFP机考复习资料.docx

《VFP机考复习资料.docx》由会员分享,可在线阅读,更多相关《VFP机考复习资料.docx(19页珍藏版)》请在冰豆网上搜索。

VFP机考复习资料.docx

VFP机考复习资料

VFP-SQL语句部分

1、创建表

CREATETABLE-SQL命令

该命令的一般格式为:

CREATETABLE|dbf<表文件名>(字段名1字段类型[(字段宽度[,小数位数])][,字段名2字段类型[(字段宽度[,小数位数])]]……)

、例:

CREATETABLExscj(xhc(8),xmc(6),xbc

(2),;cjn(5,1),ksrqd)

补充:

C:

字符型

Y:

货币型

N:

数值型

D:

日期型

T:

日期时间型

L:

逻辑型

M:

备注型

G:

通用型

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数组名

使用示例:

createdataxscjgl&&创建学生成绩管理数据库

createtablexs(;

xhc(4)default"1201"primarykey,;&&primarykey主索引

xmc(6),;

xbc

(2)checkxb="男"orxb="女"error"性别只能是男或女"default"女",;

nln

(2)null)&&创建学生表

createtablekc(;

kchc(3)unique,;&&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&&为成绩表添加一个主索引

2、修改表结构表

ALTERTABLE-SQL命令功能:

见书P102

命令格式示例:

添加字段ALTERTABLExscjADDCOLUMNkcmcC(14)

重命名字段ALTERTABLExscjRENAMECOLUMNkcmcTOkc

删除字段ALTERTABLExscjDROPCOLUMNkc

修改字段:

ALTERTABLExscjALTERCOLUMNcj(4,1)

补充:

ALTERTABLE–SQL语句如果对表进行操作就不用加COLUMN。

如:

ALTERTABLEJSSETCHECKgzrq

ERROR’出生日期必须大于工作日期’&&设置表的有效性

ALTERTABLEJSDROPCHECK&&删除表的有效性规则

ALTERTABLEJSADDPRIMARYKEYjybhTAGjybh&&增加一个主索引

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

要将表记录彻底物理删除再在“命令”窗口中输入:

PACK

补充:

1>DELETE不能删除个别的字段,它对于给定表只能整个记录整个记录地删除.

2>与INSERT和UPDATA一样,删除一个表中的记录可能会导致与其他表的引用完整性问题.当对数据库进行修改时一定在头脑中有这个概念.

3>DELETE语句只会删除记录,不会删除表.如果要删除表需使用DROPTABLE命令.

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

补充:

子查询:

见书P125

UNION组合查询:

见书P125,组合查询必须用SQL语句实现,请大家着重看下。

SELECTDISTINCT……表示只显示一次

SELECTTOP5……表示显示前五条记录

7、创建视图

CREATESQLVIEW命令创建视图

打开数据库,用命令来创建视图:

OPENDATABASE数据库名

CREATESQLVIEW视图文件名ASSQL-SELECT语句

例:

OPENDATABASESJ

CREATSQLVIEWSCOREASSELECTSJCJ.XH,SJCJ.CJ;

FROMSJ!

SJCJWHERESJCJ.KCH=”计算机基础”

8、索引

一、建立索引文件:

格式:

indexon索引关键字|tag索引名|to索引文件名说明:

(1).tag索引名:

指定索引名,此索引存放在与表名相同的.cdx文件中。

(2).to索引文件名:

选择此项生成独立索引,即一个索引存放在一个索引文件中;否则生成的是结构化复合索引。

例1:

建立“工资情况”表的结构化复合索引文件,其索引关键字分别为姓名和工资,而索引名分别为xm和gz.

use工资情况

browse

indexon姓名tagxm

indexon工资taggz

browse

&&分别执行以上命令后,生成了“工资情况.cdx”文件,其中存放了xm和gz两个索引。

例2:

用“姓名”作索引关键字,建立“职工档案.dbf”的独立索引文件,文件名为a.idx。

use职工档案

indexon姓名tohello&&执行此命令,检查默认目录e:

\myvfp,会发现多了一个文件:

hello.idx

use

二、打开索引:

打开表时,系统会自动打开结构化复合索引,但此时显示的仍是物理顺序。

要使索引起作用,必须指定主控索引。

主控索引就是控制当前显示顺序的索引。

也可以在打开表的同时指定主控索引。

1.打开表的同时打开索引并指定主控索引:

格式:

use表名[index索引文件名][ordertag顺序号|索引名]

说明:

(1).index索引文件名:

用于打开独立索引文件。

(2).ordertag顺序号|索引名:

用于打开结构化复合索引。

其中,顺序号为该索引在复合索引文件中的先后顺序,即在“表设计器”的“索引”选项卡中看到的该索引的位置。

例:

在命令窗口输入以下命令依次执行:

use职工档案indexhello&&打开表的同时打开独立索引hello

browse&&显示的是按姓名索引的顺序,use

use工资情况ordertag2&&显示的是gz索引的顺序,因为gz在“表设计器”中位置为2,use

2.打开表后再打开索引:

格式1:

setindexto索引文件名

功能:

打开独立索引文件

格式2:

setorderto顺序号|tag索引名

功能:

打开结构化复合索引

例:

在命令窗口依次执行以下命令:

use职工档案

brow&&显示物理顺序,setindextohello&&打开独立索引文件hello.idx

browse&&显示的是按姓名索引的顺序,use

use工资情况

browse&&显示物理顺序

setorderto1&&即将xm指定为主控索引,因为xm在“表设计器”中位置为1,browse&&显示按姓名索引的顺序,setorertogz&&将gz指定为主控索引

browse&&显示的是gz索引的顺序,use

三、关闭索引:

格式1:

setindexto

格式2:

setorderto

说明:

上两条命令后不加选项,可关闭当前索引。

格式1用于关闭独立索引,格式2关闭复合索引。

索引关闭后,表仍处于打开状态,显示物理顺序。

四、删除索引:

1.独立索引文件的删除:

用删除文件的方法删除,在“我的电脑”中找到对应的.idx文件,将其删除即可。

2.复合索引文件的删除:

格式1:

deletetagall

格式2:

deletetag索引名

说明:

格式1删除复合索引文件中的所有索引,格式2删除复合索引文件中的指定索引。

一个复合索引文件中的所有索引都被删除后,该复合索引文件即自动删除了。

VFP程序设计部分

课堂例题

例1:

求1/2+2/3+3/5+……前20项的和

程序:

clear

s=0

p=1

q=2

fori=1to20

s=s+p/q

t=p

p=q

q=t+q

endfor

?

's='+str(s,10,6)

?

'i='+str(i)

例2:

判断某数是否为素数

程序:

clear

input"输入一个数:

"ton

fori=2toint(sqrt(n)+1)

ifn%i=0

exit

endif

endfor

ifn=2

?

alltrim(str(n))+'是一个素数'

else

ifi>int(sqrt(n)+1)

?

alltrim(str(n))+'是一个素数'

else

?

alltrim(str(n))+'不是一个素数'

endif

endif

例3:

scan语句对比

程序:

clear

usexs

go1

scanforxb='女'andxdh='01'

?

xh,xm,xb,xdh

endscan

 

第二种程序:

clear

selexs

go1

dowhileeof()=.f.

ifxb='女'andxdh='01'

?

xh,xm,xb,xdh

endif

skip

enddo

 

例4:

将星期输出为“日一二三四五六”。

程序:

clear

datt(date())

datt({^2009-5-5})

functiondatt

parametersdat

da='日一二三四五六'

i=dow(dat)

?

'星期'+substr(da,i*2-1,2)

endfunc

例5:

计算所给英语句子中的单词数。

程序:

clear

input"输入一个英语句子:

"tostr

i=1

count=0

word=0

fori=1tolen(str)

ch=substr(str,i,1)

ifch=''

word=0

else

ifword=0

count=count+1

word=1

endif

endif

endfor

?

'单词的个数:

'+alltrim(str(count))

例6:

字符串中每个字母出现的次数

程序:

clear

input"输入英语句子:

"tostr

fori=1to26

ch=chr(i+96)

n&ch=0

endfor

other=0

fori=1tolen(str)

ch=substr(str,i,1)

ifbetween(ch,'a','z')orbetween(ch,'A','Z')

n&ch=n&ch+1

else

other=other+1

endif

endfor

fori=1to26

ch=chr(i+96)

ifn&ch!

=0

?

ch+'出现过'+alltrim(str(n&ch))+'次'

endif

endfor

?

'other'+'出现过'+alltrim(str(other))+'次'

 

各种函数的实现

1、ABS

程序:

clear

input'一个数:

'toa

ifa>0

?

a

else

?

-a

endif

2、MAX和MIN由于牵扯到数组应该不会考,下面写一个三个数比较的代码,以MAX函数为例。

程序:

clear

inputtoa

inputtob

inputtoc

max=a

ifmax

max=b

endif

ifmax

max=c

endif

?

'最大的数为:

'+alltrim(str(max))

3、MOD

程序:

clear

input'被除数:

'toa

input'除数:

'tob

t=a-b

dowhilet>=0

t=t-b

enddo

t=t+b

?

alltrim(str(a))+'除以'+alltrim(str(b))+'的余数为:

'+alltrim(str(t))

4、ALLTRIM、LTRIM、RTRIM

ALLTRIM可以由LTRIM和RTRIM组成,所以下面我写的是LTRIM和RTRIM的代码,组合后就是ALLTRIM的代码。

LTRIM程序:

clear

input'输入一个英语句子:

'tostr

ch=left(str,1)

l=len(str)

dowhilech=''

l=l-1

str=right(str,l)

ch=left(str,1)

enddo

?

str

RTRIM程序:

clear

input'输入一个英语句子:

'tostr

ch=right(str,1)

l=len(str)

dowhilech=''

l=l-1

str=left(str,l)

ch=right(str,1)

enddo

?

str

联想:

去除字符串中所有空格

程序:

input'输入一个字符串:

'tostr

p=space(0)

fori=1tolen(str)

ch=substr(str,i,1)

ifch!

=''

p=p+ch

endif

endfor

?

str+'去掉所有空格后为'+p

5、LEN

程序:

clear

input'输入一个字符串:

'tostr

p=space(0)

len=0

dowhilep!

=str

len=len+1

p=p+substr(str,len,1)

enddo

?

'字符串长度为:

'+alltrim(str(len))

6、SPACE

程序:

clear

input'输入一个数字:

'toa

fori=1toa

?

?

''

endfor

 

补充部分

题目1:

变量值的交换,如交换a,b的值。

程序:

clear

input"一个数a:

"toa

input"一个数b:

"tob

c=a

a=b

b=c

?

'a,b交换后为'+alltrim(str(a))+','+alltrim(str(b))

题目2:

根据学生的成绩给予相应的等低,对应关系如下:

  90——100 A

  80——89  B

  60——79  C

  60以下    D

程序:

clear

input"输入一个学生的成绩:

"tocj

docase

casecj>90

?

'A'

casecj>80

?

'B'

casecj>60

?

'C'

otherwise

?

'D'

endcase

题目3:

位数对调,输入一个三位自然数,把这个数的百位与个位数对调,输出对调后的数。

程序:

clear

input"一个三位数a:

"toa

b1=int(a/100)

b2=mod(int(a/10),10)

b3=mod(a,10)

b=b3*100+b2*10+b1

?

alltrim(str(a))+'位数对调后为:

'+alltrim(str(b))

类似题型:

计算一个三位数个十百位数字的和。

程序:

input"输入一个三位数:

"tox

s=0

fori=1to3

a=val(substr(str(x,3),i,1))

s=s+a

endfor

?

"这个三位数的各位之和是:

"+alltrim(str(s,2))

题目4:

求出1-100中所有的素数,并将每个素数按照一排五个输出?

程序:

clear

y=0&&此变量用来判断输出的素数是第几个,逢五换行

fori=2to100

f=0&&此变量用来判断该数是否为素数

forj=2toint(sqrt(i))

ifmod(i,j)=0

f=1

endif

endfor

iff=0

?

?

alltrim(str(i))+""&&双问号表示在同一行输出,不换行

y=y+1

ifmod(y,5)=0

?

""

endif

endif

endfor

题目5:

寻找水仙花数数,求所有这样的三位数,这些三位数等于它各位数字的立方和。

例如,153=1^3+5^3+3^3。

程序:

clear&&此方法为穷举法,即将所有可能全部列出。

fori=1to9

forj=0to9

fork=0to9

a=100*i+10*j+k

ifa=i^3+j^3+k^3

?

alltrim(str(a))

endif

endfor

endfor

endfor

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

当前位置:首页 > 自然科学 > 物理

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

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