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