第 4 章 表与数据库的基本操作

122
第4第 第第第第第第第第第第

description

第 4 章 表与数据库的基本操作. 内容. 介绍数据库、数据表的基本概念 数据库和数据表的建立 编辑表中的数据、记录修改与删除 表的索引等有关操作。. 概念. 数据库 (.dbc) 就是一个关于某一特定主题或目标的信息集合。 表 (.dbf) 基本单位,是数据库的基础 可以说表是关系数据库系统中的基本结构。 要存数据,为所需记录的信息创建一个表。 由行和列组成的,一行为一个记录,一列为一个字段。. 通常所说的表格. 一行为一个记录( Record ). 一列为一个字段 (Field). 二维表简称表 (Table) 特征:. (1) 若干记录 - PowerPoint PPT Presentation

Transcript of 第 4 章 表与数据库的基本操作

Page 1: 第 4 章  表与数据库的基本操作

第 4 章 表与数据库的基本操作

Page 2: 第 4 章  表与数据库的基本操作

内容

• 介绍数据库、数据表的基本概念• 数据库和数据表的建立• 编辑表中的数据、记录修改与删除• 表的索引等有关操作。

Page 3: 第 4 章  表与数据库的基本操作

概念

• 数据库 (.dbc)– 就是一个关于某一特定主题或目标的信息集合。

• 表 (.dbf)– 基本单位,是数据库的基础– 可以说表是关系数据库系统中的基本结构。– 要存数据,为所需记录的信息创建一个表。– 由行和列组成的,一行为一个记录,一列为一个字

段。

Page 4: 第 4 章  表与数据库的基本操作

一行为一个记录( Record )

一列为一个字段 (Field)

通常所说的表格

Page 5: 第 4 章  表与数据库的基本操作

二维表简称表 (Table) 特征:

(1) 若干记录(2) 若干个字段,每记录具有相同结构的字段(3) 不同类型的字段来存储不同类型的数据(4) 字段的顺序与存储的数据无关(5) 记录在的顺序与存储的数据无关。

Page 6: 第 4 章  表与数据库的基本操作

表的两要素:•表结构(列)•相应记录(行)

Page 7: 第 4 章  表与数据库的基本操作

表结构

Page 8: 第 4 章  表与数据库的基本操作

表的字段

• 表是由记录组成• 记录又由字段组成

• 字段的属性(表结构)– 字段名– 字段类型– 字段宽度– 小数位数

Page 9: 第 4 章  表与数据库的基本操作

1. 字段名• 约定:

– 只能使用字母、汉字、下划线和数字– 见名知义– > < = + / \ | [ ] : ? 空格等特殊字符不能使用。– 字段名必须以字母或汉字开头,并且长度不能超过 12

8 个字符– 如:下列哪些合法

不以数字开头 × 3mn 姓名 1 mn3

不能含有空格; × m n × 编 号

不能含有各种运算符; × S-N S_N × AI*X

Page 10: 第 4 章  表与数据库的基本操作

2. 字段类型

• 不同类型的字段来存储不同类型的数据

字符型 货币型 数值型

浮点型 日期型 日期时间型

双精度 整型 逻辑型

备注型 通用型

Page 11: 第 4 章  表与数据库的基本操作

(1) 字符型 (Character)– 通常用于存储键盘输入的文本数据。

• 汉字、字母、数字、空格、• 符号及标点符号

– 字符型数据必用双引号或单引号或 [] 来定界– 字符型字段的宽度最大为 254 *****

– 如:– “how” ‘1234’ [ 中国人 ]

Page 12: 第 4 章  表与数据库的基本操作

(2) 货币型 (Currency)

– 保存货币数值时,用货币类型而不是数值类型字段

– 最多保留 4 位小数位数,多则四舍五入至 4位

– 内存变量用 $ 数值来赋初值• 如 :x=$999• ? Type(‘x’)

Page 13: 第 4 章  表与数据库的基本操作

(3) 数值型 (Numeric)– 数值型字段用来存储数值数据。– 它可以包含数字 0 ~ 9 ,也可以带正、负号

或小数点– 如: 1234 100.89

(4) 浮点型 (Float)– 浮点型字段在功能上等价于数值型字段。

Page 14: 第 4 章  表与数据库的基本操作

(5) 日期型 (Date)– 用于存储包含有年、月、日的日期数据– 长度为 8 字节

(6) 日期时间型 (DateTime)– 用于存储包含有年、月、日、时、分、秒的日期和

时间数据。

(7) 双精度型 (Double)– 双精度型用于存储精度要求较高、位数固定的数值,

或真正的浮点数值。

Page 15: 第 4 章  表与数据库的基本操作

(8) 备注型 (Memo)

– 长度固定为 4 字节

– 用于存储不定长度的文本数据– 当文本数据长度可能大于 254 ,无法使用

字符型存储时,使用备注类型字段– 所有备注型字段的实际内容存储在和表名相

同,扩展名为 .FPT 的备注文件中

Page 16: 第 4 章  表与数据库的基本操作

(9) 通用型 (General)– 通用型用于存储 OLE 对象数据– 字段宽度固定为 4 个字节,用于存储一个 4 个字节

的指针,指向该字段的实际内容– 其内容存储在扩展名为 .FPT 的文件中。– OLE 对象包括电子表格、字处理文档、图像或其他

多媒体对象等– OLE 对象可以用链接方式存储在表中。– 存储数据的大小,取决于相的 OLE 服务程序,和磁

