全国计算机二级Visual FoxPro 数据库程序设计
——知识点整理资料 文件扩展名及备注文件扩展名 文件 扩展名 备注扩展名 文件 扩展名 备注扩展名 项目 .pjx .pjt 数据库存 .dbc .dbt 表 .dbf .fpt 表单 .scx .sct 程序 .prg 报表 .frx 单索引 idx 结构化复合索引 .cdx 菜单定义格式 .mnx 菜单程序 .mpr 查询 .qpr 视图 .vcx 第一章 数据库基础知识
1、数据库管理系统DBMS;数据库应用系统DBAS;数据库系统DBS;数据DB数据库管理员DBA;DBS包括DBMS和DB 2、实体间的联系:一对一,一对多,多对多
3、数据库中的数据模型:网状模型、层次模型、关系模型 4、关系:一个关系就是一张二维表,每个关系有一个关系名 5、元组:二维表中的行称作元组 6、属性:二维表中的列称作属性 7、域:属性的取值范围
8、关系:表 关系名:表名 属性:字段 元组:记录
行:记录,元组 列:字段,属性 9、传统的集合运算:并、差、交
10、 专门的关系运算:选择(水平方向) for, while, where 投影(垂直方向) fields ,select 联接(一对一,一对多,多对多) 11、定义数组:dimension/declare 数组名(3,4)
VF基础知识
1、创建项目:①通过菜单创建
②命令:Create Project 项目名
2、打开项目管理器:①通过“文件”->“打开”菜单项 ②命令:Modify Project 项目名
3、各类文件选项卡:①“全部”选项卡(以下五项的全部内容)
②“数据”选项卡(数据库、自由表、查询、视图) ③“文档”选项卡(表单、报表、标签) ④“类”选项卡 ⑤“代码”选项卡 ⑥“其他”选项卡
第二章 数据与数据运算
1、字段数据类型(11种) 字符型 C 双精度型 B 数值型 N 整型 I(4) 逻辑型 L(1) 货币型 Y(8) 日期型 D(8) 备注型 M(4) 时间型 T(8) 通用型 G(4) 浮点(动)型 F *N包括Y、F、B、I 2、变量:变量值能够随时改变的。变量名以字母、汉字和下划线开头,后接字母、数字、汉字和下划线构成
3、变量的分类:字段变量和内存变量(简单内存变量和数组) 当内存变量与字段变量同名时,通过M.和M->访问内存变量 4、子串包含测试:$ 5、字符串精确比较
“==”两个字符完全相同.T. “=”set exact on | off 6、常用的函数
数值函数:1.ABS()函数
2.SIGN()函数 3.SQRT()函数 4.PI()函数 5.INT()函数 6.CELING()函数 7.FLOOR()函数 8.ROUND()函数 9.MOD()函数 10.MAX()函数 11.MIN()函数
字符函数:1.LEN()函数
2.LOWER()函数 3.UPPER()函数 4.SPACE()函数 5.TRIM()函数 6.LTRIM()函数 7.ALLTRIM()函数 8.LEFT()函数 9.RIGHT()函数 10.SUBSTR()函数 11.OCCURS()函数 12.AT()函数 13.STUFF()函数 14.CHRTRAN()函数
15.Like(*>,<>)
日期时间函数:1.DATE()函数
2.TIME()函数
3.DATETIME()函数 4.YEAR()函数 5.MONTH()函数 6.DAY()函数 7.HOUR()函数 8.MINUTE()函数 9.SEC()函数
数据类型转换函数:1.STR()函数
2.VAL()函数 3.CTOD()函数 4.DTOC()函数 5.宏替换函数
测试函数:1.BETWEEN()函数
2.ISNULL()函数 3.EMPTY()函数 4.VARTYPE()函数 5.EOF()函数 6.BOF()函数 7.RECNO()函数 8.RECCOUNT()函数 9.DELETED()函数 10.IIF()函数
程序设计基础
1、概念:是命令的集合,分行存储在磁盘上,按照人为的顺序依次输出的过程。 2、建立、修改程序文件(.prg):modify command 程序名 3、远行:do 程序文件名 4、基本的输入语句:(以求圆的面积为例) ①input“请输入圆的半径” to r
可接受的数据类型:C、N、L、D、T;从键盘上接受输入,但不能不输入任何内容;输入字符常量必须加定界符 ②accept “请输入圆的半径” to r
只能接受字符串,输入是不需要加定界符 ③wait “请等候„” window wait <提示信息> to <内存变量> 5、程序的结构:顺序结构
选择结构(分支、判断) 循环结构(条件、步长) 6、程序的控制语、注释语
①exit 终止,跳出,至enddo后面 ②loop 中止,跳至do while判断条件 ③quit 退出系统 ④ * 换行注释
⑤ && 同行注释 注释语句
【格式1】 NOTE <注释内容> 【格式2】 * <注释内容> 【格式3】 && <注释内容>
7、程序的模块,形参、实参
形式参数定义:PARAMETERS <形参>
参数传递:格式一:do 文件名或过程名 with 实参
格式二:文件名或过程名 (实参)
8、变量的作用域:
①全局变量(又称公共变量)(public):可在任何模块和程序中使用,而且在VF运行环境内都一直可见(命令窗口输入的也是)
②私有变量(private):在建立该变量的模块及其下属各层模块中使用,在其上层模块中不可用;在程序中直接使用没有特别声明的变量都是私有变量;用private声明上层模块中已经存在的变量,使得上层模块定义的变量在当前暂时无效
③局部变量(local):只能在建立它的模块中使用,不能在上层或下层模块中使用
第三章 数据库及其操作
1、创建数据库:①在项目管理器中建立
②在菜单中建立
③命令:Create database 数据库名
2、打开数据库:Open Database 数据库名 3、删除数据库:Delete Database 数据库名 4、修改数据库:Modify Database 数据库名 5、关闭数据库:Close Database 6、打开表设计器:Modify Structure
7、显示全部表记录:List(显示完全部记录) 8、显示当前表记录:Display(分页显示记录) 9、记录的绝对定位:Go n 10、浏览、修改表:Browse
11、编辑、修改表:Edit/Change
12、批量修改:Replace all 字段 with 字段表达式 13、逻辑删除:Delete(只在记录前加*,不删除) 14、恢复逻辑删除:Recall
15、物理删除:①Pack:只删除带*的记录
②Zap:物理删除表中全部记录
16、关闭表:Use
17、打开表:Use 表名
18、复制表记录:Use 表名;Copy to 新表名
19、复制表结构:Use 表名;Copy Structure to 新表名 20、追加表记录:①将另一表中的记录添加到该表中:
Use 要追加记录的表名
Append from 有记录的表名
②在尾部追加记录:Append
③在尾部增加一条空记录:Append blank
21、插入表记录:①在当前记录的后面插入一条记录:insert after ②在当前记录的后面插入一条空记录:insert blank ③在当前记录的前面插入一条记录: insert before 22、显示所有含有条件的记录:list for 23、显示满足条件的记录:list while 24、显示字段:list fields 25、指针记录的定位:
①bof() 为.T.时指向文件头 ②go top 定位在第一条记录
③go bottom 定位在最后一条记录 ④eof() 为.T.时指向文件尾
⑤skip 向下移动一个指针,指向下一条记录(不含当前记录) ⑥all 全部记录
⑦locate for 满足条件的第一条记录
⑧continue 继续查找满足条件的下一条记录
用locate命令定位:
Locate for 条件 查找满足条件的第一条记录
Continue 继续查找满足条件的第一条记录
?found 测试是否有返回值,如有.T.,如无.F. Display 显示
26、记录的范围:①next n 向下n条记录
②rest 从指针指向位置开始的所有记录
27、在数据库关闭/删除的情况下建立的表为自由表,自由表字段名最长为10
个字符。
28、在数据库打开/修改的情况下建立的表为数据库表,数据库表字段名最长为
128个字符,可以为数据库表建立主索引、字段有效性和参照完整性,这也是自 由表没有的。
29、创建数据库表:open database 数据库名;creat 表名
30、创建自由表:确定当前没有打开数据库,使用命令:creat 表名
31、将自由表添加到数据库中:open database 数据库名;add table 表名 32、将数据库表移出数据库:open database 数据库名;remove table 表名 ****************************************************************** 小结:
1、用use 打开表时,记录号位于第一条记录 2、执行带all的命令,记录指针指向eof()=.T.
3、当为.T.时,bof的记录号总是为1,eof的记录号是记录数+1 4、空表的总记录是0,bof的记录号是1,eof的记录号是1
****************************************************************** 33、排序:①建立排序:sort on 字段名 /a/d/c to 新表名
②/a(asc):升序;/d(desc):降序;/c:不区分字母大小写
34、索引:①索引的种类:主索引,候选索引,唯一索引,普通索引
②建立索引:index on 关键字 tag 索引文件名 ③打开索引:set index to 索引文件名 ④关闭索引:set index to ⑤查找索引:find / seek
⑥删除索引:delete tag all 索引标识 ⑦主控索引:set order to 索引名
⑧建立永久链接的条件:父表必须建立主索引,子表必须建立普通索
引
⑨建立临时链接:窗口->数据工作区
命令:set relation to 父表字段名 into 子表名
(父动子动)
举例:open database 成绩管理
Use student in 1 order 学号 Use score in 2 order 学号
Set relation to 学号 into 2/score
Select 1 / go 3 / display / select 2 / display
35、互换表中记录:先打开表 go 1;scatter to aa(数组名);go 3 ;scatter to bb(数组名); go 1;gather from bb;go 3;gather from bb
*********************************************************************
小结:排序与索引的区别
1、排序要执行两次,按关键字和记录号,要打开表;而索引只执行一次,按关键字,不需要打开表;
2、排序生成一个新表,索引是针对原表生成一个指针文件
3、升降序的表示与书写方式不同:排序/a升序/d降序/c不区分大小写,索引ascending和descending。
4、排序与索引的to的含义不同,排序的to 表示到一个新表,索引的to表示建立单索引文件。
5、表达式的方式不同,排序用(,)逗号,索引用(+加号) 自由表与数据库表的不同:
1、自由表有三个索引:候选索引、唯一索引、普通索引;
2、数据库表有四个索引:主索引、候选索引、唯一索引、普通索引; 3、一个数据库表只能有一个主索引,可以有多个候选索引、唯一索引、普通索引;
4、一个表只属于一个数据库;
5、主索引和候选索引表示表记录的唯一性;
6、数据库表的字段允许长度是0~128个字符,而自由表只允许10个字符; 7、数据库表可以设置字段的有效性规则和参照完整性,而自由表不能; 8、可以将自由表添加到数据库中,也可将数据库表从数据库中移去成为自由表。
********************************************************************* 36、数据的完整性:①实体完整性:主索引和候选索引,保证记录的唯一性
②域完整性:表示字段的有效性和取值范围 ③参照完整性:描述表与表之间的关系
参照完整性的规则:更新规则(级联、限制、忽略) 删除规则(级联、限制、忽略) 插入规则(限制、忽略)
参照完整性是数据库文件的产物,要有联接,先打开数据,在父表建立主索引,子表建立普通索引,建立连线后先清理数据库,再编辑参照完整性。 37、工作区:①工作区的选择:select <工作区号>|<别名>
②范围:1~32767默认0号工作区,也是最小工作区 ③select 0 表示选定当前还未使用的编号最小工作区
第四章 SQL语言
1、SQL:structure query language
2、定义:是结构化查询语言,是关系数据库的标准语言,是一种高度非过程化的语言,是数据库后台的操作语言,具有非常强大的查询功能,查询是它的核心。 3、基本构成:select 查询什么字段 / from 数据源 / where 查询条件 4、三大功能:
数据查询
①格式:select 字段名/* from 表1 inner join 表2 on 表1主关键字=表2主关键字 where 筛选条件[group by 分组 having 分组条件]order by 排序
②函数
Max() 最大值 Min() Avg() Count() Sum() 最小值 平均值 计数 求和 ③值域查询:between„and„ ④空值查询:is null / is not null
⑤模糊查询:like(like后所指定的字段值一定是个字符型数据;
通配符%表示0个或多个字符,”_”只表示一个字符)
⑥使用量词和谓词的查询:any/some/all
(some和any是同义词)
[not] exists
*some、any只有子查询中有一行能使结果为真,则结果为真 *all 子查询中所有记录都使结果为真,则结果为真
*[not] exists 用来检查是否有结果返回,即存在/不存在元组 ⑦集合的并运算:union 字段相同,值域相同 ⑧虚字段:as 新字段名
操作功能:
①插入:insert into 表名(字段名)values(字段值) ②更新:update 表名 set 字段名=表达式where 条件式 ③删除:delete from 表名 where 条件
定义功能:
①表的定义:create table|dbf (字段名 类型(宽度) )
②删除表:drop table 表文件名 删除视图:drop view 视图文件名 ③表结构的修改:
⑴添加字段:alter table 表名 add 字段名 类型(宽度) ⑵修改字段:alter table 表名 alter 字段名 新类型(宽度) ⑶删除字段:alter table 表名drop字段名
⑷重新命名字段:alter table 表名 rename column 原字段名 to 新字段名 ⑸建立有效性规则:alter table 表名alter字段名 set check 字段条件 建立默认值 :alter table 表名alter字段名 set default 条件
⑹删除默认值/有效性规则:alter table 表名 alter 字段名[drop
default/drop check]
⑺建立候选索引:alter table 表名 add unique 字段 tag 索引名
建立主索引:alter table 表名 add primary key字段 tag 索引名 建立普通索引:alter table 表名 add foreign key字段 tag 索引名 ⑻删除候选索引:alter table 表名drop unique tag 索引名
删除主索引:alter table 表名 drop primary key字段 tag 索引名 删除普通索引:alter table 表名 drop foreign key字段 tag 索引名
5、SQL查询的六种去向:
⑴将查询结果存放到数组中——into array 数组名
⑵将查询结果存放在临时文件中——into cursor 临时表文件名 ⑶将查询结果存放到永久表中——into dbf/table 自由表文件名 ⑷将查询结果存放到文本文件中——to file 文本文件名 ⑸将查询结果直接输出到打印机——to printer ⑹将查询结果显示在屏幕上——to screen
第五章 查询与视图
1、定义:查询是预先定义好的一个select语句 2、数据源:数据库表、自由表或视图 3、建立查询的方法①项目管理器
②文件新建
③命令:create query
4、查询设计器中各选项卡与select语句的对应关系: 选项卡:字段、联接、筛选、排序依据、分组依据、杂项 选择了创建查询的表或视图——from短语 ①字段选项卡——select短语 ②联接选项卡——join on短语 ③筛选选项卡——where短语
④排序依据选项卡——order by短语
⑤分组依据选项卡——group by短语和having短语
⑥杂项选项卡——可以指定是否要重复记录(对应于distinct短语)
还可指定列在前面的记录(对应于top短语)
5、查询去向:浏览、临时表、表、图形、屏幕、报表、标签 6、运行查询:do 查询文件名.qpr
7、查询保存在查询文件中,查询文件是一个文本文件。 8、查询文件(.qpr) 视图文件(.vue)
9、定义:视图是一个定制的虚拟表,依赖于数据库,是从一个或多个数据库中导出的表;在视图中只存放视图的定义,不存放视图的内容;视图分为本地视图和远程视图
10、数据源:数据库表、自由表或其他视图等 11、建立视图命令:create view
12、根据表的查询定义视图:create view 视图文件名 as