
vf数据库表讲义.doc
5页第三章 数据库和表一、数据库(.DBC)1.创建数据库: CREATE DATABASE 数据库名2.打开数据库:OPEN DATABASE数据库名3.打开数据库设计器:MODIFY DATABASE数据库名4.修改数据库:MODIFY DATABASE数据库名5.删除数据库:DELETE DATABASE数据库名6.关闭数据库:CLOSE DATABASE二、表(.DBF)(数据库表和自由表)数据库表:属于某个数据库的表称为数据库表数据库打开的状态下创建的表为数据库表自由表:不属于任何数据库的表称为自由表1.创建表:CREATE 表名◆字段名:数据库表最多128个字符,自由表最多10个字符以字母或汉字开头,不能有空格◆字段类型和宽度:字符型(C),数值型(N),货币型(Y),日期型(D,8个字节),日期时间型(T,8个字节),逻辑型(L,1个字节),浮点型(F),整型(I, 4个字节),备注型(M,4个字节,指向文件的指针,存放个人简历等文本),通用型(G,4个字节,存放电子表格等)u 空值:NULL 还没有确定值,允许字段为空值2.打开表:USE 表名3.打开表设计器:MODIFY STRUCTURE4.添加表:ADD TABLE表名5.移去表:REMOVE TABLE 表名6.删除表:DROP TABLE 表名7.关闭表:USE三、表结构的操作1.增加或删除字段:2.修改字段类型和宽度:3.如果只读状态,命令CLOSE ALL四、表内容的操作1.浏览记录:BROW LIST2.增加记录:APPEND(表尾追加) INSERT(插入)3.修改记录:REPLACE 字段名 WITH 表达式 FOR 条件 例如: USE 学生REPLACE 年龄 WITH 年龄+10 FOR 学号=”001” REPLACE 年龄 WITH 20 FOR 学号=”002” REPLACE 性别 WITH “女” FOR 姓名=”小王” REPLACE ALL年龄 WITH 年龄+10 USE 成绩 REPLACE 分数 WITH 分数+10 FOR 性别=”女” REPLACE ALL 分数 WITH 分数+10 4.删除记录: (1)逻辑删除:(置删除标记)DELETE FOR 条件 (如果不用FOR指定条件,则删除当前一条记录。
USE 学生DELETE FOR 年龄<20USE 成绩DELETE FOR 分数<60 (2)恢复逻辑删除:RECALL FOR 条件 (对逻辑删除的记录可以恢复)USE 学生RECALL FOR 年龄<20 (3)物理删除:PACK(在逻辑删除的基础上彻底删除,不可恢复)USE 学生DELETE FOR 学号=”001” PACK (4)清空记录:ZAP (清空表中全部记录,表结构仍然存在) USE 课程 ZAP5.显示记录:DISPLAY(显示当前一条记录) LIST (显示全部记录) DISPLAY ALL (显示所有记录) DISPLAY FOR 性别=”女” LIST FOR性别=”女”6.记录指针定位:(1)绝对指针定位:GO TOP GO BOTTOM GO 2(2)移动指针:SKIP (默认向下移动一条) SKIP 2 SKIP -1(3)条件定位:LOCATE FOR 将指针定位到满足条件的第一条记录上,如果没有满足条件的记录,则指向文件结束位置,即文件尾;继续查找使用CONTINUE命令。
例如: LOCATE FOR 性别=”男”DISPLAY CONTINUE索引(INDEX) 概念:索引是由指针构成的文件,按照索引关键字进行排序索引文件和表文件分别存储,并且不改变表中记录的物理顺序实际上,创建索引是创建一个指向表文件的指针构成的文件使用索引可以加速对表的查询操作1.索引的类型(1)主索引(PRIMARY KEY):主关键字a)保证记录的唯一性; b)不允许出现重复值和空值;c)一个表只能创建一个主索引;d)只有数据库表可以创建主索引2)候选索引(CANDIDATE)a))保证记录的唯一性; b)不允许出现重复值和空值;c)一个表可以创建多个候选索引;d)数据库表和自由表都可以创建候选索引3)普通索引(REGULAR)(4)惟一索引(UNIQUE)2.建立索引(1)表设计器创建(2)命令创建: USE 学生 INDEX ON 学号 TAG 学号 INDEX ON 学号 TAG 学号 CANDIDATE UNIQUE建立惟一索引,CANDIDATE建立候选索引,使用INDEX命令可以创建普通索引、惟一索引或候选索引,但没有主索引。
注意:索引按组织方式分为三类l 单索引.IDX ,是非结构索引;l 非默认名的.CDX索引,也是非结构索引;l 与表名同名的.CDX索引,是结构复合索引3)删除索引:DELETE TAG 学号 DELETE TAG ALL数据完整性(数据库表)1. 实体完整性:用主索引或候选索引来保证记录的唯一性,称为实体完整性2. 域完整性:通过定义字段数据类型、字段宽度和字段有效性规则等实现数据的域完整性例如:性别规则:性别=”男” OR 性别=”女” (性别$”男女”)信息:”性别必须是男或女”默认值:”男”例如:成绩规则:成绩>=60 AND 成绩<=100信息:”成绩在60-100之间”默认值:80注意:规则是逻辑表达式,信息是字符表达式,默认值与字段类型一致3. 参照完整性:父表和子表之间的相互制约规则称为参照完整性更新规则:当更新父表中的主关键字值时,子表中的相关记录如何变化级联:用新的关键字自动修改子表中的所有相关记录; (两表同时更新)限制:若子表中有相关记录,则禁止修改父表中的关键字字段值;(两表同时禁止)忽略:不作参照完整性检查,可以随意更新父表关键字字段值。
(父表更新,子表不变化)删除规则:当删除父表的记录时,子表中的相关记录如何变化 级联:自动删除子表中的所有记录; (两表同时删除)限制:若子表中有相关记录,则禁止删除父表中的记录; (两表同时禁止)忽略:不作参照完整性检查,即删除父表的记录时与子表无关; (父表删除,子表不变化)插入规则:在子表中插入记录时,是否进行参照完整性检查限制:若父表中没有相匹配的连接字段值,则禁止插入子记录忽略:不作参照完整性检查,即可以随意插入记录工作区:最小工作区号是1,最大32767,0是未使用的工作区 在每个工作区可以打开一个表,即在一个工作区中不能同时打开多个表指定工作区:SELECT 1 SELECT 学生历年最新考题【2011年3月考题】(1)在建立数据库表时给该表指定了主索引,该索引实现了数据完整性中的( ) A)参照完整性 B)实体完整性 C)域完整性 D)用户定义完整性【2011年3月考题】(2)在数据库表中,要求指定字段或表达式不出现重复值,应该建立的索引是( ) A)惟一索引 B)惟一索引和候选索引 C)惟一索引和主索引 D)主索引和候选索引【2011年3月考题】(3)从student表删除年龄大于30的记录的正确SQL命令是( )A)DELETE FOR年龄>30 B)DELETE FROM student WHERE年龄>30C)DELETE student FOR年龄>30 D)DELETE student WHERE年龄>30【2011年3月考题】(4)在Visual FoxPro中,使用LOCATL FOR
