一、使用命令方式设置数据库表及其字段的扩展属性举例:
1. open data sjk 或者 create data sjk 或者用set data to命令创建或设置当前库 2. create table jsqk NAME 教师基本情况表 (gh c(6),xm c(8),csrq d,;
gzrq d CHECK gzrq CHECK year(gzrq)-year(csrq)>=18 ERROR \参加工作的年龄为18岁以上!\ 3. (1) create table gzqk (gh c(6),xm c(8),xb c(2),zc c(10),jbgz n(8,1),; gwjt n(8,1),grsds n(8,1),yfgz n(8,1),sfgz n(8,1)) (2) append from E:\\vfptest\\gzb (3) i) alter table gzqk SET CHECK grsds=(jbgz+gwjt-800)*0.1 NOVALIDATE &&设置gzqk表的记录有效性规则 或 alter table gzqk SET CHECK grsds=(jbgz+gwjt)*0.1; ERROR \个人所得税应为基本工资加岗位津贴的10%\NOVALIDATE &&设置gzqk表的记录有效性规则及有效性信息 ii) alter table gzqk alter gh SET CHECK !empty(gh) and len(allt(gh))=5; ERROR \工号不能为空且有效宽度必须为5位。\ &&设置gzqk表中gh字段的有效性规则及有效性信息 iv) alter table gzqk alter jbgz SET DEFAULT 400 &&设置gzqk表中jbgz字段的默认值为400 4. (1) alter table gzqk alter zc DROP DEFAULT &&删除gzqk表中zc字段的默认值 (2) alter table gzqk alter gh DROP CHECK &&删除gzqk表中gh字段的字段的有效性规则及有效性信息 (3) alter table gzqk DROP CHECK &&删除gzqk表的记录有效性规则及有效性信息 5. (1) RENAME TABLE gzqk TO 教师收入基本情况表 &&对gzqk表进行改名操作 注:i) 上述改名操作实际是修改数据库表的长表名 ii) RENAME TABLE <旧名> TO <新名> 命令只用于数据库表的改名操作。 iii) 若要在VFP系统下对自由表进行改名操作,应使用RENAME <旧名> TO <新名> 命令(注:此命令还有移动文件的作用)。 iv) 长表名与表文件名的使用(见教材P101)。 v) 未设置长表名时,表文件名与长表名相同。在“项目管理器”窗口、“数据库设计器”窗口中显示的数据库表名实际为该表的长表名。 (2) alter table jsqk RENAME COLUMN JL TO JSJL &&对jsqk表中JL字段进行改名操作。 二、使用VFP系统函数设置或查看数据库表及其字段的扩展属性举例: 1. DBSETPROP函数 作用:设置数据库表及其字段的扩展属性。 用法举例: (1)= dbsetprop(\教师基本情况表.gh\field\CAPTION\工号\ &&设置jsqk表中gh字段的显示标题为“工号”。 (2)= dbsetprop(\教师基本情况表.gh\field\COMMENT\教师工号\ &&设置jsqk表中gh字段的注释为“教师工号”。 (3)= dbsetprop(\教师基本情况表.gh\field\FORMAT\!T\ &&设置jsqk表中gh字段的显示格式为“!T”。 (4)= dbsetprop(\field\INPUTMASK\99999999\ &&设置sjk数据库中xs表xh字段的输入掩码为“99999999”。 2. DBGETPROP函数 作用:查看数据库表及其字段的扩展属性。 用法举例: (1)? dbgetprop(\教师基本情况表\table\ruleexpression\ &&查看jsqk表的记录有效性规则。 (2)? dbgetprop(\教师基本情况表\table\ruletext\ &&查看jsqk表的记录有效性信息。 (3)? dbgetprop(\教师基本情况表.gzrq\field\ruleexpression\ &&查看jsqk表中gzrq字段的有效性规则。 (4)? dbgetprop(\教师基本情况表.gzrq\field\ruletext\ &&查看jsqk表中gzrq字段的有效性信息。 (5)? dbgetprop(\field\caption\ &&查看sjk数据库中xs表xh字段的显示标题。 (6)? dbgetprop(\field\comment\ &&查看sjk数据库中xs表xh字段的注释。 (7)? dbgetprop(\table\comment\ &&查看sjk数据库中xs表的表注释。 三、使用VFP系统命令或SQL命令建立数据库表/自由表的索引举例: 1.使用INDEX ON命令 (1)为js表建立结构复合索引 USE js INDEX ON gh+xm TAG ghxm &&建立普通索引 INDEX ON gh+xm TAG ghxm uniq &&建立唯一索引 INDEX ON gh+xm TAG ghxm cand &&建立候选索引 (2) 建立js表的非结构复合索引(文件) USE js INDEX ON gh+xm TAG ghxm cand OF jssy INDEX ON gh+xm TAG ghxm uniq OF jssy INDEX ON gh+xm TAG ghxm OF jssy &&jssy.cdx为非结构复合索引文件,表的非结构复合索引文件可以建多个且只 能用INDEX ON命令建立 (3) 建立js表的独立索引文件 USE js INDEX ON gh to jsgh INDEX ON xm+xb to jsxmxb &&jsgh.idx和jsxmxb.idx为独立索引文件,表的独立索引文件可以建多个且只 能用INDEX ON命令建立 注:(1) 从索引类型的角度讲,使用INDEX ON命令只能建立候选索引、唯一索引和普通索引。(不论是对数据库表还是自由表均如此) (2) 从索引文件类型的角度讲,使用INDEX ON命令可创建三种索引文件。 2.使用CREATE TABLE-SQL命令 open data sjk CREATE TABLE bmqk(bmdh c(5) prim key,bmmc c(10),dbrs i,fzr c(8),dhhm c(8); cand(或uniq) bmdh+str(dbrs) TAG bmdhdbrs) 注:(1) CREATE TABLE-SQL命令创建数据库表时,只能建立主索引和候选索引;在创建自由表时,只能建立候选索引。 (2) CREATE TABLE-SQL命令只能创建结构复合索引文件。 (3) 与INDEX ON命令不同的是,candidate和unique子句的作用均为建立候选索引。 3. 使用ALTER TABLE-SQL命令 (1) 建立主索引或候选索引 ALTER TABLE bmqk ADD PRIMARY KEY bmdh 或 ALTER TABLE bmqk ADD PRIMARY KEY bmdh+STR(dbrs) TAG bmrs ALTER TABLE bmqk ADD UNIQUE/CANDIDATE bmdh+bmmc TAG bmdhmc (2) 修改(或建立)单字段的主索引(候选索引) ALTER ABLE bmqk ALTER bmdh C(5) PRIMARY KEY 或 ALTER TABLE bmqk ALTER bmdh C(5) UNIQUE (3) 删除索引 ALTER TABLE bmqk DROP PRIMARY KEY &&删除主索引 ALTER TABLE bmqk DROP UNIQUE/CANDIDATE TAG bmdhdbrs 注:(1) ALTER TABLE-SQL命令创建数据库表时,只能建立主索引和候选索引;在创建自由表时,只能建立候选索引。 (2) ALTER TABLE-SQL命令只能创建结构复合索引文件。 (3) 与INDEX ON命令不同的是,candidate和unique子句的作用均为建立候选索引。 (4) 用ALTER TABLE-SQL命令重新建立数据库表的主索引时,应先删除原有的主索引。 (5) 若用ALTER子句修改某个字段的结构内容(包括建立或修改仅以该字段为索引关键字的索引时)均应加上该字段的数据类型及宽度。 (6) 删除索引时,虽然用的是UNIQUE/CANDIDATE子句,但也可以删除唯一索引和普通索引。