盘空间大小的限制。

Page 17: 第 4 章  表与数据库的基本操作

(10) 整型 (Integer)– 整型用于存储整数数据– 字段宽度固定为 4 个字节。– 取 值 范 围 从 -2 147 483 647 到 2 147

483 646 。

(11) 逻辑型 (Logical)– .T. 或 .Y. 为逻辑真– .F. 或 .N. 为逻辑假– 长度固定为 1 字节

Page 18: 第 4 章  表与数据库的基本操作

(12) 字符型 ( 二进制 )((Character(Binary))– 字符型 ( 二进制 ) 用于存储不需要系统代码页维护的

字符数据– 其他字段特性同字符型字段– 密码(各国)

(13) 备注型 ( 二进制 )((Memo(Binary))– 备注型 ( 二进制 ) 用于存储不需要系统代码页维护的

备注字段数据。其他字段特性同备注型字段。

Page 19: 第 4 章  表与数据库的基本操作

数据类型 ( 小结 )

• 数据类型 (Type)13种 C- 字符型 N- 数值形 F- 浮点型 D- 日期型 I- 整 型 L- 逻辑型 M- 备注型 G- 通用型 Y 货币型

Page 20: 第 4 章  表与数据库的基本操作

3. 字段宽度• 规定宽度

– 字符型字段 254– 货币型字段 8– 数值型字段 20– 日期型字段 8– 备注型 4– 逻辑型 1– 日期时间型 8– 通用型字段 4

• 用于存储一个 4 个字节的指针,指向该字段的实际内容。整型字段宽度固定为 4 个字节。

Page 21: 第 4 章  表与数据库的基本操作

• 宽度 (Width) ( 小结 )

( 以下类型宽度固定)

• 货币型、日期型、日期时间型、双精度型: 8 字节

• 整型、备注型、备注型(二进制)、通用型: 4 字节

• 逻辑型: 1 字节

• 数值型: 20 字节

Page 22: 第 4 章  表与数据库的基本操作

4. 小数位数– 有小数的字段:

• 数值型• 浮点型• 双精度型

– 字段宽度 = 整数部分宽度 + 小数点 1 位 + 小数位宽度

– 如小数位数不为 0 ,则小数位数至少要比整个字段宽度小 2

Page 23: 第 4 章  表与数据库的基本操作

小数位数

• 一个 N形变量宽为 6 ,小数位数为 3 ,则这个变量最大可表示的数为多少?

• _ _ . _ _ _

• 99.999

Page 24: 第 4 章  表与数据库的基本操作

5. 空值 (NULL)

– 空值是用来标识一个字段“没有值”的标志– 空值表示没有任何值或没有确定值– 空值不等同于数值 0 、空字符串或逻辑“假”– 函数 EMPTY() 测试空值

– 如果允许字段接受 NULL 值,则应选中该栏所在框

– 表的关键字段不允许为 NULL 值

Page 25: 第 4 章  表与数据库的基本操作

字段类型 中文名称 宽度 ( 字节 ) 说明 – Character 字符型 254 字母、汉字、数字、文本、符号 – Currency 货币型 8 货币单位 – Numeric 数值型 20 整数或小数 – Float 浮点型 20 同数值型 – Date 日期型 8 年、月、日 – DateTime 日期时间型 8 年、月、日、时、分、秒 – Double 双精度型 8 双精度数值 – Integer 整型 4 整数 – Logical 逻辑型 1 真或假 – Memo 备注型 4 不定长的字母、文本、数字

– General 通用型 4 OLE 图像、多媒体对象

Page 26: 第 4 章  表与数据库的基本操作

小结• 数据库是表和表间关系的集合• 表是由表结构和记录组成• 表结构是由各不同字段构成• 每一字段又具有字段名、数据类型、数

据宽度、小数位数等属性• 表中的每一个记录又具有相同的字段

Page 27: 第 4 章  表与数据库的基本操作

•建表的步骤:1)设计表结构

2)建表的结构 creat 表名

3)保存表文件 ctrl+w

4)输入记录 append browse

Page 28: 第 4 章  表与数据库的基本操作

表结构的创建

1 、表设计器(1) 打开“表设计器”

项目管理器 / 自由表 / 新建 / 新表 / 保存注: A 、也可从菜单或工具栏中直接新建表 B 、与在“项目管理器”中新建表不同的是:

这样新建的表将不包含在项目中(2) 在“表设计器”中创建表结构

表设计器 / 字段 / 输入 / 确定

Page 29: 第 4 章  表与数据库的基本操作

数据表的建立• 如:

– 一张名为教师档案文件 zgda.dbf

• 编号 姓名 性别 年龄 职称 工作时间 婚否 简历 1 张黎黎 女 26 助教 05/ 24/ 83 T memo

2 李 艳 女 30 助教 09/ 14/ 90 T memo

3 刘 强 男 38 讲师 12/ 24/ 76 T memo

Page 30: 第 4 章  表与数据库的基本操作

职工档案表结构( zgda.dbf )• 字段名 类型 宽度 小数位数 索引 NULL• 编号 字符型 4 无 升序 否• 姓名 字符型 6 无 无 否• 性别 字符型 2 无 无 否• 年龄 数值型 2 无 无 否• 职称 字符型 8 无 无 可• 工时 日期型 8 无 无 否• 婚否 逻辑型 1 无 无 否• 简历 备注型 4 无 无 可• 照片 通用型 4 无 无 可

