VFP,从入门到放弃

VFP


表操作

modify window screen font "宋体",14 //设置字体大小

窗口左下角可以看到当前打开的表

  • 表创建复制

creat 表名 // 创建表

creat table|dbf 学生(姓名 c(6),性别 c(4),年龄 n(4),成绩 n(6,2)) //通过命令行创建表,table和dbf两个选一个,一般用table c(6)表示意思为字符型,数据宽度为6,n(6,2)表示整型数据,宽度为6,有两位小数点

set default to D:\VFP\... //设置默认文件存储位置

use 表名 //通过终端打开一个表

use //关闭表

list //在窗口显示表

list structure //显示表的结构(列表显示,当前屏幕显示完之后接着显示下一屏幕内容,滚屏显示)

display structure //也是显示表的结构,当前屏幕显示完毕之后会暂停,当用户按任意键之后,才会接着继续显示(右上角有提示)

modify structure //修改当前表的结构

  • 修改表的结构

打开表设计器修改,或者通过菜单栏,或者通过菜单栏打开表设计器;

或者通过纯命令修改alter table 学生 add 爱好 c(4)// 给学生表添加一行爱好新字段

alter table 学生 alter 爱好 c(10) //将字段长度修改为10

alter table 学生 rename 爱好 to 特长 //将爱好字段改名为特长

alter table 学生 drop 特长 //删除特长字段

  • 表的复制

格式: copy files 学生.* to 学生副本.* //使用该命令前,学生表必须处于关闭状态

格式: copy to 学生副本 范围 //使用时先打开要复制的表,可以指定范围,一般不指定则默认为ALL;NEXT N 表示从当前起,到第N条记录被复制;RECORD N 表示第N条记录;RESET 表示从当前位置到末尾最后一条记录;

匹配条件时for <条件> while <条件>//for是在指定范围内判断是否成立,while则为指定范围内若遇到条件不满足则停止操作,两者同时存在时,while优先;

type <文件名> //只能显示文本文件内容

copy to 学生.txt for 性别='男' type sdf

copy structure to 学生副本 //只复制结构不复制数据

  • 表的基本操作

  • 增、删、改、查

    记录的显示:

    方法一, 先打开表,然后菜单栏里点击 显示 方法二, 打开表,然后输入命令 browse 显示所有记录,若输入browse fields 学号,性别 则只显示学号和性别

    list|display //前者默认范围ALL,后者默认范围当前记录

    若使用OFF子句,则不显示记录号

    to file <文件名> list for 学号='234' to file 1.txt结果输出到文件名指定的文件,扩展名默认为txt

    追加记录:

    append 在弹出的对话框中输入内容

    append 不会弹出对话框,追加一行空白内容,edit对刚刚追加的空白行进行编辑

    追加的结果在菜单栏点击打开 显示, 选择->浏览 进行查看

    append from <文件名>从文件名指定的表文件中将符合条件的记录追加到当前表的尾部append from 学生 for 性别='男' //将学生表中性别为男的记录追加到当前表中

    删除表的记录:

    逻辑删除:只是将记录加了删除标记,去掉删除标记则恢复

    物理删除:将具有删除标记的记录真正从表中删除

    具体方法如下:输入browse 吧光标移动到最左边小方框那里,点击会变黑加上删除标记,在该界面的菜单栏里点击 “表” 选项,然后根据字面意思操作;

    delete for 性别='男' 删除所有性别等于男的记录 ;

    recall for 性别='男' 恢复上面内容;

    PACK彻底删除标记记录;

    zap 将这张表中所有记录删除,执行时会弹出对话框,点确定就好,删库跑路;

    修改记录:

    打开表,菜单栏里找到 显示 -> 点开下拉列表第一个 然后 ->再点开编辑 ,就可以改了;

    用命令修改,在指定范围内将符合条件的记录中的相关字段用相关表达式来替换,省略范围则默认为NEXT 1;

    replace all 基本工资 with 基本工资+10 for 基本工资<3000 /*给基本工资低于3000的老哥加十块*/

    插入记录:

    菜单栏的追加方式

    命令行输入 insert

    指针移动:

    万能的菜单栏里面 点击 “表” 根据字面意思操作;

    go top|bottom|记录号

  • 内存变量和表之间的数据传递

  • 记录的筛选与排序

    记录的筛选:

    设置筛选记录条件命令

    还是菜单栏 -> "表" 点击属性选项,数据过滤器

    set filter to <条件>

    查找定位命令:

    locate for <条件> 查找符合条件的第一个记录的位置,指针指向改记录,若无符合,则指向末尾,若有多条符合,则可用continue继续查找下一个符合条件记录

    排序:

    根据条件,由已存在的表的内容,产生一个新的排序表,而原表不变;

    sort to <表名> on <字段名1> [/A|/D][/C] 把当前表按要求排序生成新的表,/a表示降序,/d表示升序,/c表示不区分大小写

    sort to 学生2 on 成绩 /a,学号 若成绩相同,则按照学号排序

  • 索引文件的建立

    索引文件也是用来进行排序,会建立一个或者多个字段的逻辑顺序文件,不生成表文件;建立索引的字段称为关键字;索引文件的内容只是关键字和记录号,占用空间相较于单纯排序(sort)而言小得多,存储的是表的索引与表的映射关系;

    可以把索引理解为书的目录,目的是为了快速找到满足某一条件的一条记录

    单索引文件:

    只存储一个索引的索引文件,扩展名为.IDX (标准和压缩)

    复合索引文件:

    能存储多个索引的索引文件,扩展名为.CDX(和表名同名为结构化复合索引文件;不同名为非结构化复合索引文件)

    索引的方式:

    1. 主索引:关键字不可重复(只能在数据库中创建); 2.候选索引:关键字不可重复; 3.唯一索引:关键字可重复,与旧版兼容; 4.普通索引:关键字可重复;

    建立索引:

    1. 界面建立

    打开一张表,然后打开表设计器(对表的操作一般情况下都在这里进行);表设计器对话框中,找到索引标签,然后字面意思操作;(表达式可以是单个字段,也可以是多个字段,生成索引的依据)

    2.命令建立

    index on <索引关键字> to <单索引文件名> | tga <索引标识符名> [of <复合索引名>]

    index on 学号 to x1 unique 建立学号唯一单索引文件

    index on 性别+str(成绩) to x2 先按性别排序,再按照成绩生成索引

    index on 成绩 tag s1 descending 按降序建立结构化复合索引文件

    3.索引的使用

    打开索引文件 set index to <索引文件表>

    use <表名> index <索引文件名>

    4.索引中的查询命令

    find <字符串>|<数值> 查找相匹配的第一条记录,找不到则指向末尾,用found()函数判断找到没?found()找到就返回真

    seek <表达式> 用法同上,可用display显示,默认显示当前记录 skip 可继续查找下一条记录

  • 统计与计数

    1.计数命令

    count <范围> for <条件> | while <条件> to <内存变量> 统计指出范围内满足条件的记录的个数存到内存变量中,缺省范围则默认为统计表的所有记录

    1. 求和命令

    sun <数值表达式> <范围> for |while to <内存变量> | array <数组名> sum 语文,数学,英语 to x1,x2,x3

    3.求平均值

    average <数值表达式> <范围> for |while to <内存变量> | array <数组名> 用法同上

    4.计算

    calculate <数值表达式> <范围> for |while to <内存变量> | array <数组名> calculate sum(数学),sum(语文) to x1,x2 最小最大值也可以作为参数;

    5.分类汇总

    total to <文件名> on <关键字> [fields <数值型字段表>] [范围] [条件] total to 要求的学生表 on 性别 all filelds 成绩(这里只能是数值型) 最终结果是新表里有两条记录,一条男生,一条女生,成绩为各自总分

  • 工作区和多表使用

    工作区范围1~32767,指定0时,选择一个未使用的最小编号工作区作为当前工作区号,1~10可用A~J表示;

    select()函数可以返回当前工作区号;

    1.工作区

    use <表名> in <工作区号> 指定表所在的工作区号

    select <工作区号> 由工作区号指定一个当前工作区

    close all 关闭所有工作区打开的表,选择工作区1为当前工作区

    <工作区号>.字段名 工作区字段互访

    2.多表使用

    表的关联,子表随父表要求指针移动

    菜单栏里 “窗口” 字面意思下一步下一步;


