您的当前位置:首页正文

VFP中的难点2.0

2024-08-15 来源:独旅网
VFP中的难点

一、索引的总结

类别 单索引 (idx) 举例 Use yyy Index on 姓名 to xm1.idx Index on 性别 to xb1 Index on 部门+dtoc(出生日期,1) to bm1 新建 结构复合Use yyy 索引 (cdx) Index on姓名 tag xm Index on 性别 tag xb 非结构复Use yyy 合索引 (cdx) Index on姓名 tag xm2 of fjg Index on 性别 tag xb2 of fjg 结构复合随表一同打开或关闭 索引 单索引 Use yyy index xm1,xb1 或use yyy 打开 Set index to xm1,xb1 非结构复Use yyy index fjg 合索引 或use yyy Set index to fjg Set order to 0/1/2 | xm2,xb2 单索引/非Close index 结构复合关闭 索引 结构复合与表一同关闭或打开 索引 数据改打的索引 动 单索引use yyy index xm1,xb1 (xm1.idx,xb1.idx两个素引文件 复合索引 copy index xm1,xb1**结构复合索引 copy index xm1,xb1 to fjg**非结构复合索引 索引文件之间的转换 复合索引set index to fjg **打开非结构复合索引文件/如果是结构单索引 复合索引文件已经随表打开了 modi stru copy tag xm2 to xm3.idx copy tag xb2 to xb3.idx

reindex review(素引、排序等)

删除记录

use 课程表 brow pack brow

物理排序

sort on 考试类型/d,课程代号/a to kcb sele j ?sele() use kcb brow sele 1

素引

单素引

index on 考试类型 to kslx brow

set order to kslx set order to 1 brow close index brow sele 1

index on 考试类型 to kslx brow close index brow set index on set index to kslx brow close index

结构素引

index on 考试类型 tag ks index on 课程代号 tag kc dir *.cdx close index

非结构素引

index on 考试类型 tag ks of fjg index on 课程代号 tag kc of fjg set index to fjg set order to kc brow set order to ks brow

dele tag kc of fjg close index set index to

go 7 go 1 brow

物理查找

locate for 课程名称=\"算法设计\" ?recno() ?found() disp continue ?found() ?eof()

素引查找

index on 课程名称 tag kcmc set order to kcmc seek \"算法设计\" ?found() clear ?found() disp continue() ?eof() brow seek 成绩=68 seek 68

brow kcmc

index on 学时数 tag xss seek 68 ?found() disp find 68 disp go 1 find 68 brow

统计计算

计数

count to xx ?xx brow

count to xx for 考试类型=\"考试\" ?xx

求和

sum to x1 fields 学时数 sum 学时数 to x1

求平均值

average 学时数 to x2 for 考试类型=\"考试\" calculate sum(学时数),avg(学时数),max(学时数);

min(学时数) to x1,x2,x3

calculate sum(学时数),avg(学时数),max(学时数); ,min(学时数) to x1,x2,x3,x4 brow

分类汇总

index on 考试类型 tag lx set order to lx

total on 考试类型 to y1 fields 学时数 use y1 brow close all clear

多表临时性关联

sele 2(先设子表) use clkc index on 材料代码 tag dm set order to dm sele 4 第2步 use clls(clls为父表) 多表临时性关联 第1步 第3步 set relation to 材料代码 into clkc(当前在哪一个工作区) 第4步 set skip to clkc(建立一对多的关联) 查看 sele 4 brow sele 2 brow sele 2 dir use clkc

index on 材料代码 tag dm set order to dm sele 4 use clls

set relation to 材料代码 into clkc go 4 brow sele 2 brow sele 4 set skip to clkc go 4 brow set skip to set relation to close all open data 110

creat 110 creat data 110 modi data

OPEN DATABASE d:\\vfp\\学生实验原始表\\x10.dbc SHARED MODIFY DATABASE

USE d:\\vfp\\学生实验原始表\\clls.dbf IN 0 SHARED SELECT 2 SELECT 1 SELECT 2

SET ORDER TO TAG Dd OF d:\\vfp\\学生实验原始表\\clkc.cdx IN Clkc SET RELATION TO Clls.材料代码 INTO Clkc ADDITIVE

USE d:\\vfp\\学生实验原始表\\clkc.dbf IN 0 AGAIN ALIAS Clkc_a SHARED USE d:\\vfp\\学生实验原始表\\x4.dbf IN 0 SHARED SELECT 4 BROWSE LAST

SET ORDER TO TAG Dm OF d:\\vfp\\学生实验原始表\\clls.cdx IN Clls SET RELATION TO X4.材料代码 INTO Clls ADDITIVE SELECT 2

SET RELATION OFF INTO Clkc SELECT 4

SET RELATION OFF INTO Clls USE SELECT 2 USE

SELECT 3 USE SELECT 1 USE

多表联接操作

第1步 sele 2 use clkc sele 4 use clls 多表联接操作(一) 第2步 join with b to yy for 材料代码=b.材料代码 fields 材料第3步 代码,b.单价(当前在哪一个工作区) sele 6 查看 use yy brow sele cyclb.材料名称,单价,经手人,进出数量 from clls,cyclb; SQL命令联接 操作 where clls.材料代码=cyclb.材料代码 .and.供货商名称=; \"大华建筑材料公司\" order by 单价 descending into dbf xxx (二) sele 2 use clkc sele 4 use clls

查看 use xxx brow join with b to yy for 材料代码=b.材料代码 fields 材料代码,b.单价 sele 6

use yy brow

数据更新 sele 2 use score brow sele 1 modi stru

update on 学号 from score replace 综合成绩 with score.总评成绩 brow

SQL命令联接查询(二)

【例】检索供货商名称为“大华建筑材料公司”的所有进出材料的材料名称、单价、经手人、进出数量,并按单价从高到低的顺序列出。

sele cyclb.材料名称,单价,经手人,进出数量 from clls,cyclb; where clls.材料代码=cyclb.材料代码 .and.供货商名称=; \"大华建筑材料公司\" order by 单价 descending into dbf xxx use xxx brow

二、SQL查询:

Structure Query Language (Select Creat Alter)

一、select 1.简单查询

【例】从材料流水帐表中检索所有材料名称

SELECT 材料名称 FROM CLLS SELECT distinct 材料名称 FROM CLLS SELECT* FROM CLLS WHERE数量>300

2.嵌套查询

【例】列出材料流水帐表中数量大于300以上的材料的材料名称、单价、品牌与供货商名称。

sele 材料名称,单价,品牌,供货商名称 from cyclb where ; 材料代码 in (sele 材料代码 from clls where数量>=100 )

【例】列出单价在100以下,进出数量在300以下的所有材料的记录。

sele * from cyclb where 单价<100 and 材料代码 in (sele 材料代码 from clls where数量>=100 )

3.联接查询

【例】检索供货商名称为“大华建筑材料公司”的所有进出材料的材料名称、单价、经手人、进出数量,并按单价从高到低的顺序列出。

sele cyclb.材料名称,单价,经手人,进出数量 from clls,cyclb; where clls.材料代码=cyclb.材料代码 .and.供货商名称=; \"大华建筑材料公司\" order by 单价 descending

4.计算查询

函 数 名 COUNT(*) SUM(字段名) AVG(字段名) MAX(字段名) MIN(字段名) 功 能 计算记录个数(求查询结果数据的行) 求字段名所指定字段值的总和 求字段名所指定字段的平均值 求字段名所指定字段的最大值(数值、字符、日期) 求字段名所指定字段的最小值(数值、字符、日期) 【例】统计项目管理人员表中项目管理人员的专业种类、最大年龄、最低工资、平均工资,命令形式如下:

sele count(distinct 专业),max (年龄),min(工资),avg(工资) from glry sele count( 专业),max (年龄),min(工资),avg(工资) from glry

【例】统计项目管理人员表中年龄最小的女员工的生日,男员工的平均年龄,以及女员工的人数。对应的命令分别为:

sele count(*) as 女员工人数,max(出生日期) as 最小女员工生日; from glry where 性别=\"女\"

sele avg(年龄) as 男员工平均年龄 from glry where 性别=\"男\"

5.分组与计算查询 【例】依据项目管理人员表中的数据,分别统计各种专业的人数。

SELECT 文化程度, COUNT( * ) AS 人数 FROM GLRY GROUP BY 文化程度

【例】依据项目管理人员表中的数据,分别统计各种专业的人数,仅列出统计人数小于4人的结果。

sele 文化程度,count(*) as 人数 from glry; group by 文化程度 having count(*)<4

6.使用特殊运算符 (1)使用BETWEEN运算符

select * from glry where 年龄 between 30 and 40 order by 年龄 descending

(2)使用IN运算符

【例】在项目管理人员表中查询文化程度为本科或中专的员工记录。

sele * from glry where 文化程度 in (\"本科\中专\") sele * from glry where 文化程度 not in (\"本科\中专\")

sele * from glry WHERE 文化程度=\"本科\" OR 文化程度=\"中专\"

(3)使用LIKE运算符

【例】在项目管理人员表中查询所有姓“张”的员工记录。

SELECT* FROM GLRY WHERE 姓名 LIKE \"张%\" SELECT* FROM GLRY WHERE 姓名 LIKE \"张__\"

7.SQL查询的特殊选项 (1)显示查询的前几项或后几项结果

【例】检索项目管理人员表中工资位于前4名并且年龄大于30的员工记录

sele * top 4 from glry where 年龄>=30 order by 工资 descending 【例】显示项目管理人员表中工资最低的25%员工的记录。

sele * top 25 percent from glry order by 工资

(2)将查询结果存放到永久表中

sele * top 4 from glry where 年龄>=30 order by 工资 desc; into table gz use gz brow

SELECT* TOP 4 FROM GLRY WHERE 年龄>=30 ORDER ; BY 工资 DESC INTO CURSOR GZ2

(4)将查询结果存放到二维数组中

sele * top 4 from glry where 年龄>=30 order by 工资 desc; into array tema

?tema(1,1)

(5)将结果存放到文本文件中

sele * top 4 from glry where 年龄>=30 order by 工资 desc; to file x3

二.SQL定义功能(Creat )

1.表的定义

CREATE TABLE YGQK FREE(XM C(8),XB C(2),; HF L,DH C(14),NL N(2,0)) CREATE TABLE CLKC(材料代码C(13);

DEFAULT “HZ04DHJZ0000H”, 材料名称C(10), 单价N(8),数量N(8,2)CHECK 数量>=2 .AND. 数量<50000;

ERROR“数量范围应在2到50000之间!”,;

供应商名称C(20)PRIMARY KEY))

2.建立视图

creat data 1013

creat sql view xx as selec clls.材料代码,clls.材料名称,cyclb.单价 from clls,cyclb ; where clls.材料代码=cyclb.材料代码 brow modi view xx

【例】依赖一个数据库表创建视图。在“小型项目管理系统”数据库中,创建一个名为“低价材料”的视图,由“材料库存”表中单价小于50的材料记录形成。 OPEN DATBASE 小型项目管理系统 CREATE VIEW 低价材料 AS;

SELECT* FROM CLKC WHERE 单价<50 USE 低价材料 BROWSE

CLOSE DATABASE

【例】依赖多个数据表创建视图。在“小型项目管理系统”数据库中,创建一个名为“进库材料”的视图,由“材料流水表CLLS”中“材料名称”、 “经手人”和“材料库存表CLKC”中的“单价”、“供货商名称”4个字段形成。 OPEN DATABASE 小型项目管理系统 CREATE VIEW 进库材料 AS;

SELECT CLLS.材料名称, CLLS.经手人, CLKC.单价, ; CLKC.供货商名称;

FROM CLLS,CLKC;

WHERE CLLS.材料代码=CLKC.材料代码; .AND.CLLS.材料进出=.T.

三.SQL修改功能(Alter )

1、修改表结构

ALTER TABLE YGQK ADD ZZ C(24) ALTER TABLE YGQK ALTER XM C(10)

【例】在例5-23创建的“材料库存”表中,为“单价”字段设置一个默认值“988.88”,并删除“库存数量”字段的条件约束。 OPEN DATABASE 项目管理

ALTER TABLE CLKC ALTER 单价 SET DEFAULT 988.88 ALTER TABLE CLKC ALTER 库存数量 DROP CHECK

【例】在已创建的“员工基本情况”表中,删除“家庭住址(ZZ)”字段,并将其“电话”字段改名为“家庭电话(JTDH)”,其SQL命令分别为: ALTER TABLE YGQK DROP COLUMN ZZ

ALTER TABLE YGQK RENAME COLUMN DH TO JTDH

【例】在已创建的“材料库存”表中,为“材料代码”字段创建一个候选索引。 OPEN DATABASE 项目管理

ALTER TABLE CLKC ADD UNIQUE 材料代码 删除视图的SQL命令

【例】删除“小型项目管理系统”数据库中名为“低价材料”的视图。 OPEN DATABASE 小型项目管理系统

DROP VIEW 低价材料 删除数据表

【例】删除“小型项目管理系统”数据库中的“进库材料”表。 OPEN DATABASE 小型项目管理系统 DROP TABLE 进库材料

2、修改记录及数据库等 【例】利用SQL命令在已创建的“员工基本情况”表中插入新记录。 1)、插入新记录所有字段的数据: INSERT INTO YGQK;