Page 31: 第 4 章  表与数据库的基本操作

表的打开VFP 在使用一个表前必须把表打开• 打开命令

– USE < 文件名 >

VFP 在结束使用一个表时,必须把表关闭• 关闭命令

– USE– CLOSE ALL– CLOSE DATABASE/TABLE

Page 32: 第 4 章  表与数据库的基本操作

修改表结构1 、表设计器

项目管理器 / 选定表 / 修改

2 、命令– USE books – MODIFY STRUCTURE

Page 33: 第 4 章  表与数据库的基本操作

3 、菜单 / 按钮方式法 1 :

•“表”—“属性”•“工作区”•“工作区属性”—“修改”

法 2 :•“窗口” —“数据工作期” •(“ 属性”— “修改” )

Page 34: 第 4 章  表与数据库的基本操作

记录的处理记录的追加

1 、立即输入记录(浏览 / 编辑 / 追加方式)2 、浏览窗口下追加( USE/BROWSE )(表 / 追加新记录)

3 、使用 INSERT - SQL 命令追加记录insert into zgda( 姓名 , 性别 , 年龄 ) values (' 洪七 ',' 男 ',70)

4 、从其他表中追加记录• 命令 APPEND

– APPEND FROM

– APPEND [ BLANK ]

Page 35: 第 4 章  表与数据库的基本操作

记录的浏览1 、浏览窗口

– 进入 :• BROWSE 命令 •项目管理器 /选定某个表 / 单击“浏览”按钮

2 、命令– BROWSE– LIST / DISPLAY– BROWSE FIELDS 书号 ,书名 , 作者 for ...

Page 36: 第 4 章  表与数据库的基本操作

如何定制浏览窗口?

• 重新安排列的位置:– 拖动

• 改变列的宽度:– 拖动

• 显示或隐藏表格线:– 显示 /网格线

• 分为两个窗格:– 左下角拖动

Page 37: 第 4 章  表与数据库的基本操作

记录的定位

记录结束标志

记录开始标志

第 n条记录

文件头

Go top

go bottom

Skip

Go nRecordNumber

1 、记录指针标志记录号(输入顺序)记录的开始标志 BOF ( )记录指针标志 ( 当前记录 ) RECNO ( )记录的结束标志 EOF ( )

2 、记录的定位方式绝对定位 go相对定位 skip条件定位 locate for(表达式)

Page 38: 第 4 章  表与数据库的基本操作

几个概念

•记录指针•当前记录•记录定位•记录号 RECNO ()

Page 39: 第 4 章  表与数据库的基本操作

例 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

Page 40: 第 4 章  表与数据库的基本操作

例 2

RECN()

Use books 1

go 5 5

skip +2 7

skip -3 4

locate for …

Page 41: 第 4 章  表与数据库的基本操作

3 、记录定位的实现– 界面方式 (“ 表”—“转到记录” )

• 记录号:绝对定位 goto

• 定位:条件定位 locate for

• 作用范围: all,next,record,rest,for

• 找到 /未找到– 命令方式 绝对定位: GO( GOTO )

GO( GOTO ) TOP/BOTTOM

相对定位: SKIP (与索引有关) skip=skip 1

快速移动: SEEK 及 FIND

Page 42: 第 4 章  表与数据库的基本操作

记录的修改1 、在浏览窗口中修改

EDIT / CHANGE / BROWSE

项目管理器 / 浏览例:修改 books 表中第 5 条记录 use books

edit record 5

Page 43: 第 4 章  表与数据库的基本操作

记录的修改2 、批量记录的修改

( 1 )界面方式 “表”—“替换字段”—字段条件( 2 )命令方式– UPDATE-SQL命令 ( 表不必事先打开 , 以下同)– REPLACE 命令USE bookscopy to temp (复制到临时表)use tempREPLACE 单价 WITH 5.00 FOR 单价 <5

Page 44: 第 4 章  表与数据库的基本操作

记录的删除

• 目的:– 节省时空

• 删除步骤:– 逻辑删除– 物理删除

Page 45: 第 4 章  表与数据库的基本操作

逻辑删除– 给要删除的记录加标记( * 号)

• 标记要删除的记录(逻辑删除)– 浏览窗口:

• 单击小方框– “表”

• “删除记录”– 命令 DELETE FROM 表名 [WHERE 过滤条件表达式 ]例:– 删除教材表中库存在数量为 0 的记录

• delete from books where 库存数量 =0

Page 46: 第 4 章  表与数据库的基本操作

物理删除

• 彻底删除(物理删除)– “表”

• “彻底删除”– 命令 PACK (独占)

• 删除有删除标记的记录

– 命令 ZAP=delete all +pack (独占)

Page 47: 第 4 章  表与数据库的基本操作

恢复记录的删除– 恢复带删除标记的记录

法 1 :– 小方框 黑 -->白

法 2 :“表”–“恢复记录”

法 3 : RECALL [ 范围 ][FOR 条件表达式 1][WHERE 条件表达式 2]

例: recall

recall all

recall all for 库存数量 =0 (这里的 all 可省)说明:缺省范围(当前记录,不是全部记录)

Page 48: 第 4 章  表与数据库的基本操作

筛选记录• 界面

“表”—“属性”—“数据过滤器”• 命令

– SET FILTER TO <条件表达式 >

