ALTER TABLE – SQL 命令
示例 请参阅
以编程方式修改表的结构。
--如何用SQL语句更改表的列的数据类型和添加新列和约束
--增加一列
ALTER TABLE 表名 ADD 列名 VARCHAR(20) NULL
--删除一列
ALTER TABLE 表名 drop COLUMN 列名
--修改一列
alter TABLE 表名 ALTER COLUMN 列名 VARCHAR(40) NULL
--修改一列的类型
alter TABLE 表名 ALTER COLUMN 列名 VARCHAR(40)
--添加主键约束
alter table 表名
add constraint 约束名 primary key (列名)
--添加唯一约束
alter table 表名
add constraint 约束名 unique (列名)
--添加默认约束
alter table 表名
add constraint 约束名 default(内容) for 列名
--添加check约束
alter table 表名
add constraint 约束名 check(内容)
--添加外键约束
alter table 表名
add constraint 约束名 foreign key(列名) references 另一表名(列名)
--删除约束
alter table 表名
drop constraint 约束名
--纵向连接两个表
select *from stuInfo union
select *from stuMarks
--重命名,表名
exec sp_rename '原表名','改后表名'
--重命名,列名
exec sp_rename '表名.原列名','改后列名','column'
drop删除表=============================================================
alter table – sql 命令示例示例 1 往表 customer 中添加字段 fax, 并且允许字段有空值。示例 2 使 cust_id 字段为 customer 表的主关键字。示例 3 给 orders 表中的 quantity 字段添加有效性规则,使字段 quantity 的值非负。示例 4 基于表 customer 的关键字 cust_id和表 orders 中的候选关键字 cust_id,建立 customer 和 orders 间的一对多永久关系。示例 5 删除表 orders 的 quantity 字段的有效性规则。示例 6 删除表 customer 和表 orders 间的永久关系,但保持 orders 表中的 cust_id 索引标识。*示例 1set path to (home( ) + 'samples\data\') && 为表设置路径alter table customer add column fax c(20) null*示例 2alter table customer add primary key cust_id tag cust_idalter table customer alter column cust_i
d c(5) primary key*示例 3alter table orders;alter column quantity set check quantity >= 0;error "quantities must be non-negative"*示例 4alter table orders;add foreign key cust_id tag cust_id references customer*示例 5alter table orders alter column quantity drop check*示例 6alter table orders drop foreign key tag cust_id save
语法
ALTER TABLE TableName1
ADD | ALTER [COLUMN] FieldName1
FieldType [(nFieldWidth [, nPrecision])]
[NULL | NOT NULL]
[CHECK lExpression1 [ERROR cMessageText1]]
[DEFAULT eExpression1]
[PRIMARY KEY | UNIQUE]
[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 TAG TagName2 [FOR lExpression4]]
[DROP PRIMARY KEY]
[ADD UNIQUE eExpression4 [TAG TagName3 [FOR lExpression5]]]
[DROP UNIQUE TAG TagName4]
[ADD FOREIGN KEY [eExpression5] TAG TagName4 [FOR lExpression6]
REFERENCES TableName2 [TAG TagName5]]
[DROP FOREIGN KEY TAG TagName6 [SAVE]]
[RENAME COLUMN FieldName4 TO FieldName5]
[NOVALIDATE]
参数
TableName1
指定要修改其结构的表名。
ADD [COLUMN] FieldName1
指定要添加的字段名。单个的表中最多可以有 255 个字段。 如果一个或更多的字段允许 null 值, 该限制为 254 个字段。
ALTER [COLUMN] FieldName1
指定要修改的已有的字段名。
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 和 NOT NULL,当前的 SET NULL 设置将决定字段是否允许为空;并且如果命令中带有 PRIMARY KEY 或 UNIQUE 子句,当前的 SET NULL 设置不起作用,字段默认状况为非空。
CHECK lExpression1
指定字段的有效性规则。lExpression1 为逻辑表达式值,可以是用户定义的函数或存储过程。注意:每添加一个空记录时,都将进行有效性检查。如果有效性规则不允许添加的记录中有空字段值,VisualFoxPro 将产生错误信息。
ERROR cMessageText1
指定字段有效性检查出现错误时显示的错误信息。只有在“浏览”或“编辑”窗口中修改数据时,此信息才可能显示。
DEFAULT eExpression1
指定字段默认值。eExpression1 的数据类型必须与字段的数据类型相同。
PRIMARY KEY
创建主索引标识。索引标识与字段同名。
UNIQUE
创建与字段同名的候选索引标识。有关候选索引的详细内容,请参阅《开发指南》的第七章“处理表”。
附注
候选索引(由 UNIQUE 选项创建,具有在 ALTER TABLE 或 CREATE TABLE 中的 ANSI 兼容性。)与带 UNIQUE 选项的 INDEX 命令创建的索引不同。用带 UNIQUE 选项的 INDEX 命令创建的索引允许有重复索引关键字,而候选索引不允许有重复索引关键字。
在主索引或候选索引字段中,不允许有空值和重复记录。
如果用 ADD COLUMN 子句创建一个新字段,若给允许空值的字段创建主索引或候选索引,VisualFoxPro 不会产生错误。但是,如果您试图往用作主索引或候选索引的字段中输入空值或重复值,VisualFoxPro 将产生错误信息。
如果修改已有的字段和由字段组成的主索引表达式或候选表达式时,将检查字段是否为空值或重复记录。如果为空值或重复记录,Visual FoxPro 将产生错误,并且不对表进行修改。
REFERENCES TableName2 TAG TagName1
指定与之建立永久关系的父表。参数 TAG TagName1 指定父表索引标识,关系建立在此父表索引标识基础上。索引标识最长为 10 个字。
NOCPTRANS
防止对字符串或备注字段进行代码页转换。如果表转换到另一代码页,指定了 NOCPTRANS 的字段不进行转换。NOCPTRANS 只能指定字符字段和备注字段。
下面的例子建立了一个名字为 MYTABLE 的表:该表包括两个字符字段和两个备注字段。第二个字符字段 char2 和第二个备注字段 memo2 包含 NOCPTRANS 以防止转换。
CREATE TABLE mytable (char1 C(10), char2 C(10) NOCPTRANS,;
memo1 M, memo2 M NOCPTRANS)
ALTER [COLUMN] FieldName2
指定要修改的已有的字段名。
SET DEFAULT eExpression2
指定已有字段的新默认值。eExpression2 的数据类型必须与字段数据类型相同。
SET CHECK lExpression2
指字已有字段新的有效性规则。lExpression2 值必须为逻辑表达式,也可以为用户自定义函数或已有的过程。
ERROR cMessageText2
指定有效性检查出现错误时显示的错误信息。只有在“浏览”窗口或“编辑”窗口改变数据时,才
可能显示此信息。
DROP DEFAULT
删除已有字段的默认值。
DROP CHECK
删除已有字段的有效性规则。
DROP [COLUMN] FieldName3
从表中删除一个字段。删除一个字段的同时也删除了字段的默认值和字段有效性规则。
字段被删除后,索引关键字或引用此字段的触发器表达式将变为无效。在这种情况下,删除字段并不产生错误,但是在运行时刻,无效的索引关键字或触发器表达式将导致错误。
SET CHECK lExpression3
指定表的有效性规则。lExpression3 必须是逻辑表达式,也可以是用户自定义函数或已有的
过程。
ERROR cMessageText3
指定表的有效性检查出现错误时显示的错误信息。只有在“浏览”窗口或“编辑”窗口中改变数据值时,才可能显示此信息。
版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系QQ:729038198,我们将在24小时内删除。
发表评论