VALUES(“吴海”,“男”,.F.,“5865678”,24) 2)、插入新记录部分字段的数据: INSERT INTO YGQK;

(姓名,电话)VALUES(“刘丽”,“4523986”)

【例】先创建3个同名内存变量,再利用SQL命令将内存变量的值作为新记录插入到“员工基本情况”表中。 姓名=“江波” 性别=“男” 电话=“8667868”

INSERT INT 员工基本情 FROM MEMVAR 3).更新数据

Update glry set 年龄=年龄+1,工资=工资*1.1

Update glry set 姓名=”李勇”,部门=”办公室” where 姓名=”王勇” Update glry set 工资=工资+30 where 性别=”男”

3.删除数据

【例】用SQL命令,将“项目管理人员表GLRY”中所有40岁以上男员工的记录进行逻辑删除,然后再做物理删除。

DELETE FROM GLRY WHERE 年龄>40 AND 性别=“男” PACK

20110928上课记录

creat dbf studentxj free (xm c(8),xb c(2),ty l,; csrq d) modi stru creat xx

modi stru

creat dbf studentxj1 (xh c(6) default \"000000\csrq d,wuli N(5,1) check wuli>=50 .and. wuli<=100 error; modi stru

creat data xx

creat dbf studentxj1 (xh c(6) default \"000000\csrq d,wuli N(5,1) check wuli>=50 .and. wuli<=100 error \"score is out\") modi stru

BROWSE LAST use

creat dbf studentxj2 (xh c(6) default \"000000\" primary key,xm c(8),xb c(2),ty l,; csrq d,wuli N(5,1) check wuli>=50 .and. wuli<=100 error \"score is out\") modi stru use

alter table studentxj1 add zz m modi stru

alter table studentxj1 add sx N(6,2) modi stru

alter table studentxj1 alter sx N(5,2) modi stru

alter table studentxj1 alter sx set default 60 modi stru

alter table studentxj1 alter sx drop default

modi stru

alter table studentxj1 alter sx set check sx>=50 and sx<=100 error \"score is out !\" modi stru brow

alter table studentxj1 alter sx set check sx>=50 and sx<=100 error \"score is out !\" modi stru

alter table studentxj1 alter sx drop check modi stru

alter table modi stru

alter table alter table out\" brow

alter table out\"

modi stru

alter table alter table

alter table modi stru

alter table alter table list stru

alter table modi stru

alter table

alter table modi stru list stru

alter table modi stru

studentxj1 studentxj1 studentxj1 studentxj1 studentxj1 studentxj1 studentxj1 studentxj1 studentxj1 studentxj1 studentxj1 studentxj1 studentxj1 add hx n(7,2) alter hx n( 5,2)

alter hx set check hx >=40 alter hx set check hx >=40 drop column hx drop sx rename column wuli to wl rename column wuli to wl rename wuli to wl rename xh to xxh alter wuli drop check rename wuli to wl add UNIQUE xxh and hx<=80 error\"score is and hx<=80 error\"score is use dir

sele * from score where 平时成绩>=80

creat view c1 as sele * from score where 平时成绩>=80 modi data use score sele score brow

modi data drop view c1 add table clls add cycl dir

add clkc

add table clkc remove table clkc drop table clls sele studentxj1 use studentxj1 clear list stru use

insert into studentxj1 (wl,xm,ty) values (74,\"张三\

insert into studentxj1 (xxh,wl,xm,ty) values (\"0001\张三\brow

sele studentxj1 brwo brow

insert into studentxj1 values (\"0002\张三\男\brow

xxh=\"0003\" xm=\"李四\"

ty=.f. wl=100

insert into studentxj1 from memvar brow list memo

dele from glry where 性别=\"男\" and 年龄>40 sele glry brow

update glry set 年龄=年龄+10 brow

因篇幅问题不能全部显示,请点此查看更多更全内容