– SET FILTER TO

– FOR 子句:临时性记录筛选例: USE ZGDA

• SET FILT TO 出版社 =‘石油大学’• 注意:

– 是隐藏而非删除– 与 FOR 子句不同

Page 49: 第 4 章  表与数据库的基本操作

筛选字段

• 表 / 属性 / 字段筛选• SET FIELDS TO < 字段 1> [ , < 字段

2>]– SET fields to 姓名 , 性别

Page 50: 第 4 章  表与数据库的基本操作

多表操作工作区:

•用以标识一张打开的表的内存区域•一个工作区在某一时刻只能打开一张表•一张表可以在多个工作区同时打开

•( use 表 again )•共有 255 个工作区•默认工作区号为 1 区

USE books( 默认为 1 号 )

LIST

USE books1(books 自动关闭 )

LIST

Page 51: 第 4 章  表与数据库的基本操作

工作区的标识 ***• 用数字来标识各个工作区( 1—255 )• 用相应工作区中表名来标识工作区

– (此时表没有指定别名,如指定别名,用别名来标识工作区 )

• Sele 5• Use zgda• Sele 4• Sele zgda

• 1-10 个工作区常用英文字母 A-J• Sele 10=sele j

Page 52: 第 4 章  表与数据库的基本操作

工作区的转换• 命令:

– Select 工作区号 /工作区中表别名 /A-J

• 如:• Sele 1

• Use zgda

• Sele B

• Selct zgda

• Select 0 表示选择未用的号最小工作区

Page 53: 第 4 章  表与数据库的基本操作

Select O例子

sele 1

use zgda

sele 4

use zggz

sele 0

? select() 返回选择的工作区号The answer is :2

Page 54: 第 4 章  表与数据库的基本操作

多表操作可以同时在多个工作区中打开多个没有打开的表

SELE 1

USE books1

LIST

SELE 2

USE books2

LIST

SELE 1

LIST

一张表不可以在多个工作区同时打开

Page 55: 第 4 章  表与数据库的基本操作

多表操作•表的别名指定

USE < 表文件名 > ALIAS < 别名 >

例: USE ZGDA ALIAS OK

•当前工作区:正在使用的工作区

•ALIAS ( ) 函数ALIAS ():测试当前工作区中表的别名

•“数据工作期”窗口•别名

Page 56: 第 4 章  表与数据库的基本操作

• 操作非当前工作区中的表–把其它的工作区选为当前工作区

• Sele 2

– 在命令中强行指定工作区• GO TOP IN ok

Page 57: 第 4 章  表与数据库的基本操作

关于表的打开和关闭• 刚创建的表处于打开状态 *1 、表的打开

– 界面• 文件 /打开• 窗口 / 数据工作期 /打开• USE ?

– 命令 • USE < 表文件名 >• USE < 表文件名 > IN 0

– 多次打开同一张表(同时)• USE < 表文件名 > AGAIN• 例: USE books/SELE 0/USE XS AGAIN

Page 58: 第 4 章  表与数据库的基本操作

2 、表的关闭– 界面

• 窗口 / 数据工作期 / 关闭– 命令

• USE• USE IN <别名 /工作区 >• CLOSE ALL&& 数据库、索引、项目管理器等

也被关闭• CLOSE DATABASES && 如果当前没有打开的

数据库,则把自由表全部关闭• CLOSE TABLES && 关闭表,不关闭库• 退出 VFP

注意: SQL语句能自动打开表,但不会自动关闭表!

Page 59: 第 4 章  表与数据库的基本操作

表的独占与共享使用表的共享使用:

• 一张表可以同时被多个用户打开

• ( RECORD UNLOCKED )表的独占使用:

• 一张表只能被一个用户打开 (默认 )

• ( EXCLUSIVE )

Page 60: 第 4 章  表与数据库的基本操作

表的独占与共享使用• 设置独占与共享打开表的默认状态

– 工具 /选项 / 数据– SET EXCLUSIVE OFF/ON (共享 /独占)

• 强行用独占方式打开表– “打开”—“独占”复选框– USE < 工作表 > SHARED/EXCLUSIVE

• 设置改变,并不改变已经打开的表的状态• 一张表同时被多次打开时,只以第一次的打开

方式为准(窗口 / 数据工作期)

Page 61: 第 4 章  表与数据库的基本操作

概念• 物理顺序:

– 一般是按照其输入的顺序进行记录的存储顺序– 顺序找,速度慢– 不便于查找需要的信息

• 逻辑顺序:– 记录的处理顺序– (快速)– 可以使用索引来改变记录的顺序即逻辑顺序– 根据表中字段的值,建立具有逻辑顺序的索引文件,然后根据索引文件重新排列数据库表中显示的记录。

Page 62: 第 4 章  表与数据库的基本操作

表的索引文件1 、索引:

• 如同目录• 数据库的辅助文件,不能单独使用

– 可以按一个字段索引,也可以多个

– 一个表可以创建多个索引

– 索引存储在索引文件中

– 索引文件中存储着记录号和索引字段的索引值

Page 63: 第 4 章  表与数据库的基本操作

理解索引

• 索引可以理解为根据某一字段的值进行逻辑排序的一组指针

• 按照索引显示记录, VFP按照指针排列的顺序分别读取每一条记录,而这些记录在数据库中的实际存储位置并未改变。

Page 64: 第 4 章  表与数据库的基本操作

按年龄索引后的表文件

