Download presentation
Presentation is loading. Please wait.
1
第4章 表与数据库的基本操作
2
内容 介绍数据库、数据表的基本概念 数据库和数据表的建立 编辑表中的数据、记录修改与删除 表的索引等有关操作。
3
概念 数据库(.dbc) 表(.dbf) 就是一个关于某一特定主题或目标的信息集合。 基本单位,是数据库的基础
可以说表是关系数据库系统中的基本结构。 要存数据,为所需记录的信息创建一个表。 由行和列组成的,一行为一个记录,一列为一个字段。
4
通常所说的表格 一行为一个记录(Record) 一列为一个字段(Field)
5
二维表简称表(Table)特征: (1)若干记录 (2)若干个字段,每记录具有相同结构的字段 (3)不同类型的字段来存储不同类型的数据
(4)字段的顺序与存储的数据无关 (5)记录在的顺序与存储的数据无关。
6
表的两要素: 表结构(列) 相应记录(行)
7
表结构
8
表的字段 表是由记录组成 记录又由字段组成 字段的属性(表结构) 字段名 字段类型 字段宽度 小数位数
9
1.字段名 约定: 只能使用字母、汉字、下划线和数字 见名知义
> < = + / \ | [ ] : ? 空格等特殊字符不能使用。 字段名必须以字母或汉字开头,并且长度不能超过128个字符 如:下列哪些合法 不以数字开头 × 3mn 姓名1 mn3 不能含有空格; × m n ×编 号 不能含有各种运算符; × S-N S_N × AI*X
10
2.字段类型 不同类型的字段来存储不同类型的数据 字符型 货币型 数值型 浮点型 日期型 日期时间型 双精度 整型 逻辑型 备注型 通用型
11
(1)字符型(Character) 通常用于存储键盘输入的文本数据。 字符型数据必用双引号或单引号或[]来定界
汉字、字母、数字、空格、 符号及标点符号 字符型数据必用双引号或单引号或[]来定界 字符型字段的宽度最大为254 ***** 如: “how” ‘1234’ [中国人]
12
(2)货币型(Currency) 保存货币数值时,用货币类型而不是数值类型字段 最多保留4位小数位数,多则四舍五入至4位
内存变量用$数值来赋初值 如:x=$999 ? Type(‘x’)
13
(3)数值型(Numeric) (4)浮点型(Float) 数值型字段用来存储数值数据。 它可以包含数字0~9,也可以带正、负号或小数点
如: (4)浮点型(Float) 浮点型字段在功能上等价于数值型字段。
14
(5)日期型(Date) (6)日期时间型(DateTime) (7)双精度型(Double) 用于存储包含有年、月、日的日期数据
长度为8字节 (6)日期时间型(DateTime) 用于存储包含有年、月、日、时、分、秒的日期和时间数据。 (7)双精度型(Double) 双精度型用于存储精度要求较高、位数固定的数值,或真正的浮点数值。
15
(8)备注型(Memo) 长度固定为4字节 用于存储不定长度的文本数据 当文本数据长度可能大于254,无法使用字符型存储时,使用备注类型字段
所有备注型字段的实际内容存储在和表名相同,扩展名为.FPT的备注文件中
16
(9)通用型(General) 通用型用于存储OLE对象数据 字段宽度固定为4个字节,用于存储一个4个字节的指针,指向该字段的实际内容
其内容存储在扩展名为.FPT的文件中。 OLE对象包括电子表格、字处理文档、图像或其他多媒体对象等 OLE对象可以用链接方式存储在表中。 存储数据的大小,取决于相的OLE服务程序,和磁盘空间大小的限制。
17
(10)整型(Integer) (11)逻辑型(Logical) 整型用于存储整数数据 字段宽度固定为4个字节。
取值范围从 到 。 (11)逻辑型(Logical) .T.或.Y. 为逻辑真 .F.或.N. 为逻辑假 长度固定为1字节
18
(12)字符型(二进制)((Character(Binary))
字符型(二进制)用于存储不需要系统代码页维护的字符数据 其他字段特性同字符型字段 密码(各国) (13)备注型(二进制)((Memo(Binary)) 备注型(二进制)用于存储不需要系统代码页维护的备注字段数据。其他字段特性同备注型字段。
19
数据类型(小结) 数据类型(Type)13种 D-日期型 I- 整 型 L-逻辑型 M-备注型 G-通用型 Y货币型
C-字符型 N-数值形 F-浮点型 D-日期型 I- 整 型 L-逻辑型 M-备注型 G-通用型 Y货币型
20
3.字段宽度 规定宽度 字符型字段 254 货币型字段 8 数值型字段 20 日期型字段 8 备注型 4 逻辑型 1 日期时间型 8
字符型字段 货币型字段 数值型字段 日期型字段 备注型 逻辑型 日期时间型 通用型字段 用于存储一个4个字节的指针,指向该字段的实际内容。整型字段宽度固定为4个字节。
21
宽度(Width) (小结) (以下类型宽度固定) 货币型、日期型、日期时间型、双精度型:8字节
整型、备注型、备注型(二进制)、通用型:4字节 逻辑型:1字节 数值型:20字节
22
4.小数位数 有小数的字段: 字段宽度 = 整数部分宽度 + 小数点1位 +小数位宽度 如小数位数不为0,则小数位数至少要比整个字段宽度小2
数值型 浮点型 双精度型 字段宽度 = 整数部分宽度 + 小数点1位 +小数位宽度 如小数位数不为0,则小数位数至少要比整个字段宽度小2
23
小数位数 一个N形变量宽为6,小数位数为3,则这个变量最大可表示的数为多少? _ _ . _ _ _ 99.999
24
5.空值(NULL) 空值是用来标识一个字段“没有值”的标志 空值表示没有任何值或没有确定值 空值不等同于数值0、空字符串或逻辑“假”
函数EMPTY() 测试空值 如果允许字段接受NULL值,则应选中该栏所在框 表的关键字段不允许为NULL值
25
字段类型 中文名称 宽度(字节) 说明 Character 字符型 254 字母、汉字、数字、文本、符号
字段类型 中文名称 宽度(字节) 说明 Character 字符型 字母、汉字、数字、文本、符号 Currency 货币型 货币单位 Numeric 数值型 整数或小数 Float 浮点型 同数值型 Date 日期型 年、月、日 DateTime 日期时间型 年、月、日、时、分、秒 Double 双精度型 双精度数值 Integer 整型 整数 Logical 逻辑型 真或假 Memo 备注型 不定长的字母、文本、数字 General 通用型 OLE图像、多媒体对象
26
小结 数据库是表和表间关系的集合 表是由表结构和记录组成 表结构是由各不同字段构成 每一字段又具有字段名、数据类型、数据宽度、小数位数等属性
表中的每一个记录又具有相同的字段
27
建表的步骤: 1)设计表结构 2)建表的结构 creat 表名 3)保存表文件 ctrl+w 4)输入记录 append browse
28
表结构的创建 1、表设计器 (1)打开“表设计器” (2)在“表设计器”中创建表结构 项目管理器/自由表/新建/新表/保存 注:
A、也可从菜单或工具栏中直接新建表 B、与在“项目管理器”中新建表不同的是: 这样新建的表将不包含在项目中 (2)在“表设计器”中创建表结构 表设计器/字段/输入/确定
29
数据表的建立 如: 一张名为教师档案文件zgda.dbf 编号 姓名 性别 年龄 职称 工作时间 婚否 简历
编号 姓名 性别 年龄 职称 工作时间 婚否 简历 1 张黎黎 女 助教 05/24/ T memo 2 李 艳 女 助教 09/14/ T memo 3 刘 强 男 讲师 12/24/ T memo
30
职工档案表结构(zgda.dbf) 字段名 类型 宽度 小数位数 索引 NULL 编号 字符型 4 无 升序 否
编号 字符型 无 升序 否 姓名 字符型 无 无 否 性别 字符型 无 无 否 年龄 数值型 无 无 否 职称 字符型 无 无 可 工时 日期型 无 无 否 婚否 逻辑型 无 无 否 简历 备注型 无 无 可 照片 通用型 无 无 可
31
表的打开 VFP在使用一个表前必须把表打开 打开命令 VFP在结束使用一个表时,必须把表关闭 关闭命令 USE <文件名>
CLOSE ALL CLOSE DATABASE/TABLE
32
修改表结构 1、表设计器 项目管理器/选定表/修改 2、命令 USE books MODIFY STRUCTURE
33
3、菜单/按钮方式 法1: “表”—“属性” “工作区” “工作区属性”—“修改” 法2: “窗口” —“数据工作期”
(“属性”— “修改”)
34
记录的处理 记录的追加 1、立即输入记录(浏览/编辑/追加方式) 2、浏览窗口下追加(USE/BROWSE)(表/追加新记录)
3、使用INSERT - SQL命令追加记录 insert into zgda(姓名,性别,年龄) values ('洪七','男',70) 4、从其他表中追加记录 命令APPEND APPEND FROM APPEND [ BLANK ]
35
记录的浏览 1、浏览窗口 2、命令 BROWSE 进入 : BROWSE 命令 项目管理器/选定某个表/单击“浏览”按钮
LIST / DISPLAY BROWSE FIELDS 书号,书名,作者 for ...
36
如何定制浏览窗口? 重新安排列的位置: 拖动 改变列的宽度: 显示或隐藏表格线: 显示/网格线 分为两个窗格: 左下角拖动
37
记录的定位 1、记录指针标志 记录号(输入顺序) 记录的开始标志 BOF ( ) 文件头 记录指针标志 ( 当前记录 ) RECNO ( )
记录的结束标志 EOF ( ) 2、记录的定位方式 绝对定位 go 相对定位 skip 条件定位locate for(表达式) 记录结束标志 记录开始标志 第n条记录 文件头 Go top go bottom Skip Go nRecordNumber
38
几个概念 记录指针 当前记录 记录定位 记录号RECNO()
39
例1 use books f f 1 skip -1 t f 1 skip -1 Error f 1 go bott f f 848
假设ZGDA表有848条记录,先后执行以下命令 bof() eof() recno() use books f f skip t f skip Error f go bott f f skip f t skip Error
40
例2 RECN() Use books go skip skip locate for …
41
3、记录定位的实现 界面方式 (“表”—“转到记录”) 命令方式 绝对定位:GO( GOTO ) 记录号:绝对定位 goto
定位:条件定位 locate for 作用范围:all,next,record,rest,for 找到/未找到 命令方式 绝对定位:GO( GOTO ) GO( GOTO ) TOP/BOTTOM 相对定位:SKIP(与索引有关)skip=skip 1 快速移动:SEEK 及 FIND
42
记录的修改 1、在浏览窗口中修改 EDIT / CHANGE / BROWSE 项目管理器/浏览 例:修改books表中第5条记录
use books edit record 5
43
记录的修改 2、批量记录的修改 “表”—“替换字段”—字段条件 (1)界面方式 (2)命令方式
UPDATE-SQL命令(表不必事先打开,以下同) REPLACE 命令 USE books copy to temp(复制到临时表) use temp REPLACE 单价 WITH 5.00 FOR 单价<5
44
记录的删除 目的: 节省时空 删除步骤: 逻辑删除 物理删除
45
逻辑删除 标记要删除的记录(逻辑删除) 给要删除的记录加标记(*号) 浏览窗口: 单击小方框 “表” “删除记录”
命令DELETE FROM 表名[WHERE 过滤条件表达式] 例: 删除教材表中库存在数量为0的记录 delete from books where 库存数量=0
46
物理删除 彻底删除(物理删除) “表” 命令PACK(独占) 命令ZAP=delete all +pack(独占) “彻底删除”
删除有删除标记的记录 命令ZAP=delete all +pack(独占)
47
恢复记录的删除 恢复带删除标记的记录 法1: 小方框 黑-->白 法2:“表” “恢复记录”
小方框 黑-->白 法2:“表” “恢复记录” 法3:RECALL [范围][FOR 条件表达式1][WHERE 条件表达式2] 例:recall recall all recall all for 库存数量=0(这里的all 可省) 说明:缺省范围(当前记录,不是全部记录)
48
筛选记录 界面 “表”—“属性”—“数据过滤器” 命令 SET FILTER TO <条件表达式> SET FILTER TO
FOR子句:临时性记录筛选 例:USE ZGDA SET FILT TO 出版社=‘石油大学’ 注意: 是隐藏而非删除 与FOR子句不同
49
筛选字段 表/属性/字段筛选 SET FIELDS TO <字段1> [, <字段2>]
50
多表操作 工作区: 用以标识一张打开的表的内存区域 一个工作区在某一时刻只能打开一张表 一张表可以在多个工作区同时打开
(use 表 again) 共有255个工作区 默认工作区号为1区 USE books(默认为1号) LIST USE books1(books自动关闭)
51
工作区的标识*** 用数字来标识各个工作区(1—255) 用相应工作区中表名来标识工作区 1-10个工作区常用英文字母A-J
(此时表没有指定别名,如指定别名,用别名来标识工作区) Sele 5 Use zgda Sele 4 Sele zgda 1-10个工作区常用英文字母A-J Sele 10=sele j
52
工作区的转换 命令: 如: Select 工作区号/工作区中表别名/A-J Select 0 表示选择未用的号最小工作区 Sele 1
Use zgda Sele B Selct zgda Select 0 表示选择未用的号最小工作区
53
Select O例子 sele 1 use zgda sele 4 use zggz sele 0 ? select() 返回选择的工作区号
The answer is :2
54
多表操作 可以同时在多个工作区中打开多个没有打开的表 SELE 1 USE books1 LIST SELE 2 USE books2
一张表不可以在多个工作区同时打开
55
多表操作 表的别名指定 当前工作区:正在使用的工作区 ALIAS ( ) 函数 “数据工作期”窗口 别名
USE < 表文件名 > ALIAS < 别名 > 例:USE ZGDA ALIAS OK 当前工作区:正在使用的工作区 ALIAS ( ) 函数 ALIAS():测试当前工作区中表的别名 “数据工作期”窗口 别名
56
操作非当前工作区中的表 把其它的工作区选为当前工作区 Sele 2 在命令中强行指定工作区 GO TOP IN ok
57
关于表的打开和关闭 刚创建的表处于打开状态* 1、表的打开 界面 命令 多次打开同一张表(同时) 文件/打开 窗口/数据工作期/打开
USE ? 命令 USE <表文件名> USE <表文件名> IN 0 多次打开同一张表(同时) USE <表文件名> AGAIN 例:USE books/SELE 0/USE XS AGAIN
58
2、表的关闭 界面 命令 注意:SQL语句能自动打开表,但不会自动关闭表! 窗口/数据工作期/关闭 USE
USE IN <别名/工作区> CLOSE ALL&&数据库、索引、项目管理器等也被关闭 CLOSE DATABASES &&如果当前没有打开的数据库,则把自由表全部关闭 CLOSE TABLES &&关闭表,不关闭库 退出VFP 注意:SQL语句能自动打开表,但不会自动关闭表!
59
表的独占与共享使用 表的共享使用: 表的独占使用: 一张表可以同时被多个用户打开 (RECORD UNLOCKED)
一张表只能被一个用户打开(默认) (EXCLUSIVE)
60
表的独占与共享使用 设置独占与共享打开表的默认状态 强行用独占方式打开表 设置改变,并不改变已经打开的表的状态
工具/选项/数据 SET EXCLUSIVE OFF/ON(共享/独占) 强行用独占方式打开表 “打开”—“独占”复选框 USE < 工作表 > SHARED/EXCLUSIVE 设置改变,并不改变已经打开的表的状态 一张表同时被多次打开时,只以第一次的打开方式为准(窗口/数据工作期)
61
概念 物理顺序: 逻辑顺序: 一般是按照其输入的顺序进行记录的存储顺序 顺序找,速度慢 不便于查找需要的信息 记录的处理顺序 (快速)
可以使用索引来改变记录的顺序即逻辑顺序 根据表中字段的值,建立具有逻辑顺序的索引文件,然后根据索引文件重新排列数据库表中显示的记录。
62
表的索引文件 1、索引: 如同目录 数据库的辅助文件,不能单独使用 可以按一个字段索引,也可以多个 一个表可以创建多个索引
索引存储在索引文件中 索引文件中存储着记录号和索引字段的索引值
63
理解索引 索引可以理解为根据某一字段的值进行逻辑排序的一组指针
按照索引显示记录,VFP按照指针排列的顺序分别读取每一条记录,而这些记录在数据库中的实际存储位置并未改变。
64
按年龄索引后的表文件 物理顺序 逻辑顺序 记录号 年龄大小 3 1 2 2 1 3 姓名 年龄 姓名 年龄 刘 强 38 李 艳 30
姓名 年龄 张黎黎 26 李 艳 30 刘 强 38 DA.DBF 姓名 年龄 刘 强 38 李 艳 30 张黎黎 26 DA.DBF 记录号 年龄大小 NL.CDX
65
关键字与索引标识 (1)索引关键字(Index Key) 建立索引的依据(索引表达式) 字段/字段表达式
VFP使用索引关键字来显示和访问表中的记录 (2)索引标识(Tag) 索引关键字的名称(索引名) <=10字节
66
索引的类型 4种类型索引(根据关键字段) 主索引 候选索引 普通索引 惟一索引
67
表的索引 2、索引的类型 主索引(Primary indexs) 侯选索引(Candidate indexs)
在数据库表中,每张表只能创建一个主索引 组成主索引关键字的字段或表达式,在表的所有记录中不能有重复的值(学号可以,姓名不可以) 自由表不能建立主索引 主索引存储于数据库表的结构复合索引中 侯选索引(Candidate indexs) 在指定的关键字段或表达式中不允许有重复值的索引 一张表中可以建立多个侯选索引 侯选索引可用于数据库表和自由表
68
表的索引 2、索引的类型 普通索引(Regular indexs) 唯一索引(Unique indexs) 可以决定记录的处理顺序
允许关键字段或表达式的值出现重复 对一张表可以创建多个普通索引(GL) 唯一索引(Unique indexs) 允许有重复值 具有重复值的记录仅存储其中的第一个(出版社) 惟一:对每一个特定的关键字只存储一次,而忽略了重复值第二次或以后的记录
69
创建索引文件 表设计器 Index命令 注意 “表设计器”——“索引”选项卡 不能对备注字段和通用字段建立索引 不要建立无用的索引
INDEX ON <索引表达式> TAG <索引标识名> [FOR <条件表达式>ASCENDING|DESCENDING](升降序) [UNIQUE|CANDIDATE](唯一索引|候选索引) 注意 不能对备注字段和通用字段建立索引 不要建立无用的索引
70
索引的建立 步骤: 项目管理器---表---修改 表设计器---索引 输入索引名----类型---表达式
不要对每个字段都建立索引,否则会降低程序的运行效率
71
对多个字段索引 操作步骤: 可以对多个字段建立索引 其排序是按照表达式的值进行的 项目管理器--选择已索引的表,选“修改”
表设计器,选索引,输入索引的名称 在“表达式”框中,输入对多个索引的表达式 如:按城市与仓库号进行索引,其表达式应为 仓库号+城市 确定 可以对多个字段建立索引 其排序是按照表达式的值进行的
72
索引的修改和删除 索引的修改 索引的删除 表设计器 命令 “表设计器”——“索引”选项卡 INDEX命令修改原索引
DELETE TAG TagName
73
索引的使用 设置主控索引 取消主控索引 主控索引:决定显示或访问表中记录的顺序的索引 主控索引可以是: 打开后再设置主控索引
复合索引文件中的一个标识(主控标识) 一个独立索引文件(主控索引文件) 打开后再设置主控索引 窗口 /数据工作期 /属性/索引顺序 命令 SET ORDER TO TAG <标识名> 取消主控索引 SET ORDER TO
74
索引应遵循原则 (1)为了提高速度,用普通索引、候选索引或主索引
(2)控制字段的重复值对数据库“表”用“主索引”或“候选索引”,对于“自由表”,用“候选索引”。
75
数据库的设计 数据库是一种工作环境 存储了一个“表”的集合 在表之间可以建立关系 对数据字段可以设置属性和触发规则
一个数据库文件具有.DBC的后缀。 不同主题内容的信息保存在不同的表当中
76
数据库的设计步骤: 确立“数据库”的功能: 确定表的种类与表的结构: 确定表间的关系: 确定收集信息的范围,并仔细收集这些信息
根据每个表的信息,确定表中的“字段”,将字段作为“表”中的一列 确定表间的关系: 将所创建的“表”加以分析,确定各个字段之间的“关系” 要明确为“一对一”、“一对多”关系 对于“多对多”关系转化为“一对一”、“一对多”关系
77
建自由表还是数据库表 自由表 数据库表有更为强大的功能 只存储相对独立的信息 没有依靠其它表的信息或被其他表所引用,可以使用自由表
它可以使用长表名和长字段名 表中的字段可以有标题和注释 表中的字段可以设置“默认值” 能设置字段级和记录级“规则” 对于插入、删除、修改等数据库操作可以设置触发器 它还可以实现同远程数据源的连接,创建本地视图和远程视图
78
数据库的简单操作 可通过 项目管理器 表设计器 数据库设计器
79
数据库的打开 操作步骤如下: 项目管理器,选择想要打开的数据库 选择修改按钮,进入数据库设计器
80
数据库设计器的操作 全部折叠 全部展开 在库设计器中,选中表,右点击鼠标,选择折叠或展开 库设计器上右击鼠标
在出现的快捷键中,选择“全部折叠” 全部展开 库设计器上,右点击鼠标 在快捷键中,选择“全部展开” 在库设计器中,选中表,右点击鼠标,选择折叠或展开
81
重排: 数据库属性: 关闭数据库设计器 选择菜单数据库,然后选择重排 重排方式,然后按确定 右击鼠标 选择属性 可以输入数据库的属性
选择显示的类型 选择“确定” 关闭数据库设计器
82
把自由表添加到数据库中 方法一 文件---打开,打开项目 选中的数据库是:教工 选中数据库下的“表”文件类型 单击“添加”按钮
选中要加入的表文件,再按“确定” 当自由表添加到数据库中时,其“表设计器”也变成了“数据库设计器”,即也拥有了数据库的所有属性
83
把自由表添加到数据库中 方法二 文件---打开,打开项目 选中的数据库是:教工 选修改按钮,显示数据库设计器 选择数据库菜单 再选“添加表”
选择要加入的表名,按确定 如果所选择的是自由表,就添加到所选中的数据库中 表已经是数据库表,不能添加
84
数据库中的表删除 注: 用户向数据库中添加的“表”,只能是自由表 表在同一时间只能属于一个数据库 文件----打开,打开项目
选中的数据库是:教工 选择修改按钮,屏幕显示“数据库设计器 选中要删除或移去的表,选择删除 如果不想删除此表,就选择“移去”,如果要想删除此表,就选择“删除” 注: 用户向数据库中添加的“表”,只能是自由表 表在同一时间只能属于一个数据库
85
在数据库中查找表 操作步骤如下: 文件--打开,打开项目 选中的数据库是:教工 选择修改,显示数据库设计器-教工窗口
选择“数据库”菜单,选“查找对象”命令 在查找对话框中,选择要查找的表或视图
86
字段与记录属性的常用概念 1.触发器 在数据库表进行一个插入、更新、删除操作之后,运行的记录事件级代码 不同的事件激发不同的动作
触发器在有效规则之后运行 常用于检查已建立永久关系的数据库表之间的数据完整性 触发器只存在于数据库表中 自由表中不存在触发器 触发器是数据库的一部分 受数据库的管理
87
2.有效性规则 3.记录级规则 检查输入数据是否满足某些条件的过程 一种与记录有关的有效性规则 当插入或修改字段值时被激活
多用于数据输入的正确性 记录被删除时不用使用有效性规则 记录级规则在字段级规则之后和触发器之前被激活
88
4.字段级规则 是一种与字段有关的有效性规则 当插入或修改字段值时被激活 多用于数据输入正确性检查 字段级规则在记录级规则和触发器之前被激活
89
设置字段的显示属性 字段的显示属性: 显示格式 掩码 标题
90
1.设置字段的标题 操作步骤: 项目管理器 选定表 修改,进入表设计器 选定要添加标题的字段,如姓名 单击“是”按钮,保存表结构
定义数据库字段名称时,以英文缩写为多 难以真正理解字段的含义 标题属性,给字段添加一个说明性标题 操作步骤: 项目管理器 选定表 修改,进入表设计器 选定要添加标题的字段,如姓名 单击“是”按钮,保存表结构 此时浏览表,姓名显示为职工姓名
91
2.设置字段的显示格式 格式: 常用的格式码: 确定一个字段在表单、浏览窗口或报表中的显示格式 输入所需的格式码 格式实际上是字段的输出掩码
A——表示只允许输出文字字符(禁止数字、空格或标点符号); D——表示使用当前系统设置的日期格式; L——表示在数值前显示填充的前导零,而不是用空格字符; T——表示禁止输入字段的前导空格字符和结尾空格字符; !——表示把输入的小写字母字符转换为大写字母。
92
3.设置字段的掩码 输入掩码: 常用的输入掩码: 可以确定字段输入的格式 屏蔽非法输入,减少人为的数据输入错误 X——表示可输入任何字符;
9——表示可输入数字和正负符号; #——表示可输入数字、空格和正负符号; $——表示在固定位置上显示当前货币符号; $$——表示显示当前货币符号; *——表示在值的左侧显示星号; .——表示用点分隔符指定数值的小数点位置; ,——表示用逗号分隔小数点左边的整数部分,一般用来分隔千分位。
93
例如 注: 年龄字段的输入掩码为99 姓名的显示格式指定为AT 设置格式 输入掩码: 年龄字段只能接受数字输入,而不能输入空格字符、字母等
姓名两个字段只能接受字母或汉字输入,而不能输入空格字符、数字 注: 设置格式 一个作用是限制显示输出, 输入掩码: 另一个作用是限制输入
94
输入字段的注释 注释使字段意义更加明确 步骤: 表设计器 “字段注释”文本框中,输入描述信息
95
“表达式生成器”窗口 有...按钮,显示一个对话框 表达式: 用运算符把内存变量、字段变量、常数和函数连接起来的式子
表达式用于计算和描述一个操作条件 根据处理结果返回一个值 数值型 字符型 日期型 逻辑型
96
表达式生成器 方便快捷地生成表达式 5个部分: 表达式文本编辑框 函数列表框 变量列表框 表或视图下拉列表框 控制按钮
97
1.表达式文本编辑框 用于编辑表达式 从列表框选择出来的选项将显示在这里, 直接在这里输入和编辑表达式 可以输入各种各样的操作条件
字段级有效性规则 记录级有效性规则 参照完整性规则
98
2.函数列表框 分为: 字符函数列表框: 可以选择表达式所需的函数 字符函数 数学函数 逻辑函数 日期函数
有用于处理字符和字符串的函数及字符运算符
99
3.变量列表框 4.表或视图下拉列表框 变量列表框 列出了当前表或视图的字段变量 从变量列表框中,可以选择表达式所需的变量
内存变量 系统变量 从变量列表框中,可以选择表达式所需的变量 4.表或视图下拉列表框 可以选择当前打开的表或视图
100
5.控制按钮 4个命令按钮: 确定 取消 检验 选项 完成表达式生成,并退出表达式生成器 单击“检验”按钮,可检验生成的表达式是否有效
单击选项,进入表达式生成器选项对话框
101
字段有效性 为了防止这些非法数据的录入 通过显示属性来控制 通过字段验证方式来控制 字段的显示格式 输入掩码 只是码级的限制
合法的字符组合在一起是否合法、是否符合逻辑就无法在此进一步
102
字段验证 字段有效性有3个表达式文本框: 数据库表的字段属性之一
字段通过了字段显示格式和输入掩码的限制,输入了数据以后,还要通过字段验证才可以存储到字段中去 字段有效性有3个表达式文本框: 规则 信息 默认值
103
字段的默认值 步骤: 如: 新记录输入时所默认的字段值 可以简化操作,提示输入格式,减少输入错误,提高输入速度
表设计器中的“默认值”属性框中 输入默认值 如: 性别字段输入默认值“女” 单击“正确”按钮
104
2.设置字段有效性原则 一个规则判断输入的数据是否符合字段的要求 在规则文本框中,可以输入字段验证的规则 字段输入完成,系统计算表达式的值
如值为真,输入通过字段规则的验证 否则不允许输入的值存储到字段中去 例如 教工年龄数据必须大于0 小于0,输入的数据是无效的
105
有效性规则: 字段级有效规则 字段中单个信息输入的数据是否有效 记录级有效性规则 整条记录输入完毕后才开始检查数据的有效性
106
使用长表名与注释 步骤: 表设计器中,可用长表名和表的注释 在“表名”框中,输入长表名 输入表的注释
107
表名: 长表名 可以由字母、数字、下划线或汉字组成 第一个字符必须是字母、下划线或汉字 默认的表名及.DBF文件名
数据库表,可以建立一个长表名 最多可以包含128个字符 可以用来代替短表名来标识数据库表 定义了长表名,表在界面中,显示长表名 表的注释可以使表的功能易于理解
108
使用长字段名、标题与注释 自由表的字段名最多可包含10个字符 数据库字段名最多可以包含128个字符
从库中移去表,其长字段名将被截断为10个字符
109
字段的说明: 使表更容易被理解更新 项目管理器中,选择字段后,会显示该字段的注释文本 数据库表中的每个字段可以有一个标题
110
创建和编辑关系 关系: 永久关系 临时关系 永久关系一旦创建就保存在数据库文件中 在打开数据库时随即被打开
在“数据库设计器”和数据环境中显示为表索引间的连接线 在永久关系的基础上,可设置表间的参照完整性规则,用以保证数据库各表相关数据的一致性 临时关系 在使用时临时创建的 在“查询与视图设计器”中,是自动作为默认连接条件的数据库表间关系 关闭其中一个表时关系即被自动关闭
111
临时关系(关联) 通过主表记录指针的移动来控制子表记录指针的移动 这是临时关系和永久关系不同的特征
在一对多关系表间,建立临时关系以后,在关系的“一”方表中,选择一条记录时,会按关系字段的值自动访问到“多”方表中的相关记录
112
永久关系: 通过连接不同表的索引可以很方便地建立表之间的关系,被存储在数据库文件中,所以将这种关系称为永久关系
VFP 6.0就自动将永久关系作为查询、视图、表单和报表的默认关系 利用永久关系还可以存储参照完整性信息
113
建立永久关系 主关键字字段与外部关键字字段: 主关键字字段 外部关键字字段 哪个表包含主记录,哪个表包含相关记录 关联的表有一些公共字段
用于标识主表中的某一特定记录 根据主关键字字段建立一个主索引 外部关键字字段 用于标识相关表中的相关记录 外部关键字字段建立一个普通索引 哪个表包含主记录,哪个表包含相关记录 并且普通索引和主索引必须带有相同的表达式
114
三种关系: 一对一 一对多 多对多 表A中的一条记录,在表B只能有一条记录 B的每一条记录也在表A中只能有一条记录与之对应 并不常使用
最为普通 表A中一条记录,表B中有多条记录对应 表B中的一条记录,在表A中只有一条 一方要建立主关键字或候选关键字 多方要使用普通索引 多对多 转化为“一对一”或“一对多”关系
115
(a)1:1联系 (b)1:m联系 (c)n:m联系
班级 班长 领导 1 学生 组成 m 课程 选修 n (a)1:1联系 (b)1:m联系 (c)n:m联系
116
建立永久关系 永久性关系并不控制表内记录指针间的关系 步骤如下: (1)建立表的索引 (2)拖拽: 一方要建立主关键字或候选关键字
多方要使用普通索引 (2)拖拽: 在“库设计器”上,“一”方的主索引,拖拽到“多”表的与其对应的普通索引之上
117
建立临时关系(关联) 使用菜单建立表之间的关联 (1) 选择【窗口】菜单中的【数据工作期】选项。
(2) 单击【打开】,在【打开】对话框中选择要打开的数据库。 (3) 在【数据库中的表】列表框中,选择要打开的表,然后按【确定】按钮,则打开的表会出现在【数据工作期】窗口。重复以上步骤,可在不同工作区打开多个表。 (4) 在【数据工作期】窗口中选择要建立关系的父表,再按【关系】按钮,此时在【关系】框中将加入父表,且表名下面有一根折线,表示该表要与其他表建立关系。 (5) 选择要关联的子表,先打开【设置索引顺序】对话框,然后弹出【表达式生成器】窗口,单击字段列表框中的用来建立关联的某一字段。按【确定】按钮,关闭表达式生成器。
118
参照完整性 表间彼此相关,改一表,可能使其关系发生变化 删除主表中记录,相关表中的记录就找不到与之对应的父记录,就破坏了表之间的原有关系
参照完整性,利用相关表间的制约关系,互相参照,控制相关表数据的完整性
119
参照完整性规则 更新规则 删除规则 插入规则 控制在相关表中的插入、更改或删除记录
120
例如 当主表中没有相关的记录时,记录不得追加到相关子表中 当主表中某条记录在相关子表中有相关记录时,这条主表记录不允许删除
当主表的关系字段值改变将导致相关子表中出现无关记录时,在主表中不允许做这种改变
121
步骤如下: 在“库设计器”中,双击关系线,打开编辑关系对话框 单击参照完整性按钮,打开生成器 单击要实施参照完整性的关系行
单击“更新”右边的箭头 选择“级联”、“限制”或“忽略” 单击“确定”按钮
122
级联: 限制: 忽略: 更新主表关系字段时,同时自动更新子表中的相关记录的关系字段值 子表中有相关记录时,禁止更新主表相应记录的关系字段值
表示忽略主子表间的关系,不限制主表关系字段的更新
Similar presentations