当前位置:文档之家› VFP命令系列教程---ALTER TABLE – SQL 命令

VFP命令系列教程---ALTER TABLE – SQL 命令

VFP命令系列教程---ALTER TABLE – SQL 命令以编程方式修改表的结构。

ALTER TABLE TableName1 ADD | ALTER [COLUMN] FieldName1FieldType [( nFieldWidth [, nPrecision])] [NULL | NOT NULL] [CHECK lExpression1 [ERROR cMessageText1]][AUTOINC [NEXTVALUE NextValue [STEP StepValue]]] [DEFAULT eExpression1][primary key | UNIQUE [COLLATE cCollateSequence]][REFERENCES TableName2 [TAG TagName1]] [NOCPTRANS] [NOVALIDATE]或者ALTER TABLE TableName1 ALTER [COLUMN] FieldName2 [NULL | NOT NULL] [SET DEFAULT eExpression2][SET CHECK lExpression2[ERROR cMessageText2]] [ DROP DEFAULT ] [ DROP CHECK ] [ NOVALIDATE ]或者ALTER TABLE TableName1 [DROP [COLUMN] FieldName3][SET CHECK lExpression3 [ERROR cMessageText3]] [DROP CHECK][ADD primary key eExpression3 [FOR lExpression4] TAG TagName2[, COLLATE cCollateSequence]] [DROP primary key][ADD UNIQUE eExpression4 [[FOR lExpression5] TAG TagName3 [ COLLATE cCollateSequence]]] [DROP UNIQUE TAG TagName4][ADD foreign key [eExpression5] [FOR lExpression6] TAG TagName4[ COLLATE cCollateSequence] REFERENCES TableName2 [TAG TagName5]] [DROP foreign key TAG TagName6 [SAVE]] [RENAME COLUMN FieldName4 TO FieldName5] [NOVALIDATE]参数ALTER TABLE TableName1指定要修改其结构的表名。

ADD | ALTER [COLUMN] FieldName1指定要添加的字段名。

单个的表中最多可以有 255 个字段。

如果一个或更多的字段允许 null 值, 该限制为 254 个字段。

FieldType [(nFieldWidth [, nPrecision])]指定新字段或待修改字段的字段类型、字段宽度和字段精度(小数点后的位数)。

参数 FieldType 是表示字段数据类型的单个字符。

有些字段类型还需要参数 nFiledWidth 或 nPrecision,或者两者皆要。

下表列出了参数FiledType 的值及其对应参数 nFiledWidth 和 nPression 的取舍情况: 字段宽度精度说明字段类型C n –宽度为 n 的字符字段D ––日期T ––日期时间N n d 宽度为 n 的数值型字段,小数点后保留d 位F n d 宽度为 n 的浮点型字段,小数点后保留d 位I ––整数型B – d 双精度型Y ––货币型L ––逻辑型M ––备注型G ––通用型P ––图象对于 D、T、I、Y、L、M、G 和 P 型数据,省略参数 nFieldWidth 和nPrecision。

如果对 N、F 或 B 型数据没有给出参数 nPrecision 的值,其的默认值为零。

NULL | NOT NULL允许或不允许字段为空值。

NULL 允许 null 值, NOT NULL 不允许 null 值。

如果一个或更多的字段允许 null 值, 表中可以包含的字段从 255减少到 254。

CHECK lExpression1指定字段的有效性规则。

lExpression1 为逻辑表达式值,可以是用户定义的函数或存储过程。

注意:每添加一个空记录时,都将进行有效性检查。

ERROR cMessageText1指定字段有效性检查出现错误时显示的错误信息。

只有在“浏览”或“编辑”窗口中修改数据时,此信息才可能显示。

AUTOINC [NEXTVALUE NextValue [STEP StepValue]]启用字段的自动增量。

NextValue指定开始值并可以是范围在2,147,483,647 到 -2,147,483,647 的正的或负的整型值。

默认值是 1。

可以用表设计器中的字段标签中的 Next Value 微调来设置NextValue。

StepValue 指定字段的增量值并可以是范围在 1 到 255 之间的正的,非零的整型值。

默认值是 1。

可以用表设计器中的字段标签中的 Step 微调来设置StepValue。

Autoincrementing 值不能是NULL。

DEFAULT eExpression1指定字段默认值。

eExpression1 的数据类型必须与字段的数据类型相同。

如果用AUTOINC子句来打开了一个字段的 autoincrementing 就不能指定默认值。