姓名 年龄 张黎黎 26

李 艳 30

刘 强 38

DA.DBF

姓名 年龄 刘 强 38

李 艳 30

张黎黎 26DA.DBF

物理顺序 逻辑顺序

记录号 年龄大小 3 1

2 2

1 3 NL.CDX

Page 65: 第 4 章  表与数据库的基本操作

关键字与索引标识

( 1 )索引关键字 (Index Key )• 建立索引的依据 ( 索引表达式 )

• 字段 / 字段表达式• VFP 使用索引关键字来显示和访问表中的记录

( 2)索引标识( Tag)• 索引关键字的名称 ( 索引名 )

• <=10 字节

Page 66: 第 4 章  表与数据库的基本操作

索引的类型

• 4种类型索引(根据关键字段)– 主索引– 候选索引– 普通索引– 惟一索引

Page 67: 第 4 章  表与数据库的基本操作

表的索引2、索引的类型– 主索引 (Primary indexs)

• 在数据库表中 , 每张表只能创建一个主索引• 组成主索引关键字的字段或表达式 , 在表的所有记录中不能有重复的

值 (学号可以 ,姓名不可以 )• 自由表不能建立主索引• 主索引存储于数据库表的结构复合索引中

– 侯选索引 (Candidate indexs)• 在指定的关键字段或表达式中不允许有重复值的索引• 一张表中可以建立多个侯选索引• 侯选索引可用于数据库表和自由表

Page 68: 第 4 章  表与数据库的基本操作

表的索引2、索引的类型

– 普通索引 (Regular indexs)• 可以决定记录的处理顺序•允许关键字段或表达式的值出现重复• 对一张表可以创建多个普通索引 (GL)

– 唯一索引 (Unique indexs)•允许有重复值• 具有重复值的记录仅存储其中的第一个 (出版社 )

• 惟一:对每一个特定的关键字只存储一次,而忽略了重复值第二次或以后的记录

Page 69: 第 4 章  表与数据库的基本操作

创建索引文件• 表设计器

– “表设计器”——“索引”选项卡• Index 命令

INDEX ON < 索引表达式 > TAG < 索引标识名 > [FOR <条件表达式 >ASCENDING|DESCENDING]

(升降序)[UNIQUE|CANDIDATE]( 唯一索引 |候选索引)

• 注意– 不能对备注字段和通用字段建立索引– 不要建立无用的索引

Page 70: 第 4 章  表与数据库的基本操作

索引的建立

•步骤:– 项目管理器 --- 表 --- 修改– 表设计器 --- 索引– 输入索引名 ---- 类型 --- 表达式

• 不要对每个字段都建立索引,否则会降低程序的运行效率

Page 71: 第 4 章  表与数据库的基本操作

对多个字段索引• 操作步骤:

– 项目管理器 --选择已索引的表,选“修改”– 表设计器,选索引,输入索引的名称– 在“表达式”框中 , 输入对多个索引的表达式– 如:按城市与仓库号进行索引 , 其表达式应为 仓库号+城市

– 确定• 可以对多个字段建立索引• 其排序是按照表达式的值进行的

Page 72: 第 4 章  表与数据库的基本操作

索引的修改和删除

• 索引的修改– 表设计器

• “表设计器”——“索引”选项卡– 命令

• INDEX命令修改原索引• 索引的删除

– 表设计器• “表设计器”——“索引”选项卡• DELETE TAG TagName

Page 73: 第 4 章  表与数据库的基本操作

索引的使用• 设置主控索引

主控索引 : 决定显示或访问表中记录的顺序的索引主控索引可以是 :

• 复合索引文件中的一个标识 ( 主控标识 )• 一个独立索引文件 ( 主控索引文件 )

– 打开后再设置主控索引– 窗口 / 数据工作期 / 属性 / 索引顺序– 命令 SET ORDER TO TAG < 标识名 >

• 取消主控索引• SET ORDER TO

Page 74: 第 4 章  表与数据库的基本操作

索引应遵循原则

(1) 为了提高速度 , 用普通索引、候选索引或主索引

(2) 控制字段的重复值对数据库“表”用“主索引”或“候选索引”,对于“自由表” , 用“候选索引”。

Page 75: 第 4 章  表与数据库的基本操作

数据库的设计

• 数据库是一种工作环境• 存储了一个“表”的集合• 在表之间可以建立关系• 对数据字段可以设置属性和触发规则• 一个数据库文件具有 .DBC 的后缀。• 不同主题内容的信息保存在不同的表当中

Page 76: 第 4 章  表与数据库的基本操作

数据库的设计步骤:

• 确立“数据库”的功能:– 确定收集信息的范围,并仔细收集这些信息

• 确定表的种类与表的结构:– 根据 每 个 表 的 信 息 ,确定 表 中 的“字 段”,将字 段 作 为“表”中的一列

• 确定表间的关系:– 将所创建的“表”加以分析,确定各个字段之间的“关系”– 要明确为“一对一”、“一对多”关系– 对于“多对多”关系转化为“一对一”、“一对多”关系

Page 77: 第 4 章  表与数据库的基本操作

建自由表还是数据库表• 自由表

– 只存储相对独立的信息– 没有依靠其它表的信息或被其他表所引用,可以使用自由表

