清华大学出版社 TSINGHUA UNIVERSITY PRESS 第2章表的基本操作
第2章 表的基本操作
清华大学出版社 TSINGHUA UNIVERSITY PRESS 设备表 21表的建立与修改 编号 名称启用日期 价格 部门主要设备备注商标 016-1车床 03/05/90 62044.61 21 Memo en 016-2车床 01/15/9 27132.7321 memo gen 037-2磨床 07/21/90 241292.12 InteRno gen 038-1钻床 10/12/89 5275.0023 gen 100-1微机 08/12/97 8810.0012 meno Ge en 设备表的结构 101-1复印机06/01/92 10305.0112 TTTFTFF en 210-1轿车 05/08/95 151000.0011 InteRno Gen 政索引表 字段名 宽度小数位数索引UL 有关命令 名称 字符型 启用日斯 日期型 取消 ●创建设备表 create sb 价格 数值型 插入〔) 打开设备表 Use sb 主要设备 逻辑型 89214 册除① 浏览、修改记录 browse 备注 备注型 修改结构 Modify structure ●关闭当前表use
设备表 2.1 表的建立与修改 编号 名称 启用日期 价格 部门 主要设备 备注 商标 016-1 车床 03/05/90 62044.61 21 .T. Memo gen 016-2 车床 01/15/92 27132.73 21 .T. memo gen 037-2 磨床 07/21/90 241292.12 22 .T. memo gen 038-1 钻床 10/12/89 5275.00 23 .F. Memo gen 100-1 微机 08/12/97 8810.00 12 .T. memo Gen 101-1 复印机 06/01/92 10305.01 12 .F. memo gen 210-1 轿车 05/08/95 151000.00 11 .F. memo Gen 有关命令 ⚫ 创建设备表 create sb ⚫ 打开设备表 Use sb ⚫ 浏览、修改记录 browse ⚫ 修改结构 Modify structure ⚫ 关闭当前表 use 设备表的结构
饭社 TSINGHUA UNIVERSITY PRESS ● Browse命令的浏览窗口 ●“SB.商标”通用型字段窗口 □口 编号名称启用日期价格部门主要设备备注商标 016-1车床03/05/906204.6121T o16-2车床 01/15/9227132.7321T memo: gen g-2唐床 07/21/90241292.12 T memo: gen 038-1钻床 10/12/89 5275.0023F Memo gen 1001微机108/12/976100012了 memo Gen 101复印机06/0/9211030501s商标□旧区 210!车6101500g Fox. bmp
⚫ Browse命令的 浏览窗口 ⚫ “SB.商标”通用型字段窗口
清华大学出版社 TSINGHUA UNIVERSITY PRESS 22表达式 常量 数值型常量例如10,-100,2.81828, 字符型常量例如"微机",PC机’,"3.14159″ 日期型和日期时间型常量例如{06/30/1999},{9/15/998:45}, 2001/08/30 设置通常的日期格式,命令 SET STRICTDATE T00, 设置严格的日期格式,命令 SET STRICTDATE T01 逻辑型常量真和假两种值, T 变量 内存变量 S= VFP STORE 2*4 To n1 n2. n3 ? s &&显示S=VFP DIMENSION X(3),a(2,3)&&定义数组 a(1,3)=5 &&数组元素赋值 字段变量 USE Sb ?名称 &&SB.DBF打开后记录指针指向第1个记录,显示车床 G05 &将记录指针指向第5个记录(G0命令参阅2.3.1节) ?名称 系统变量
2.2 表达式 常量 数值型常量 例如10,-100,2.81828, 字符型常量 例如"微机",'PC机',"3.14159" 日期型和日期时间型常量 例 如 {06/30/1999}, {9/15/99 8:45} , {^2001/08/30} 设置通常的日期格式,命令SET STRICTDATE TO 0, 设置严格的日期格式,命令SET STRICTDATE TO 1 逻辑型常量 真和假两种值, .T. . F . 变量 内存变量 s='VFP' STORE 2*4 TO n1,n2,n3 ? 'S=',s && 显示S= VFP DIMENSION x(3),a(2,3) &&定义数组 a(1,3) =5 &&数组元素赋值 字段变量 USE sb ?名称 && SB.DBF打开后记录指针指向第1个记录,显示车床 GO 5 && 将记录指针指向第5个记录(GO命令参阅2.3.1节) ?名称 系统变量
清华大学出版社 表26VF算术、关系、逻辑运算符S8 运算优先级运算符 义 运算举例(注解表示显示结果) 算术 圆括号 876 或**乘方 &&9 乘 /% 除 取模:取两数相除的余数 15%4 &&3 减 关系4 小于 ?63aaaa&&. t 大于等于 ?"大专">=”大学”&.T 相等:串比较时串首同就得真 ABC=AB &&.T 完全相等:两串全同才得真 、#或!=不相等 ?.T.<>.F &&.T 包含:左串是右串子串才得真?BC"$"ABCD" 逻辑 NOT或!非:结果是右边逻辑值的反 ?NOT BC$"ABCD &&F 2 与:两边都真才得真 ?.t. and abc>ab&&F 或:两边有一为真就得真 T OR4=5 &&.T
表2.6 VFP算术、关系、逻辑运算符 运算 优先级 运 算 符 意 义 运算举例(注解表示显示结果) 算术 8 ( ) 圆括号 7 ^ 或 ** 乘方 ?3^2 &&9 6 × 乘 / 除 % 取模:取两数相除的余数 ?15%4 &&3 5 + 加 - 减 关系 4 大于 ?"ABC">"AAAA" &&.T. >= 大于等于 ?"大专">="大学" &&.T. = 相等:串比较时串首同就得真 ?"ABC"="AB" &&.T. = = 完全相等:两串全同才得真 ?"ABC"=="AB“ &&.F. <>、#或!= 不相等 ?.T.<>.F. &&.T. $ 包含:左串是右串子串才得真 ?"BC"$"ABCD" &&.T. 逻辑 3 NOT 或 ! 非:结果是右边逻辑值的反 ?NOT"BC"$"ABCD" &&.F. 2 AND 与:两边都真才得真 ?.T.AND"ABC">"AB" &&.F. 1 OR 或:两边有一为真就得真 ?.T.OR4=5 &&.T
清华大学出版社 表28字符处理函数 TSINGHUA UNIVERSITY PRESS 函数 功能 例子(注解表示结果) SUBSTR(,中第? SUBSTR("ABCD",2,2)&&"BC 达式1>[,的子串 LEFT(,?LEFT("ABCD",2)&&"AB" 式>) 个字符的子串 RIGHT(字符表达式>,右起? RIGHT("ABCD",2)&&"CD 达式>) 个字符的子串 LEN() 返回字符串的长度 ?LEN ABCD) &&4 AT(,在[,中第次出现的位 置 ALLTRIM() 删除字符串前导和末尾的空格 ?ALLTRIM( ABCD)&& ABCD SPACE() 返回个空格 ?SPACE (4) && UPPER() 将小写字母转换为大写 ? UPPER( aBc") & abc LOWER() 将大写字母转换为小写 ?LOWER( aBc") VAL() 将字符串转换为数值 ?VAL("3.14") &&3.14 STR([,转换为长度为[,位,具有) 从表示的 ASCII码返回字?CHR(65) &&"A 符 ASC()返回字符的 ASCII码值ASC("A") &&65
表2.8 字符处理函数 函 数 功 能 例子(注解表示结果) SUBSTR(,[,]) 返回中第 位起的长度为的子串 ?SUBSTR("ABCD",2,2)&&"BC" LEFT(,) 返回左起 个字符的子串 ?LEFT("ABCD",2) &&"AB" RIGHT(,) 返回右起 个字符的子串 ?RIGHT("ABCD",2) &&"CD" LEN() 返回字符串的长度 ?LEN("ABCD") && 4 AT(,[,]) 返回字符串在中第次出现的位 置 ?AT("BC","ABCD",1) && 2 ALLTRIM() 删除字符串前导和末尾的空格 ?ALLTRIM(" ABCD ")&&"ABCD" SPACE() 返回个空格 ?SPACE(4) &&" " UPPER() 将小写字母转换为大写 ?UPPER("aBc") &&"ABC" LOWER() 将大写字母转换为小写 ?LOWER("aBc") &&"abc" VAL() 将字符串转换为数值 ?VAL("3.14") && 3.14 STR([,[,]]) 将数值转换为长度为位,具有 位小数的字符串 ?STR(3.14,5,1) &&" 3.1" CHR() 从表示的ASCII码返回字 符 ?CHR(65) &&"A" ASC() 返回字符的ASCII码值 ?ASC("A") &&65
清华大学出版社 IN/VERSITY PRESS VFP命令常用子句 命令格式 IIST| DISPLAY| IELDS]NWHE 范围子句 AlI 所有记录 NEXT从当前记录起的N个记录 RECORD第N个记录 RES 从当前记录起到最后一个记录止的所有记录 例 USE sb GO2 &&记录指针指向第2个记录 IⅠ STNEXT5FOR价格>10000&&显示第2,3,6等3个记录 LIST RECORD5 FIELDS编号,名称,价格 USE sE LISTNEXT 3 &&(1 IIST部门编号,名称,备注FOR部门="21"&&(2 IIST编号,名称价格←09,启用日期 FOR YEAR启用日期)<19950FF&&(3)
VFP命令常用子句 命令格式: LIST|DISPLAY [[FIELDS] ][][FOR ][WHILE ] [OFF][ TO PRINT [PROMPT]|TO FILE ] 范围子句 : ALL 所有记录 NEXT 从当前记录起的N个记录 RECORD 第N个记录 REST 从当前记录起到最后一个记录止的所有记录 例: USE sb GO 2 && 记录指针指向第2个记录 LIST NEXT 5 FOR 价格>10000 && 显示第2,3,6等3个记录 LIST RECORD 5 FIELDS 编号,名称,价格 USE sb LIST NEXT 3 && (1) LIST 部门,编号,名称,备注 FOR 部门="21" && (2) LIST 编号,名称,价格*0.9,启用日期 FOR YEAR(启用日期)<1995 OFF && (3)
清华大学出版社 TSINGHUA UNIVERSITY PRESS 23表的维护命令 复制命令: COPY FILET0 COPY T0[ [ FIELDS FIELDS LIKE| FIELDS EXCEPT WITH BLANK| WITH TAB]] COPY STRUCTURE TO[ FIELDS] 例 USE &&若SB.DBF是打开的,则须关闭它 COPY FILE SB.DBFT0SB1.DBF&&复制得SB1.DBF COPY FILE SB. FPT TO SB1. FPT &&复制得SB1.FPT USE Sb COPY TO al &对sb.dbf原样复制,同时生成A1.DBF与A1.FPT COPY T0a2 FIELDS名称,编号 FOR LEFT(部门,1)=“2” LIST &&显示SB.DBF的记录数据 USE a2 LIST &&显示A2.DBF的记录数据 USE sb CopY to b1 neXt 3 SDF &&以系统数据格式复制,产生文本文件BL.TXT COPY STRUCTURE TO sb2 FIELDS名称,价格,编号,备注
2.3 表的维护命令 复制 命令: COPY FILE TO COPY TO [][FOR ][WHILE ] [FIELDS | FIELDS LIKE | FIELDS EXCEPT ] [[TYPE][SDF|XLS|DELIMITED[WITH |WITH BLANK|WITH TAB]]] COPY STRUCTURE TO [FIELDS ] 例: USE && 若SB.DBF是打开的,则须关闭它 COPY FILE SB.DBF TO SB1.DBF && 复制得SB1.DBF COPY FILE SB.FPT TO SB1.FPT && 复制得SB1.FPT USE sb COPY TO a1 && 对sb.dbf原样复制,同时生成A1.DBF与A1.FPT COPY TO a2 FIELDS 名称,编号 FOR LEFT(部门,1)=“2” LIST && 显示SB.DBF的记录数据 USE a2 LIST && 显示A2.DBF的记录数据 USE sb COPY TO b1 NEXT 3 SDF && 以系统数据格式复制,产生文本文件B1.TXT COPY STRUCTURE TO sb2 FIELDS 名称,价格,编号,备注
清华大学出版社 TSINGHUA、 UNIVERSITY PRESS 关于记录 例: USE SB &&当前记录为第1个记录 ?RECNOO O BOTTOM &&记录指针指向第7个记录,当前记录为第7个记录 ?RECNOO &&显示:7 G04 &是当前记录为第4个记录 SKIP -1 &当前记录为第3个记录 命令: INSERT [BLANK [BEFORE INSERT NT0表名[(字段名1[,字段名2,])] VALUES(表达式1[,表达式,,]) APPEND [BLANK] REPLACEWITH[ ADDITIVE] [,WTH[ ADDITIVE]],.[=1990 AND YEAR(启用日期)<=1995 LIST &&只显示1990年至1995年的记录 SET FILTER TO &&取消过滤器 LIST &&显示全部记录
例: USE SB && 当前记录为第1个记录 ?RECNO() && 显示:1 GO BOTTOM && 记录指针指向第7个记录,当前记录为第7个记录 ?RECNO() && 显示:7 GO 4 && 当前记录为第4个记录 SKIP -1 && 当前记录为第3个记录 命令: INSERT [BLANK] [BEFORE] INSERT INTO 表名[(字段名1 [,字段名2, ...])] VALUES(表达式1 [, 表达式, ...]) APPEND [BLANK] REPLACE WITH [ADDITIVE] [, WITH [ADDITIVE]] ...[][FOR ][WHILE ] 例:USE sb APPEND FROM a1 FIELDS 名称,价格 && A1.DBF中7个记录的2个字段值追加到SB.DBF的末尾 APPEND FROM b1 SDF && B1.TXT是系统数据格式的文本文件 DELETE FOR NOT 主要设备 && 为所有的非主要设备记录加上删除标记 PACK && 物理上删除带有删除标记的记录 REPLACE 价格 WITH 价格-1000, 部门 WITH "11" FOR 主要设备; && 主要设备的价格都减少1000,部门均改为11 APPEND BLANK && 追加1个空白记录 GO 4 SCATTER TO A MEMO && 第4个记录(包括备注型字段)的数据传送给数组A ?a(1),a(2),a(4),a(7) && 显示:038-1 钻床 5275.00 1997年12月封存 a(4)=6000 GATHER FROM a DISPLAY && 显示第4个记录,价格已由5275.00改变为6000.00 SET FILTER TO YEAR(启用日期)>=1990 AND YEAR(启用日期)<=1995 LIST && 只显示1990年至1995年的记录 SET FILTER TO && 取消过滤器 LIST && 显示全部记录 关于记录
建立或修改表结构的命令 UA UNIVERSITY PRESS 命令: CREATE TABLE ,(字段名1>(DD LTER TABLE ADD| ALTER COLUMN(LD ALTER TABLE DROP ICOLUMN| RENAME COLUMNTO 例 CREATE TABLE dx((编号c(5),年月c(4),费用n(6,1) LIST STRUCTURE&&主屏幕显示 DX.DBE的结构 INSERT INTO dx VaLUESC016-1,8911, 2763.5 InsERT iNTO dx VALUESC016-1,9112,3520.0) INSERT INTO dx VALUES(037-2,9206,6204.4) INsERT iNTO dx VALUESC038-1, 8911, 2850.0) LIST OFF &&主屏幕显示所有记录 主屏幕所显示 DX. DBF的记录数据如下 编号年月费用 016-189112763.5 016-191123520.0 037-292066204.4 038-189112850.0 alter table dx ADD摘要m(4) alter tabLE dx DROP摘
建立或修改表结构的命令 命令: CREATE TABLE ( [( [, ])][,...]) ALTER TABLE ADD | ALTER [COLUMN] [( [, ])] ALTER TABLE DROP [COLUMN] |RENAME COLUMN TO 例: CREATE TABLE dx(编号 c(5),年月 c(4),费用 n(6,1)) LIST STRUCTURE && 主屏幕显示DX.DBF的结构 INSERT INTO dx VALUES("016-1","8911",2763.5) INSERT INTO dx VALUES("016-1","9112",3520.0) INSERT INTO dx VALUES("037-2","9206",6204.4) INSERT INTO dx VALUES("038-1","8911",2850.0) LIST OFF && 主屏幕显示所有记录 主屏幕所显示DX.DBF的记录数据如下: 编号 年月 费用 016-1 8911 2763.5 016-1 9112 3520.0 037-2 9206 6204.4 038-1 8911 2850.0 ALTER TABLE dx ADD 摘要 m(4) ALTER TABLE dx DROP 摘要