第2章数据查询与统计.ppt
《第2章数据查询与统计.ppt》由会员分享,可在线阅读,更多相关《第2章数据查询与统计.ppt(56页珍藏版)》请在三一文库上搜索。
1、上一次课讲到创建数据库、使用命令显示与操作记录、创建与使用可视类、使用表格显示与操作记录、使用TreeView控件显示记录、表单之间传递数据。请同学们回顾这样两个问题:,数据库表结构中项目组成?,2.如何添加、编辑自定义方法?,1.字段名称、类型、宽度、小数位数、索引方式; 2.字段格式、输入掩码、标题; 3.字段有效性规则; 4.字段注释。,添加方法:菜单:表单/新建属性/输入上面的属性名/添加 建立以后,可以通过“菜单:表单/编辑属性/方法程序”进行编辑。 对表单对象新建方法程序内容的编辑与对象事件过程编辑相同。,上一次课主要学习的内容,本章主要介绍VFP中的数据查询命令,SQL查询语句,
2、在表单中定位记录,过滤记录以及数据统计。,第2章.数据查询与统计,VFP中数据查询命令分类: VFP中数据查询命令可以分为顺序查询、索引查询和过滤记录3种。,2.1数据查询命令,格式: LOCATE FOR 格式: CONTINUE 功能: 定位到第一个符合条件的记录位置, CONTINUE定位下一个符合条件的记录 注意:该命令只能在当前工作区查询。,2.1.1顺序查询,在下列示例中,定位德国顾客的记录,然后显示总数。 CLOSE DATABASES OPEN DATABASE (HOME(2) + Datatestdata) USE customer & 打开 customer 表 SET
3、TALK OFF STORE 0 TO gnCount LOCATE FOR ALLTRIM(UPPER(customer.country) = GERMANY DO WHILE FOUND() gnCount = gnCount + 1 ? company CONTINUE ENDDO ? 总的德国客户数: + LTRIM(STR(gnCount),.Locate例,命令格式:SEEK 功能:SEEK 在一个表中搜索首次出现的一个记录,这个记录的索引关键字必须与指定的表达式匹配。,2.1.2索引查询,完整的命令格式:SEEK eExpression ORDER nIndexNumber |
4、IDXIndexFileName | TAG TagName OF CDXFileName ASCENDING | DESCENDING IN nWorkArea | cTableAlias 说明:只能在索引过的表中使用 seek 命令,并且只能搜索索引关键字。除非 SET EXACT 的设置为 OFF ,否则匹配指的是完全匹配。 如果 SEEK 找到了与索引关键字相匹配的记录,则 RECNO( ) 返回匹配记录的记录号;FOUND( ) 返回“真”(.T.);EOF( ) 返回“假”(.F.)。 如果找不到相匹配的关键字,则 RECNO( ) 将表中记录的个数加 1,然后返回;FOUND(
5、) 返回“假”(.F.);EOF( ) 返回“真”(.T.)。 如果 SET NEAR 设置为 ON ,则记录指针指向与索引关键字最相匹配的那个记录的后面一个记录。如果 SET NEAR 设置为 OFF,则记录指针指向文件的结尾。在这两种情况下,RECNO(0) 都返回与关键字最匹配的记录号。,CLOSE DATABASES OPEN DATABASE (HOME(2) + Datatestdata) USE customer ORDER company & 打开 Customer 表 SET EXACT OFF STORE B TO gcSeekVal SEEK gcSeekVal IF F
6、OUND() DISPLAY FIELDS company, contact ENDIF 示例中,先打开 customer 表,并按 company 字段建立索引。然后,用 seek 命令查找与内存变量 gcseekval 的值相匹配的索引关键字表达式。,.Seek例,VFP记录过滤是从逻辑上过滤掉不符合条件的记录,不真正删除。记录过滤可以将不需要的记录屏蔽掉。 命令格式: SET FILTER TO 表达式 IN 区号 | 别名 功能:指定访问当前表中记录时必须满足的条件。 表达式-指定记录必须满足的条件。 IN 区号 | 别名指定受 SET FILTER 命令影响的工作区或表别名。用该子句
7、来指定一个当前工作区以外的工作区或表。 关闭过滤功能命令:SET FILTER TO 说明:该命令对Select-SQL不起作用。函数FILTER(IN 区号 | 别名)返回 SET FILTER 命令中指定的表筛选表达式。,2.1.3记录过滤,CLOSE DATABASES OPEN DATABASE (HOME(2) + Datatestdata) USE customer & 打开 Customer 表 SET TALK ON SET FILTER TO SUBSTR(cust_id,1) = B CLEAR ? FILTER() & 显示 filter expression STORE
8、 FILTER(customer) TO gcOldFilter & Save filter expression SET FILTER TO country = USA ? FILTER() & 显示 filter expression SET FILTER TO &gcOldFilter & Restore filter expression ? FILTER() & 显示 filter expression LIST FIELDS cust_id, contact & Demonstrate filter condition,.Set Filter例,VFP支持SQL语句,可以从一个或多
9、个表中检索数据。SELECT SQL 命令是与其它 VFP 一样的内置的 VFP 命令。当你使用 SELECT 来生成查询时, VFP翻译查询并从表中获取指定数据。你可以从以下地方创建 SELECT 查询: “命令”窗口中 带有其它任何 VFP 命令的 VFP 程序中 查询设计器中,2.2查询操作,SELECT ALL|DISTINCT & ALL默认设置,结果包含所有行 | 剔除重复的行。 TOP PERCENT&符合条件记录中,取指定数量或百分比的记录。该子句要求先ORDER BY。包含 PERCENT 关键字时,取值范围0.01到99.99 AS , AS &限定匹配项的名称, 检索项应
10、该是FROM 子句所包含的表中的字段名称 或 一个常量,查询结果中每一行都出现这个常量值 或 一个表达式,可以是用户自定义函数名。指定各项均生成一列。如果多项同名, 在项名前包含表别名和一个句点来避免列重复。”,.Select-SQL格式-1/6,“AS ”为查询输出中的列指定显示名, 下列字段函数可以与选定项一起使用,选定项可以是一个字段或包含字段的表达式: AVG(检索项), 计算列中数值的平均值。 COUNT(检索项), 计算列中选定项的数目。计算查询输出的行数。COUNT(*) 计算查询输出中的行数。 MIN(检索项), 确定列中检索项的最小值。 MAX(检索项), 确定列中检索项的最
11、大值。 SUM(检索项), 计算列中数值的和。,.Select-SQL格式-2/6,FROM ! AS&列出所有从中检索数据的表。AS ,为表指定一个临时名称。 INTO |TO FILE|TO PRINTER|TO SCREEN& 指定在何处保存查询结果。:ARRAY 数组名 | CURSOR 临时表名 | DBF/TABLE 表名 缺省输出到浏览窗口。,.Select-SQL格式-3/6,WHERE AND AND|OR AND|OR & 指定查询条件/表间联接条件,可以是关系表达式/逻辑 表达式,也可以是: FieldName NOT BETWEEN Start_Range AND En
12、d_Range 检查是否字段值在指定的范围内。 FieldName NOT LIKE cExpression 搜索匹配 cExpression 的各字段。可以用百分号 (%) 和下划线 (_) 通配符作为 cExpression 的一部分。百分号代表串中任何长度的不知道的字符。下划线代表串中的单个的不知道的字符。,.Select-SQL格式-4/6,FieldName NOT IN (Subquery) 在记录出现在查询结果中之前字段必须包含一个由子查询返回的值。 GROUP BY ,HAVING &指定分组输出及输出条件HAVING应出现在INTO前。,.Select-SQL格式-5/6,U
13、NION ALL SELECT语句 &把一个 SELECT 语句的最后查询结果同另一个 SELECT 语句最后查询结果组合起来。默认情况下,UNION 检查组合的结果并排除重复的行。要组合多个UNION 子句,可使用括号。可以用 UNION 子句模拟一个外部联接。ALL 防止 UNION 删除组合结果中重复的行。 ORDER BY ASC|DESC,ORDER BY ASC|DESC&查询结果排序输出,.Select-SQL格式-6/6,显示customer 表中所有的公司名称(来自一个表的一个字段)。 CLOSE ALL CLOSE DATABASES OPEN DATABASE (HOME
14、(2) + datatestdata) SELECT pany ; FROM customer,.Select-SQL示例1,显示两个表中的三个字段的内容并根据 cust_id 字段连接表。它使用两个表的本地别名。 CLOSE ALL CLOSE DATABASES OPEN DATABASE (HOME(2) + datatestdata) SELECT pany, y.order_date, y.shipped_on ; FROM customer x ; INNER JOIN orders y ON x.cust_id = y.cust_id,.Select-SQL示例2,显示在指定字段
15、只有唯一数据的记录。 CLOSE ALL CLOSE DATABASES OPEN DATABASE (HOME(2) + datatestdata) SELECT DISTINCT pany, y.order_date,; y.shipped_on ; FROM customer x, orders y ; WHERE x.cust_id = y.cust_id,.Select-SQL示例3,以升序次序显示 country、postalcode 和 company 字段。 CLOSE ALL CLOSE DATABASES OPEN DATABASE (HOME(2) + datatestd
16、ata) SELECT country, postalcode, company ; FROM customer ; Order By country, postalcode, company,.Select-SQL示例4,将来自两个表的字段内容存储在第三个表中。 CLOSE ALL CLOSE DATABASES OPEN DATABASE (HOME(2) + datatestdata) SELECT pany, y.order_date, y.shipped_on ; FROM customer x, orders y ; WHERE x.cust_id = y.cust_id ; IN
17、TO TABLE custship.dbf BROWSE,.Select-SQL示例5,显示订单 (order) 日期早于 2007 年 9 月 16 日的记录。 CLOSE ALL CLOSE DATABASES OPEN DATABASE (HOME(2) + datatestdata) SELECT pany, y.order_date, y.shipped_on ; FROM customer x, orders y ; WHERE x.cust_id = y.cust_id ; AND y.order_date 2007-09-16,.Select-SQL示例6,显示订货日期早于 0
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 数据 查询 统计
链接地址:https://www.31doc.com/p-2548965.html