• 数据库表有更为强大的功能– 它可以使用长表名和长字段名– 表中的字段可以有标题和注释– 表中的字段可以设置“默认值”– 能设置字段级和记录级“规则”– 对于插入、删除、修改等数据库操作可以设置触发器– 它还可以实现同远程数据源的连接,创建本地视图和远程视

Page 78: 第 4 章  表与数据库的基本操作

数据库的简单操作

• 可通过– 项目管理器

– 表设计器

– 数据库设计器

Page 79: 第 4 章  表与数据库的基本操作

数据库的打开

操作步骤如下:• 项目管理器 ,选择想要打开的数据库

• 选择修改按钮,进入数据库设计器

Page 80: 第 4 章  表与数据库的基本操作

数据库设计器的操作• 全部折叠

– 库设计器上右击鼠标– 在出现的快捷键中 ,选择“全部折叠”

• 全部展开– 库设计器上 ,右点击鼠标– 在快捷键中 ,选择“全部展开”

• 在库设计器中 ,选中表,右点击鼠标,选择折叠或展开

Page 81: 第 4 章  表与数据库的基本操作

• 重排:– 选择菜单数据库,然后选择重排– 重排方式,然后按确定

• 数据库属性:– 右击鼠标– 选择属性– 可以输入数据库的属性– 选择显示的类型– 选择“确定”

• 关闭数据库设计器

Page 82: 第 4 章  表与数据库的基本操作

•把自由表添加到数据库中方法一• 文件 ---打开,打开项目• 选中的数据库是 :教工 • 选中数据库下的“表”文件类型• 单击“添加”按钮• 选中要加入的表文件,再按“确定”• 当自由表添加到数据库中时,其“表设计器”也变成了“数据库设计器”,即也拥有了数据库的所有属性

Page 83: 第 4 章  表与数据库的基本操作

把自由表添加到数据库中• 方法二

– 文件 ---打开,打开项目– 选中的数据库是 :教工 – 选修改按钮,显示数据库设计器– 选择数据库菜单– 再选“添加表” – 选择要加入的表名,按确定– 如果所选择的是自由表 , 就添加到所选中的数据库中– 表已经是数据库表 , 不能添加

Page 84: 第 4 章  表与数据库的基本操作

• 数据库中的表删除– 文件 ----打开,打开项目– 选中的数据库是 :教工 – 选择修改按钮,屏幕显示“数据库设计器– 选中要删除或移去的表,选择删除 – 如果不想删除此表 , 就选择“移去” , 如果要想删除此表 ,

就选择“删除”

• 注:– 用户向数据库中添加的“表” , 只能是自由表– 表在同一时间只能属于一个数据库

Page 85: 第 4 章  表与数据库的基本操作

在数据库中查找表

• 操作步骤如下:• 文件 --打开,打开项目

•选中的数据库是 :教工

•选择修改,显示数据库设计器 -教工窗口

•选择“数据库”菜单,选“查找对象”命令

• 在查找对话框中,选择要查找的表或视图

Page 86: 第 4 章  表与数据库的基本操作

字段与记录属性的常用概念

1.触发器– 在数据库表进行一个插入、更新、删除操作之后,运行的记录事件级代码

– 不同的事件激发不同的动作– 触发器在有效规则之后运行– 常用于检查已建立永久关系的数据库表之间的数据完整性– 触发器只存在于数据库表中– 自由表中不存在触发器– 触发器是数据库的一部分– 受数据库的管理

Page 87: 第 4 章  表与数据库的基本操作

2. 有效性规则– 检查输入数据是否满足某些条件的过程

3. 记录级规则– 一种与记录有关的有效性规则– 当插入或修改字段值时被激活– 多用于数据输入的正确性– 记录被删除时不用使用有效性规则– 记录级规则在字段级规则之后和触发器之前被激活

Page 88: 第 4 章  表与数据库的基本操作

4. 字段级规则

– 是一种与字段有关的有效性规则

– 当插入或修改字段值时被激活

– 多用于数据输入正确性检查

– 字段级规则在记录级规则和触发器之前被激活

Page 89: 第 4 章  表与数据库的基本操作

设置字段的显示属性

• 字段的显示属性 :

– 显示格式– 掩码– 标题

Page 90: 第 4 章  表与数据库的基本操作

1.设置字段的标题

• 定义数据库字段名称时,以英文缩写为多• 难以真正理解字段的含义• 标题属性,给字段添加一个说明性标题

操作步骤:– 项目管理器– 选定表– 修改,进入表设计器– 选定要添加标题的字段,如姓名– 单击“是”按钮,保存表结构

• 此时浏览表,姓名显示为职工姓名

Page 91: 第 4 章  表与数据库的基本操作

2.设置字段的显示格式

• 格式:– 确定一个字段在表单、浏览窗口或报表中的显示格

式– 输入所需的格式码– 格式实际上是字段的输出掩码

• 常用的格式码:A—— 表示只允许输出文字字符 ( 禁止数字、空格或标点符

号 );D—— 表示使用当前系统设置的日期格式;L—— 表示在数值前显示填充的前导零,而不是用空格字符;T—— 表示禁止输入字段的前导空格字符和结尾空格字符;!—— 表示把输入的小写字母字符转换为大写字母。

Page 92: 第 4 章  表与数据库的基本操作

3.设置字段的掩码• 输入掩码:

– 可以确定字段输入的格式– 屏蔽非法输入,减少人为的数据输入错误

