VFP命令系列教程---ALTER TABLE – SQL 命令
以编程方式修改表的结构。
ALTER TABLE TableName1 ADD | ALTER [COLUMN] FieldName1
FieldType [( 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 [ERRORcMessageText3]] [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 | tabletable– | – | 图象 |
对于 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 | UNIQUE
primary key 创建主索引标识。索引标识与字段同名。UNIQUE 创建与字段同名的候选索引
标识。有关候选索引的详细内容,请参阅 设置主索引或候选索引。
COLLATE cCollateSequence
指定一个非默认设置 MACHINE 的比较序列。cCollateSequence 参数必须是一个可用的 Visual FoxPro 比较序列。关于设置比较序列的详细信息, 参见 优化国际化应用程序 和 set collate 命令。
REFERENCES TableName2 [TAG TagName1]
指定与之建立永久关系的父表。
参数 TAG TagName1 指定父表索引标识,关系建立在此父表索引标识基础上。索引标识最长为 10 个字。如果省略 TAG 子句, 关系用父表的主索引关键字建立。如果父表没有主索引, Visual FoxPro 产生一条错误。
NOCPTRANS
防止对字符串或备注字段进行代码页转换。如果表转换到另一代码页,指定了 NOCPTRAN
S 的字段不进行转换。NOCPTRANS 只能指定字符字段和备注字段。这会创建表设计器中的 Character (binary) 和 Memo (binary) 数据类型。
NOVALIDATE
选用这一选项后,Visual FoxPro 修改表的结构不受表中数据完整性的约束。默认时,Visual FoxPro 改变表结构将受到表中数据的完整性约束。使用 NOVALIDATE 参数将使默认情况无效。
ALTER [COLUMN] FieldName2
指定要修改的已有的字段名。你需要在单个的 ALTER TABLE 命令中包括多个 ALTER COLUMN 子句来修改字段的一个以上的属性。关于 ALTER COLUMN 子句的结构的详细信息, 参见本主题中的示例。
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 查询优化数据访问速度。
版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系QQ:729038198,我们将在24小时内删除。
发表评论