数据库的基本操作

数据库是表的集合,是对数据库中的表及相关对象实行统一管理的工作环境;

  • 数据库的建立和操作

    1. 数据库的建立、打开、关闭

      界面建立 左上角,新建,根据字面意思下一步下一步

      命令建立 create database <数据库名> 也可以不写名字,此时会弹出对话框,

    2. 数据的打开

      open database <数据库名字> 缺省名字时会弹出对话框进行选择需要打开的库 exclusive加上这个关键字意思是以独占方式打开;shared以共享方式打开;noupdate以只读方式打开;validate检验数据库的引用对象是否有效

    3. 关闭数据库

      close database [all] 关闭当前数据库,及所有表;若有all子句,关闭所有打开的数据库和表

  • 数据库的修改与删除

    1. 数据库的修改

      modify database <数据库名>

    2. 删除数据库

      delete database <数据库名> 用法同上,数据库必须处于关闭状态

  • 数据库中的表

    数据库中的表有两个来源,数据库中建立表,将自由表添加到数据库(不可以将一个数据库中的表添加到另一个库);窗口操作就根据字面意思下一步下一步;

    1. 数据库中建立表 (参考前文表操作)

    2. 将自由表添加到数据库

      add table <表名> 缺省表名时将弹出一个选择对话框

    3. 数据库中表的移出与删除

      remove table <表名> 同上

  • 数据库表的设置

    数据字典是数据库管理表的途径,包含数据库所有信息的一张表。定义了表属性,字段,记录的规则,表间关系,参照完整性规则;


查询与视图

  1. 查询设计器,对要求和条件设置生成一个qbr文件
  2. 视图设计器同上设置,生成视图,视图中数据更新可以使源表更新,(要在数据库中执行)
  3. SQL是关系数据库的标准语言。
  • SQL语句

  • select查询语句

  1. 基本语法

    select <行列限制表达式> [into dbf|table <新表名>] from <源文件> [where <条件>] 从源文件中查询符合条件的,按照行列式限制表达式的形式显示,若有后面的子句,则结果存入新表

    行列式限制表达式格式 [all | distinct] all表示输出结果有重复记录;distinct表示输出结果无重复记录;

    top <数值表达式> 符合条件的记录取前多少个;percent <> 取前百分之多少

    字段名

    group by <表达式> 对查询结果进行分组

    order by <关键字表达式> 对查询结果进行排序,ASC升序,DESC降序

  • 操作功能(增、删、改、查)

    插入:

    insert into <表名> [字段] [表达式]

    更新:

    update <表名> set 字段名=<表达式> where

    删除:

    delete from <表名> where <条件>

你可能感兴趣的:(VFP,从入门到放弃)