• 常用的输入掩码:– X—— 表示可输入任何字符;– 9—— 表示可输入数字和正负符号;– #—— 表示可输入数字、空格和正负符号;– $—— 表示在固定位置上显示当前货币符号;– $$—— 表示显示当前货币符号;– *—— 表示在值的左侧显示星号;– .—— 表示用点分隔符指定数值的小数点位置;– ,——表示用逗号分隔小数点左边的整数部分,一般用来分隔千分位。

Page 93: 第 4 章  表与数据库的基本操作

例如• 年龄字段的输入掩码为 99

– 年龄字段只能接受数字输入,而不能输入空格字符、字母等

• 姓名的显示格式指定为 AT– 姓名两个字段只能接受字母或汉字输入,而不能输入空格

字符、数字

• 注:– 设置格式

• 一个作用是限制显示输出,– 输入掩码:

• 另一个作用是限制输入

Page 94: 第 4 章  表与数据库的基本操作

输入字段的注释

• 注释使字段意义更加明确•步骤:

– 表设计器– “字段注释”文本框中,输入描述信息

Page 95: 第 4 章  表与数据库的基本操作

“表达式生成器”窗口• 有 ...按钮,显示一个对话框• 表达式:

– 用运算符把内存变量、字段变量、常数和函数连接起来的式子

– 表达式用于计算和描述一个操作条件– 根据处理结果返回一个值

• 数值型• 字符型• 日期型• 逻辑型

Page 96: 第 4 章  表与数据库的基本操作

表达式生成器

– 方便快捷地生成表达式• 5 个部分:

• 表达式文本编辑框•函数列表框• 变量列表框• 表或视图下拉列表框•控制按钮

Page 97: 第 4 章  表与数据库的基本操作

1. 表达式文本编辑框• 用于编辑表达式• 从列表框选择出来的选项将显示在这里,• 直接在这里输入和编辑表达式• 可以输入各种各样的操作条件

– 字段级有效性规则– 记录级有效性规则– 参照完整性规则

Page 98: 第 4 章  表与数据库的基本操作

2.函数列表框– 可以选择表达式所需的函数

• 分为:– 字符函数– 数学函数– 逻辑函数– 日期函数

• 字符函数列表框:– 有用于处理字符和字符串的函数及字符运算符

Page 99: 第 4 章  表与数据库的基本操作

3. 变量列表框– 列出了当前表或视图的字段变量

• 变量列表框• 内存变量• 系统变量

– 从变量列表框中,可以选择表达式所需的变量

4. 表或视图下拉列表框– 可以选择当前打开的表或视图

Page 100: 第 4 章  表与数据库的基本操作

5.控制按钮

• 4 个命令按钮:– 确定

•完成表达式生成,并退出表达式生成器– 取消– 检验

• 单击“检验”按钮 , 可检验生成的表达式是否有效

– 选项• 单击选项,进入表达式生成器选项对话框

Page 101: 第 4 章  表与数据库的基本操作

字段有效性

• 为了防止这些非法数据的录入– 通过显示属性来控制

• 字段的显示格式• 输入掩码

– 只是码级的限制

– 通过字段验证方式来控制• 合法的字符组合在一起是否合法、是否符合逻辑就无法在此进一步

Page 102: 第 4 章  表与数据库的基本操作

字段验证

– 数据库表的字段属性之一– 字段通过了字段显示格式和输入掩码的限制,

输入了数据以后,还要通过字段验证才可以存储到字段中去

• 字段有效性有 3 个表达式文本框:– 规则– 信息– 默认值

Page 103: 第 4 章  表与数据库的基本操作

字段的默认值

– 新记录输入时所默认的字段值– 可以简化操作,提示输入格式,减少输入错误,提高输入速

• 步骤:• 表设计器中的“默认值”属性框中• 输入默认值

如:• 性别字段输入默认值“女”• 单击“正确”按钮

Page 104: 第 4 章  表与数据库的基本操作

2.设置字段有效性原则

• 一个规则判断输入的数据是否符合字段的要求• 在规则文本框中,可以输入字段验证的规则• 字段输入完成,系统计算表达式的值

– 如值为真,输入通过字段规则的验证– 否则不允许输入的值存储到字段中去

• 例如– 教工年龄数据必须大于 0

– 小于 0 ,输入的数据是无效的

Page 105: 第 4 章  表与数据库的基本操作

• 有效性规则:– 字段级有效规则

• 字段中单个信息输入的数据是否有效

– 记录级有效性规则• 整条记录输入完毕后才开始检查数据的有效性

Page 106: 第 4 章  表与数据库的基本操作

使用长表名与注释

• 步骤:• 表设计器中,可用长表名和表的注释• 在“表名”框中,输入长表名• 输入表的注释

Page 107: 第 4 章  表与数据库的基本操作

表名:– 可以由字母、数字、下划线或汉字组成– 第一个字符必须是字母、下划线或汉字– 默认的表名及 .DBF 文件名

长表名– 数据库表,可以建立一个长表名– 最多可以包含 128 个字符– 可以用来代替短表名来标识数据库表– 定义了长表名,表在界面中,显示长表名– 表的注释可以使表的功能易于理解

Page 108: 第 4 章  表与数据库的基本操作

使用长字段名、标题与注释

• 自由表的字段名最多可包含 10 个字符• 数据库字段名最多可以包含 128 个字符• 从库中移去表,其长字段名将被截断为 10 个字符

Page 109: 第 4 章  表与数据库的基本操作