如果同时指定 AUTOINC 和 DEFAULT 子句 Visual FoxPro 会产生一个错误信息。

primary key | UNIQUEprimary key创建主索引标识。

索引标识与字段同名。

UNIQUE创建与字段同名的候选索引标识。

有关候选索引的详细内容,请参阅设置主索引或候选索引。

COLLATE cCollateSequence指定一个非默认设置 MACHINE 的比较序列。

cCollateSequence参数必须是一个可用的 Visual FoxPro 比较序列。

关于设置比较序列的详细信息, 参见优化国际化应用程序和set collate 命令。

REFERENCES TableName2 [TAG TagName1]指定与之建立永久关系的父表。

参数 TAG TagName1 指定父表索引标识,关系建立在此父表索引标识基础上。

索引标识最长为 10 个字。

如果省略TAG 子句, 关系用父表的主索引关键字建立。

如果父表没有主索引, Visual FoxPro 产生一条错误。

NOCPTRANS防止对字符串或备注字段进行代码页转换。

如果表转换到另一代码页,指定了 NOCPTRANS 的字段不进行转换。

NOCPTRANS 只能指定字符字段和备注字段。

这会创建表设计器中的 Character (binary) 和 Memo (binary) 数据类型。

NOVALIDATE选用这一选项后,Visual FoxPro 修改表的结构不受表中数据完整性的约束。

默认时,Visual FoxPro 改变表结构将受到表中数据的完整性约束。

使用 NOVALIDATE 参数将使默认情况无效。

ALTER [COLUMN] FieldName2指定要修改的已有的字段名。

你需要在单个的ALTER TABLE命令中包括多个ALTER COLUMN子句来修改字段的一个以上的属性。

关于ALTERCOLUMN子句的结构的详细信息, 参见本主题中的示例。

Set Default eExpression2指定已有字段的新默认值。

eExpression2 的数据类型必须与字段数据类型相同。

如果用AUTOINC子句来打开了一个字段的 autoincrementing 就不能指定默认值。

如果同时指定AUTOINC和SET DEFAULT子句 Visual FoxPro 会产生一个错误信息。

SET CHECK lExpression2指字已有字段新的有效性规则。

lExpression2 值必须为逻辑表达式,也可以为用户自定义函数或储存过程。

ERROR cMessageText2指定有效性检查出现错误时显示的错误信息。

只有在“浏览”窗口或“编辑”窗口改变数据时,才可能显示此信息。

DROP DEFAULT删除已有字段的默认值。

DROP CHECK删除已有字段的有效性规则。

DROP [COLUMN] FieldName3从表中删除一个字段。

删除一个字段的同时也删除了字段的默认值和字段有效性规则。

字段被删除后,索引关键字或引用此字段的触发器表达式将变为无效。

在这种情况下,删除字段并不产生错误,但是在运行时刻,无效的索引关键字或触发器表达式将导致错误。

SET CHECK lExpression3指定表的有效性规则。

lExpression3 必须是逻辑表达式,也可以是用户自定义函数或储存过程。

ERROR cMessageText3指定表的有效性检查出现错误时显示的错误信息。

只有在“浏览”窗口或“编辑”窗口中改变数据值时,才可能显示此信息。

DROP CHECK删除表的有效性规则。

ADD primary key eExpression3 [FOR lExpression4] TAG TagName2往表中添加主索引,eExpression 指定主索引关键字表达式。

可以用lExpression4来指定一个仅符合条件的记录可以显示和访问的筛选表达式。

主索引关键字是为匹配筛选条件的记录而在索引文件中创建的。

你应该避免使用FOR子句来创建主索引; 唯一性主键只强制匹配FOR子句中指定的条件的记录。

作为代替, 使用带FOR子句的INDEX命令来创建筛选索引。

如果lExpression4表达式可以优化, Rushmore 查询优化何以优化ALTER TABLE ... FOR lExpression4命令。

为了更好的性能, 在FOR子句中使用可优化表达式。

详细信息, 参见SET OPTIMIZE和用 Rushmore 查询优化数据访问速度。

TagName2参数指定主索引标识的名字。

索引标识名可以包含多至 10 个字符。

如果省略TAG TagName2, 而且eExpression3是一个单一的字段, 主索引标识具有与eExpression3中指定的字段相同的名字。

DROP primary key删除主索引及其标识。

因为表只能有一个主关键字,所以不必指定关键字的名称。

删除主索引也将删除所有基于此关键字的永久关系。

相关主题