第3章数据库、表的创建和使用
- 格式:doc
- 大小:138.00 KB
- 文档页数:33
第三章表的创建和使用3.1 表结构1. 表的概念表(数据表):是指存放在磁盘文件中的一张二维表。
自由表:不属于任何数据库的表。
数据库表:包含在一个数据库中的表,只属于一个数据库。
表文件名:表名可以由字符、数字或下划线组成,但不可用A-J中的单个字母作文件名,系统自动给出的扩展名为.DBF。
备注文件名:当表中有备注型或通用型字段时,系统自动生成与所属数据表的表名相同、扩展名为:.FPT的文件名。
表结构:存储表记录的公共结构。
(就是指一张表的表头结构,即字段的属性)。
字段:表中的一列。
它规定了数据的特征。
记录:表中的一行。
它是多个字段的集合,同一张表的每个记录都有相同的字段。
关系型数据表的特点:(1)每一个字段不可再分解,也不能有名字相同的字段;(2)每一列中的数据都有相同的数据类型;(3)表中没有内容完全相同的行(记录)。
(4)表中任意两行或两列都可以任意交换。
2. 字段的基本属性字段的属性包括:字段名、数据类型、字段宽度、小数位数、空值支持◆字段名:即每个字段的名字,必须以字符开头,可由字符、数字、下划线组合而成,字母大、小写无区别,但其中不许有空格或其它字符。
自由表的字段名最多由10个字符组成,数据库表的字段名支持长名,最多可达128个字符。
如果从数据库中移去一个表,那么此表的长字段名将被截短成10 个字符。
VFP允许长字段名和长表名,但使用长名称对于跨平台的操作可能遇到难以预料的结果。
◆数据类型:指该字段的数据特征。
◆字段宽度:指该字段所能容纳数据的最大字节数。
◆小数位数:指数值型数据将保留几位小数。
此时的字段宽度= 整数位数+1+小数位数。
◆NULL 值(空值):用来指示记录中的一个字段有或没有数据的标识,NULL不是一种数据类型或一个值,NULL不等同于零或空格。
一个NULL 值不能认为比某个值(包括另一个NULL 值)大或小,相等或不同。
VFP 6.0表中字段的数据类型字段类型代号说明字段宽度使用示例字符型 C字母、汉字和数字型文本每个字符为1个字节,最多可有254 个字符学生的学号或姓名,"8199101" 或'李立'货币型Y 货币单位8 个字节工资,$1246.89日期型 D 包含有年、月和日8 个字节出生日期,的数据 {02/25/2000}日期时间型 T 包含有年、月、日、时、分、秒的数据 8 个字节 上班时间,{02/25/2000 9:15:15 AM}逻辑型 L“真”或“假”的布尔值 1 个字节课程是否为必修课,.T. 或 .F.数值型 N 整数或小数 在内存中占 8 个字节;在表中占 1 至20个字节 考试成绩, 83.5通用型 G OLE 对象 在表中占 4 个字节图片或声音备注型 M 不定长度的一段文字 在表中占 4 个字节学生简历3. 表结构的创建创建表结构其实就是设计字段的基本属性。
临时关系与永久关系的区别:临时关系是用来临时地控制相关表之间记录的访问;而永久关系主要是用来存储相关表之间的参照完整性。
附带地可以作为默认的临时关系或查询中默认的联接条件。
临时关系在表打开之后使用 SET RELATION 命令创建,随表的关闭而解除;永久关系永久地保存在数据库中而不必在每次使用表时重新创建。
临时关系可以在自由表之间、库表之间或自由表与库表之间建立;而永久关系只能建立在库表之间。
临时关系与永久关系的联系:无论建立临时关系还是永久关系,都必须明确建立关系的两个表之间确实在客观上存在着一种关系(一对多或一对一关系)。
永久关系在许多场合可以用来作为默认的临时关系。
3.10.2 建立表之间的临时关系建立临时关系要明确几个要素:主表、子表、子表的主控索引以及关系表达式。
临时关系:主表的记录——>子表的主控索引建立临时关系的方法: 1、在“数据工作期”窗口中建立 2、使用 SET RELATION 命令建立: SET RELATION TO 关系表达式 INTO 区号|别名
3.10.3 解除表之间的临时关系一. 在“数据工作期”窗口中解除二. 使用命令解除选择主表工作区,使用如下命令解除临时关系: SELECT XS SET RELATION TO 或者 SET RELATION OFF 三. 在关闭主表或子表时,临时关系也即自动解除。
VFP第三章表的创建和使⽤3.1表结构第三章表的创建和使⽤对于关系型数据库来说,数据均以⼆维表的形式被保存在表中。
在VFP中表分为两种类型:数据库表和⾃由表,数据库表是指从属于某个数据库的表(简称“库表”),⽽⾃由表是指不从属于任何数据库的表。
与⾃由表相⽐,数据库表具有⾃由表的所有特性外,还具有数据库管理的其他功能。
3.1 表结构表(Table)是指存储放在磁盘⽂件中的⼆维表,⼀张表保存为⼀个表⽂件(.DBF)。
表⽂件的⽂件名必须遵守Windows系统对⽂件名的约定,并且不可⽤A~J中的单个字母作⽂件名。
表中的列称为字段(Field)。
字段规定了数据的特征。
例如,学⽣表中学号、姓名、性别和系名就是字段。
每张表最多可以有255个字段。
表的⾏叫做记录(Record),每条记录表⽰⼀个实体。
记录是多个字段的集合。
同⼀张表的每⼀个记录都有相同的字段。
3.1.3 表结构的创建表创建后,系统以扩展名.dbf保存表⽂件。
如果表中有备注字段或通⽤字段,则⾃动地产⽣与表名相同但扩展名为.fpt的备注⽂件2. CREATE TABLE-SQLCREATE TABLE-SQL命令的⼀般格式是:CREATE TABLE 表⽂件名(字段名1 字段类型[(字段宽度[,⼩数位数])][NULL|NOT NULL][,字段名2 字段类型[(字段宽度[,⼩数位数])]]……)说明:本书中命令的表⽰约定如下:垂直分隔符“|”分隔的项,表⽰多项中只能选择⼀个。
斜体字是占位符,在实际使⽤中要⽤具体的信息代替。
⽅括号[ ]所括的表⽰是可选项,[ ]本⾝不是命令的⼀部分。
省略号“……”表⽰参数可以有任意多项。
CREATE TABLE-SQL其中字段类型必须要⽤字母表⽰。
例如,学⽣表结构的创建可以使⽤以下命令:CREATE TABLE XS2 (xh C(6) not null,xm C(8),xb C(2),zydh C(6),ximing C(18))则XS2表的结构与XS表⼀模⼀样。
第三章数据库与表的创建和使用数据库的概述数据库的组成数据库的基本组成数据库由一个以上相互关联的数据表组成,可以包含一个或多个表、视图、到远程数据源的连接和存储过程。
数据库表:一张数据库表只能属于一个数据库,数据库表与数据库之间通过双向链接实现的;前链(在数据库中),后链(在数据库表中)视图(view):一个保存在数据库中的、由引用一个或多个表、或其他视图的相关数据组成的虚拟表,可以是本地的、远程的或带参数的。
存储过程(stored procedure):是保存在数据库中的一个过程。
该过程能包含一个用户自定义函数中的任何命令和函数。
数据库文件: 扩展名为 .DBC创建数据库时系统数据库备注文件: 扩展名为 .DCT 自动生成3个文件数据库索引文件: 扩展名为 .DCX数据字典(自学)3.2数据库的创建、打开、关闭数据库文件: 扩展名为 .DBC 创建数据库时系统数据库备注文件: 扩展名为 .DCT 自动生成3个文件数据库索引文件: 扩展名为 .DCX 数据库的创建1. 菜单操作方式创建数据库(菜单,工具栏,项目管理器)2. 命令方式创建数据库Create database [数据库名|]数据库的打开、关闭(1)打开数据库:方法1:菜单操作:方法2:命令方式:open database 数据库名( 2 ) 关闭数据库:1)“项目管理器”选定数据库进行关闭2)从命令窗口中输入命令:close database && 关闭当前数据库,并同时关闭其表close database all && 关闭所有打开的数据库close all && 关闭所有被打开的数据库,项目管理器注意: 1) 关闭了数据库表不等于关闭了数据库,但关闭了数据库则其中的数据表被同时关闭;2) 用鼠标关闭了数据库设计器窗口并不能代表关闭数据库。
( 3 ) 删除数据库:1)资源管理器:2)命令方式:delete file 数据库名3)项目管理器:表的创建与使用表结构的概述表(数据表):是指存放在磁盘文件中的一张二维表。
自由表:不属于任何数据库的表。
数据库表:包含在一个数据库中的表,只属于一个数据库。
表文件名:表名可以由字符、数字或下划线组成,但不可用A-J中的单个字母做文件名,系统自动给出的扩展名为 .DBF。
备注文件名:当表中有备注型或通用型字段时,系统自动生成与所属数据表的表名相同、扩展名为:.FPT的文件名。
表结构:存储表记录的公共结构。
(就是指一张表的表头结构,即字段的属性)。
字段:表中的一列。
它规定了数据的特征。
记录:表中的一行。
它是多个字段的集合,同一张表的每个记录都有相同的字段。
1.关系型数据表的特点:(1)每一个字段不可再分解,也不能有名字相同的字段;(2)每一列中的数据都有相同的数据类型;(3)表中没有内容完全相同的行(记录)。
(4)表中任意两行或两列都可以任意交换。
2. 字段的基本属性:包括:字段名、数据类型、字段宽度、小数位数、是否支持空值字段名:即每个字段的名字,必须以字符开头,可由字符、数字、下划线组合而成,字母大、小写无区别,但其中不许有空格或其它字符。
自由表的字段名最多由10个字符组成,数据库表的字段名支持长名,最多可达128个字符。
如果从数据库中移去一个表,那么此表的长字段名将被截短成 10 个字符。
数据类型:指该字段的数据特征(C , Y, D, T, L, N, M, G)。
字段宽度:指该字段所能容纳数据的最大字节数。
小数位数:指数值型数据将保留几位小数。
此时的字段宽度 = 整数位数+1+小数位数。
NULL 值(空值):用来指示记录中的一个字段有或没有数据的标识,NULL不是一种数据类型或一个值,NULL不等同于零或空格。
一个 NULL 值不能认为比某个值(包括另一个 NULL 值)大或小,相等或不同。
VFP 表中字段的数据类型表结构的创建1. 创建表结构:其实就是设计字段的基本属性。
可以使用表设计器、SQL 命令来创建表结构。
(1)使用表设计器创建表结构步骤:从文件菜单中单击新建→在新建对话框中选择表并单击新文件→在创建对话框中给出文件名并确定所需的保存位置→在表设计器对话框中逐个输入所需字段(用↓或鼠标换行),全部字段输入完成后单击确定。
(2)使用 CREATE TABLE - SQL命令该命令的一般格式为:CREATE TABLE |dbf <表文件名>(字段名1 字段类型[(字段宽度[,小数位数])][,字段名2 字段类型[(字段宽度[,小数位数])]]……)例: TABLE xscj(xh c(8),xm c(6),xb c(2),;cj n(5,1),ksrq d)TABLE XS(GH C(6) NOT NULL,XM C(8) NULL,CSRQ D NULL)2. 表结构的修改(1)用表设计器修改A. 用项目设计器调出表结构设计器:B. 用命令调出表结构设计器:USE <表文件名>MODIFY STRUCTURE(2)使用 ALTER TABLE - SQL命令举例:字段属性与表属性1.字段的扩展属性1)字段的标题与注释:增强表的可读性举例:a)为ts表设置flh字段的标题为“分类号”;b) 为ts表设置flh字段的注释为“flh为图书的分类号”;2)字段的显示属性:用来指定输入和显示字段时的格式举例:a)为ts表设置flh字段的有关属性,使该字段中输入的字母均为大写字母;b)为表的gh字段设置输入掩码,使输入值为开头第一个为字母,其他为数字字符c)为xs表设置xh字段的有关属性,使在输入和显示xh时其前导空格自动删除;3)字段的默认值向表中添加新记录时,为字段所指定的最初的值称为该字段的默认值,在设置字段默认值时,默认值必须是一个与字段数据类型一致的表达式或一个值举例:a)为xs表设置xb字段的默认值为“男”;4)字段的有效性规则和有效性信息:仅对修改对应字段值是激活该规则举例:a)为ts表的cs字段设置字段的有效性规则和有效性说明信息,要求:其值必须大于0;b)为xs表的xb字段设置字段的有效性规则,要求性别为“男”或“女”c)为cj表的cj字段设置字段的有效性规则,要求cj大于等于0并且小于等于1005)字段的默认控件类:作用是指定用“表单向导”生成表单或从数据环境中将字段拖放到表单上时,与该字段相应的控件类。
举例:a)为ts表设置cs字段的有关属性,使该字段从表单的数据环境中拖放到表单上时,生成相应控件为微调框控件;2.数据库表的表属性:长表名,表注释,记录验证规则及信息,触发器等1)长表名与表注释举例:a)为ts表设置长表名为“tushubiao”;2)记录有效性规则和信息:在改变记录值时激活该规则举例:a) 为ts表添加一个数据类型,字段宽度与cs字段相同的字段,字段名为jccs,并设置其标题为“借出册数”,并设置ts表的记录级有效性规则及其说明信息,要求:jccs字段值不能大于cs字段值;b)为js表设置记录有效性规则,要求教师的csrq(出生日期)小于gzrq(工作日期)3)表的触发器:触发器是绑定在表上的逻辑表达式,当表中的任何记录被指定的操作命令(插入,更新,删除)修改时,在进行了其他所有检查之后被激活逻辑表达式的构造:1)将否定条件转化为肯定条件,构造符合肯定条件的表达式2)取特殊值进行试探并修改该逻辑表达式举例:a)为ts表设置更新触发器,要求:分类号(flh)字段的值为空格字符串时不可更新;b)为xs表设置删除触发器,要求:xh(学号)前两位在“00”到“05”之间的可以删除c)设置xs表的插入触发器,禁止插入表的打开与关闭1. 工作区(1)工作区:指用来标识一张打开的表的区域。
一个工作区在某一时刻只能打开一张表,但可以同时在多个工作区打开多张表,一张可以在多个工作区中多次被打开。
每个工作区都有一个编号(1~32767(前十个工作区号也可以用字母A~J表示)),在VFP系统启动后,系统默认当前工作区号为1。
(2)表的别名:在工作区中打开表时为该表所定义的名称。
可以自定义别名,否则系统默认就以表名作为别名。
自定义别名的格式:USE <表名> ALIAS <别名>(3)当前工作区:正在使用的工作区。
可以通过“数据工作期窗口”或用 SELECT命令把任何一个工作区设置为当前工作区。
a)设置/选择当前工作区:SELECT 命令格式:SELECT <工作区号>|<别名>Select n &&选择工作区号为n的工作区为当前工作区Select 0 &&选择没被使用的最小工作区号的工作区为当前工作区b)强行指定工作区(不一定是当前工作区):要操作非当前工作区中的表,可以把其工作区设置为当前工作区,或在命令中强行指定工作区。
命令格式:IN <工作区号>|<别名>Use js alias jiaoshi in 4Use js again in 5Use xs in 0插入知识点:别名的测试(4)几个常用的函数ALIAS([工作区号])函数:测试指定工作区中的表的别名,无参数时指当前工作区表的别名。
alias():返回当前工作区中表的别名。
alias(n):返回工作区号为n的工作区中表的别名。
SELECT([别名])函数:测试指定别名的表所在的工作区号,无参数时指当前工作区的区号。
Select(0)=select():返回当前工作区号。
Select(1):返回当前未被使用的最大工作区号。
Select(“表别名”)返回该表所在的工作区号。
2. 表的打开和关闭表的打开方式:1.文件菜单中的打开2.工具栏上的打开3.USE <表名> ALIAS <别名>4.USE <表名> IN <工作区号>5.USE <表名> AGAIN IN <工作区号>表的关闭方式:1.USE &&关闭当前工作区中的表2.USE IN <别名>|<工作区号> &&关闭指定工作区中的表3.CLOSE ALL && 关闭所有的数据库,表和索引,当前工作区设置为1 4.CLOSE DATABASE &&关闭打开的数据库,顺便关闭了其表5.CLOSE TABLES && 关闭所有打开的表6.退出VFP系统,则关闭所有的表3. 表的独占与共享使用独占使用:一张表只能被一个用户打开。
在默认状态以独占方式打开。
共享使用:一张表可以被多个用户同时打开。