字段的说明:– 使表更容易被理解更新– 项目管理器中,选择字段后,会显示该字

段的注释文本

– 数据库表中的每个字段可以有一个标题

Page 110: 第 4 章  表与数据库的基本操作

创建和编辑关系• 关系:

– 永久关系• 永久关系一旦创建就保存在数据库文件中• 在打开数据库时随即被打开• 在“数据库设计器”和数据环境中显示为表索引间的连

接线• 在永久关系的基础上 , 可设置表间的参照完整性规则,

用以保证数据库各表相关数据的一致性– 临时关系

• 在使用时临时创建的• 在“查询与视图设计器”中,是自动作为默认连接条件

的数据库表间关系• 关闭其中一个表时关系即被自动关闭

Page 111: 第 4 章  表与数据库的基本操作

临时关系(关联)

• 通过主表记录指针的移动来控制子表记录指针的移动

• 这是临时关系和永久关系不同的特征

• 在一对多关系表间,建立临时关系以后,在关系的“一”方表中 ,选择一条记录时,会按关系字段的值自动访问到“多”方表中的相关记录

Page 112: 第 4 章  表与数据库的基本操作

永久关系:– 通过连接不同表的索引可以很方便地建立表之间

的关系,被存储在数据库文件中,所以将这种关系称为永久关系

– VFP 6.0 就自动将永久关系作为查询、视图、表单和报表的默认关系

– 利用永久关系还可以存储参照完整性信息

Page 113: 第 4 章  表与数据库的基本操作

建立永久关系主关键字字段与外部关键字字段:

– 关联的表有一些公共字段• 主关键字字段

– 用于标识主表中的某一特定记录– 根据主关键字字段建立一个主索引

• 外部关键字字段– 用于标识相关表中的相关记录– 外部关键字字段建立一个普通索引

• 哪个表包含主记录,哪个表包含相关记录– 并且普通索引和主索引必须带有相同的表达式

Page 114: 第 4 章  表与数据库的基本操作

• 三种关系:• 一对一

– 表 A 中的一条记录 , 在表 B 只能有一条记录– B 的每一条记录也在表 A 中只能有一条记录与之对应

– 并不常使用• 一对多

– 最为普通– 表 A 中一条记录,表 B 中有多条记录对应– 表 B 中的一条记录,在表 A 中只有一条– 一方要建立主关键字或候选关键字– 多方要使用普通索引

• 多对多– 转化为“一对一”或“一对多”关系

Page 115: 第 4 章  表与数据库的基本操作

班级

班长

领导1

1

班级

学生

组成1

m

课程

学生

选修n

m

(a)1:1联系 (b)1:m联系 (c)n:m联系

Page 116: 第 4 章  表与数据库的基本操作

建立永久关系• 永久性关系并不控制表内记录指针间的关系• 步骤如下:

(1) 建立表的索引– 一方要建立主关键字或候选关键字– 多方要使用普通索引

(2)拖拽:– 在“库设计器”上,“一”方的主索引,拖拽到“多”表的与其对应的普通索引之上

Page 117: 第 4 章  表与数据库的基本操作

建立临时关系(关联) 使用菜单建立表之间的关联(1) 选择【窗口】菜单中的【数据工作期】选项。(2) 单击【打开】,在【打开】对话框中选择要打开的数据库。(3) 在【数据库中的表】列表框中,选择要打开的表,然后按【确定】按钮,则打开的表会出现在【数据工作期】窗口。重复以上步骤,可在不同工作区打开多个表。

(4) 在【数据工作期】窗口中选择要建立关系的父表,再按【关系】按钮,此时在【关系】框中将加入父表,且表名下面有一根折线,表示该表要与其他表建立关系。

(5) 选择要关联的子表,先打开【设置索引顺序】对话框,然后弹出【表达式生成器】窗口,单击字段列表框中的用来建立关联的某一字段。按【确定】按钮,关闭表达式生成器。

Page 118: 第 4 章  表与数据库的基本操作

参照完整性

• 表间彼此相关,改一表,可能使其关系发生变化– 删除主表中记录,相关表中的记录就找不到与之对应的父记录,就破坏了表之间的原有关系

– 参照完整性,利用相关表间的制约关系,互相参照,控制相关表数据的完整性

Page 119: 第 4 章  表与数据库的基本操作

• 参照完整性规则•更新规则• 删除规则•插入规则

• 控制在相关表中的插入、更改或删除记录

Page 120: 第 4 章  表与数据库的基本操作

例如

• 当主表中没有相关的记录时,记录不得追加到相关子表中

• 当主表中某条记录在相关子表中有相关记录时,这条主表记录不允许删除

• 当主表的关系字段值改变将导致相关子表中出现无关记录时,在主表中不允许做这种改变

Page 121: 第 4 章  表与数据库的基本操作

步骤如下:• 在“库设计器”中,双击关系线,打开编辑

关系对话框

• 单击参照完整性按钮,打开生成器

• 单击要实施参照完整性的关系行

• 单击“更新”右边的箭头

•选择“级联”、“限制”或“忽略”

• 单击“确定”按钮

Page 122: 第 4 章  表与数据库的基本操作

•级联:– 更新主表关系字段时,同时自动更新子表中的相

关记录的关系字段值

• 限制:– 子表中有相关记录时,禁止更新主表相应记录的

关系字段值

•忽略:– 表示忽略主子表间的关系,不限制主表关系字段

的更新