VFP上机练习题_索引与排序.doc
文本预览下载声明
排序与索引
将sb.dbf复制到D盘根目录下的xxx文件夹(xxx可用任意字母代替),执行命令:SET DEFAULT TO D:\XXX。
一、表的排序命令SORT
示例1:将所有设备按部门降序排列,部门相同时按价格升序排列
USE SB
SORT TO bmjg ON 部门/D,价格/A
USE bmjg
LIST
示例2:将所有设备按部门升序排列,部门相同按启用日期降序排列,要求只包含编号、名称、启用日期及部门4个字段。
USE sb
SORT TO bmrq ON 部门/A,启用日期/D FIELDS 编号,名称,启用日期,部门
USE bmrq
LIST
2.表的索引命令
⑴ 建立索引的命令
示例1:为设备表以价格字段作为索引关键字建立普通索引,要求降序排列
USE sb
INDEX ON 价格 TAG jg DESCENDING
LIST
示例2:为设备表以编号作为索引关键字建立候选索引,要求升序排列
USE sb
INDEX ON 编号 TAG bh ASCENDING CANDIDATE
LIST
示例3:为设备表以启用日期作为索引关键字建立普通索引,要求降序排列
USE sb
INDEX ON 启用日期 TAG qyrq DESCENDING
LIST
示例4:为设备表建立索引,要求按部门升序排列,部门相同时按启用日期升序排列
USE SB
INDEX ON 部门+DTOS 启用日期 TAG bmrq ASCENDING
LIST
示例5:为设备表建立索引,要求按部门降序排列,部门相同时按价格降序排列
USE sb
INDEX ON 部门+str 价格,9,2 TAG bmjg1 DESCENDING
LIST
示例6:为设备表建立索引,要求按部门升序排列,部门相同时按价格降序排列
USE sb
INDEX ON val 部门 -价格/1000000 TAG bmjg2 ASCENDING
LIST
示例7:为设备表建立索引,要求按部门降序排列,部门相同时按价格升序排列
USE sb
INDEX ON val 部门 -价格/1000000 TAG bmjg3 DESCENDING
LIST
注意:比较示例6和示例7
⑵ 确定主控索引的命令
示例1:确定jg为当前主控索引
SET ORDER TO TAG jg
示例2:确定bmjg2为当前主控索引
SET ORDER TO bmjg2
二、用SELECT-SQL命令建立查询
1.单表查询示例
⑴ 查询所有设备信息
SELECT * FROM sb
⑵ 查询价格在一万元以上的设备信息
SELECT * FROM sb WHERE 价格 10000
⑶ 查询价格在一万元以上、十万元以下的设备的编号、名称及价格
SELECT 编号,名称,价格 FROM sb WHERE 价格 10000 AND 价格 100000
⑷ 查询所有设备的编号、名称及价格,并按价格降序排列
SELECT 编号,名称,价格 FROM sb ORDER BY 价格 DESCENDING
⑸ 查询按价格由高到低排列后的前3条记录
SELECT * FROM sb ORDER BY 价格 DESCENDING TOP 3
⑹ 查询价格在一万元以上的设备台数
SELECT COUNT * AS 万元以上设备台数 FROM sb WHERE 价格 10000
⑺ 查询主要设备和非主要设备的台数
SELECT 主要设备,COUNT * AS 设备台数 FROM sb GROUP BY 主要设备
⑻ 查询资产总额
SELECT SUM 价格 AS 资产总额 FROM sb
⑼ 查询各部门资产额
SELECT 部门,SUM 价格 AS 部门资产额 FROM sb GROUP BY 部门
⑽ 查询各部门资产额,仅列出部门资产在一万元以上的记录,并按部门资产额降序排列
SELECT 部门,SUM 价格 AS 部门资产额 FROM sb GROUP BY 部门;
HAVING SUM 价格 10000 ORDER BY 2 DESCENDING
⑾ 查询各设备的累计增值金额
SELECT 编号,SUM 增值 AS 累计增值金额 FROM zz GROUP BY 编号
⑿ 查询累计大修费用在五千元以上的设备编号及累计大修费用
SELECT 编号,SUM 费用 AS 累计大修费用 FROM dx GROUP BY 编号;
HAVING 累计大修费用 5000
2.多表查询示例
⑴ 查询所有设备的编号、名称、价格及所在部门的名称
① SELECT sb.编号,sb.名称 AS 设备名称,sb.价格,bmdm.名称 AS 部门名称;
FROM sb,bmdm WH
显示全部