‘壹’ 如何在SQL2005中用命令行增加字段,添加数据文件,不允许为空
比如要增加一个usercode
alter table news_user add column usercode
------------------------------------------------------------------------------------------------------------------
ALTER TABLE 表 {ADD ADD{COLUMN 字段类型 [ (字长)] [NOT NULL] [CONSTRAINT 索引 ] |
ALTER COLUMN 字段类型 [(字长)] |
CONSTRAINT 多重字段索引 } |
DROP DROP{COLUMN 字段 I CONSTRAINT 索引名 } }
ALTER TABLE 语句分为以下几个部分:
部分 说明
table 欲修改的表之名称。
field 欲在表内增加或删除的字段的名称。或表内欲被替换的字段名称。
type 字段的数据类型。
size 字段的字符长度 (文本及二进制字段)。
-------------------------------------------------------------------------------------------------------------------
附加数据文件,还是问问高手吧
‘贰’ 如何在VFP表中用命令添加一条字段
alter
table
<表名>
add
<字段名>
<字段类型>
例如
:
add
table
成绩表
add
数学成绩
c(8)
意思是在成绩表中加一个字段名叫
数学成绩
字段类型为字符型
宽度为8
‘叁’ oracle在某个表中增加字段的命令是什么
oracle在某个表中增加字段的命令是altertable,oracle在某个表中增加字段的操作步骤如下:
1、首先双击oracle可执行文件连接oracle数据库服务。
‘肆’ 怎么给mysql数据表添加字段
传统情况
我们先回顾一下,在没有 "立刻加列" 功能时,加列操作是怎么完成的。我们也借此来熟悉一下本期的图例:
扩展思考题:是否能设计其他的数据格式,取代instant标志位和"列数"字段,使得 加列/删列 操作都能 "立刻完成" ?(提示:考虑 加列- 删列- 再加列 的情况)
使用限制
在了解原理之后,我们来看看"立刻加列"的使用限制,就很容易能理解其中的前两项:
"立刻加列"的加列位置只能在表的最后,而不能加在其他列之间
在元数据中,只记录了 数据行 应有多少列,而没有记录 这些列 应出现的位置。所以无法实现指定列的位置
"立刻加列"不能添加主键列
加列 不能涉及聚簇索引的变更,否则就变成了 "重建" 操作,不是 "立刻" 完成了
"立刻加列"不支持压缩的表格式
按照 WL 的说法:"COMPRESSED is no need to supported"(没必要支持不怎么用的格式)
总结回顾
我们总结一下上面的讨论:
"立刻加列" 之所以高效的原因是:
在执行 "立刻加列" 时,不变更数据行的结构
读取 "旧" 数据时,"伪造"新增的列,使结果正确
写入 "新" 数据时,使用了新的数据格式(增加了instant 标志位和 "列数" 字段),以区分新旧数据
读取 "新" 数据时,可以如实读取数据
"立刻加列"的 "伪造" 手法,不能一直维持下去。当发生与 "立刻加列" 操作不兼容的 DDL时,表数据就会发生重建
回到之前遗留的两个问题:
"立刻加列" 是如何工作的 ?
我们已经解答了这个问题
所谓 "立刻加列" 是否完全不影响业务,是否是真正的 "立刻" 完成 ?
可以看到:就算是 "立刻加列",也需要变更 数据字典,那么 该上的锁还是逃不掉的。也就是说 这里的 "立刻" 指的是 "不变更数据行的结构",而并非指 "零成本地完成任务"
‘伍’ 请问要在当前数据库文件中增加字段,应使用什么命令呢谢谢
alter table 表名 add 新列列名 列数据类型 (添加列)
alter table 表名 drop 列名 (删除列)
alter table 表名 alter column 列名 新添加的数据类型 (修改列)
‘陆’ 要想对一个打开的数据库增加新字段,应当使用命令 ___________.
alter table tables
add 列明 类型
‘柒’ MySQL命令行中给表添加一个字段(字段名、是否为空、默认值)
先看一下最简单的例子,在test中,添加一个字段,字段名为birth,类型为date类型。
mysql>
alter
table
test
add
column
birth
date;
Query
OK,
0
rows
affected
(0.36
sec)
Records:
0
Duplicates:
0
Warnings:
0
查询一下数据,看看结果:
mysql>
select
*
from
test;
+------+--------+----------------------------------+------------+-------+
|
t_id
|
t_name
|
t_password
|
t_birth
|
birth
|
+------+--------+----------------------------------+------------+-------+
|
1
|
name1
|
|
NULL
|
NULL
|
|
2
|
name2
|
|
2013-01-01
|
NULL
|
+------+--------+----------------------------------+------------+-------+
2
rows
in
set
(0.00
sec)
从上面结果可以看出,插入的birth字段,默认值为空。我们再来试一下,添加一个birth1字段,设置它不允许为空。
mysql>
alter
table
test
add
column
birth1
date
not
null;
Query
OK,
0
rows
affected
(0.16
sec)
Records:
0
Duplicates:
0
Warnings:
0
居然执行成功了!?意外了!我原来以为,这个语句不会成功的,因为我没有给他指定一个默认值。我们来看看数据:
mysql>
select
*
from
test;
+------+--------+----------------------------------+------------+-------+------------+
|
t_id
|
t_name
|
t_password
|
t_birth
|
birth
|
birth1
|
+------+--------+----------------------------------+------------+-------+------------+
|
1
|
name1
|
|
NULL
|
NULL
|
0000-00-00
|
|
2
|
name2
|
|
2013-01-01
|
NULL
|
0000-00-00
|
+------+--------+----------------------------------+------------+-------+------------+
2
rows
in
set
(0.00
sec)
哦,明白了,系统自动将date类型的值,设置了一个默认值:0000-00-00。下面我来直接指定一个默认值看看:
mysql>
alter
table
test
add
column
birth2
date
default
'2013-1-1';
Query
OK,
0
rows
affected
(0.28
sec)
Records:
0
Duplicates:
0
Warnings:
0
mysql>
select
*
from
test;
+------+--------+----------------------------------+------------+-------+------------+------------+
|
t_id
|
t_name
|
t_password
|
t_birth
|
birth
|
birth1
|
birth2
|
+------+--------+----------------------------------+------------+-------+------------+------------+
|
1
|
name1
|
|
NULL
|
NULL
|
0000-00-00
|
2013-01-01
|
|
2
|
name2
|
|
2013-01-01
|
NULL
|
0000-00-00
|
2013-01-01
|
+------+--------+----------------------------------+------------+-------+------------+------------+
2
rows
in
set
(0.00
sec)
看到没,将增加的birth2字段,就有一个默认值了,而且这个默认值是我们手工指定的。
关于MySQL中给表添加一个字段,本文就介绍这么多,希望对大家有所帮助,谢谢!
‘捌’ mysql 怎么给一个表一次增加多个字段
一、添加字段的命令如下:alter table tableName add newColumn varchar(8) comment '新添加的字段'
(8)命令增加字段扩展阅读
增加字段注意事项:1、在增加字段的语句中需要注意的是,comment为注释,就像在java中//作用是一样的。
2、comment后需要加单引号将注释引起来。
3、创建新表的脚本中,可在字段定义脚本中添加comment属性来添加注释。
‘玖’ 数据库中,增加字段增加的是字段名还是在某字段名下增加字段
语法
alter
table
table
[
*
]
add
[
column
]
column
type
alter
table
table
[
*
]
alter
[
column
]
column
{
set
default
value
|
drop
default
}
alter
table
table
[
*
]
rename
[
column
]
column
to
newcolumn
alter
table
table
rename
to
newtablealter
table
table
add
table
constraint
definition
inputs
table
试图更改的现存表的名称.
column
现存或新的列名称.
type
新列的类型.
newcolumn
现存列的新名称.
newtable
表的新名称.
table
constraint
definition
表的新的约束定义.
输出
alter
从被更名的列或表返回的信息.
error
如果一个列或表不存在返回的信息.
描述
alter
table
变更一个现存表的定义.add
column
形式用与
create
table一样的语法向表中增加一个新列/字段。alter
column
形式允许你从列/字段中设置或者删除缺省(值)。注意缺省(值)只对新插入的行有效。rename
子句可以在不影响相关表中任何数据的情况下更改一个表或者列/字段的名称。因此,表或列/字段在此命令执行后仍将是相同尺寸和类型。add
table
constraint
definition
子句用与
create
table一样的语法向表中增加一个新的约束。
如果要改变表的属性,你必须是表的所有者.
注意
column
关键字是多余的,可以省略.
如果"*"跟在一个表名后面,表示该命令要对该表和所有继承级别低于该表的表进行操作;缺省时,该属性(更改)不会增加到任何子表或修改任何子表的相关名称。当增加或修改一个上级表(译注:继承级别高的表)的属性时总是应该这样的。否则,象下面这样的在继承级上进行的查询
select
newcolumn
from
superclass*
将不能工作,因为子表会比上级表少一个属性。
在目前的实现里,新列/字段的缺省(值)和约束子句会被忽略。你可以随后用
alter
table
的
set
default
形式设置缺省(值)。(你还不得不用
update
把已存在行更新为缺省值。)
在目前的实现里,只有
foreign
key
约束可以增加到表中.要创建或者删除一个唯一约束,可以创建一个唯一索引(参阅
create
index).要想增加
check
(检查)约束,你需要重建和重载该表,用的参数是
create
table
命令的其他参数.
要修改表的结构,你必须是表的所有人。不允许更改系统表结构的任何部分。postgresql
用户手册
里有关于继承的更多信息.
请参考
create
table
部分获取更多有效参数的描述.
用法
向表中增加一个
varchar
列:
alter
table
distributors
add
column
address
varchar(30);
对现存列改名:
alter
table
distributors
rename
column
address
to
city;
对现存表改名:
alter
table
distributors
rename
to
suppliers;
向表中增加一个外键约束:
alter
table
distributors
add
constraint
distfk
foreign
key
(address)
references
addresses(address)
match
full
‘拾’ 在vf中如何用命令添加新字段
alter table
往表 customer 中添加字段 fax, 并且允许字段有空值
alter table customer add column fax c(20) null
ALTER TABLE – SQL 命令
示例 请参阅
以编程方式修改表的结构。
语法
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
指定表的有效性检查出现错误时显示的错误信息。只有在“浏览”窗口或“编辑”窗口中改变数据值时,才可能显示此信息。
DROP CHECK
删除表的有效性规则。
ADD PRIMARY KEY eExpression3 TAG TagName2
往表中添加主索引,eExpression 指定主索引关键字表达式,TagName2 指定主索引标识名,索引标识名最长为 10 个字符。如果省略TAG TagName2 而 eExpression3 是一个字段,主关键索引标识与指定的 eExpression3 同名。
DROP PRIMARY KEY
删除主索引及其标识。因为表只能有一个主关键字,所以不必指定关键字的名称。删除主索引也将删除所有基于此关键字的永久关系。
ADD UNIQUE eExpression4 [TAG TagName3]
往表中添加候选索引。eExpression4 指定候选索引关键字表达式,TagName3 指定候选索引标识名。候选标识名最长可为 10 个字符。如果省略参数 TAG TagName3 并且 eExpression4 为单个字段,候选索引标识与 eExpression4 中的指定的字段同名。
DROP UNIQUE TAG TagName4
删除候选索引及其标识。因为表可能有多个候选关键字,所以必须指定候选索引标识名。
ADD FOREIGN KEY [eExpression5] TAG TagName4
往表中添加外部关键字(非主关字)索引。
eExpression5 指定外部索引关键字表达式,TagName4 指定外部索引标识名。索引标识名最长为 10 个字符。
REFERENCES TableName2 [TAG TagName5]
指定在其上创建了永久关系的父表。使用 TAG TagName5 指定一个已有的索引标识,基于此索引标识建立表与父表的一个关系。索引标识名最长可以为 10 个字符。如果省略参数 TAG TagName5,则使用父表的主索引标识建立关系。
DROP FOREIGN KEY TAG TagName6 [SAVE]
删除索引标识为 TagName6 的外部关键字。如果省略 SAVE 参数,将从结构索引中删除索引标识。如果加入 SAVE 参数,则不从结构索引中删除索引标识。
RENAME COLUMN FieldName4 TO FieldName5
允许改变表中字段的字段名。FieldName4 指定待更改的字段名,FieldName5 指定新的字段名。
注意
改变表的字段名时一定要小心--索引表达式、字段和表的有效性规则、命令、函数等等可能仍会引用原始字段名。
NOVALIDATE
选用这一选项后,Visual FoxPro 修改表的结构不受表中数据完整性的约束。默认时,Visual FoxPro 改变表结构将受到表中数据的完整性约束。使用 NOVALIDATE 参数将使默认情况无效。
说明
ALTER TABLE 命令可以用于修改还没有添加到数据库中的表的结构。然而在修改自由表时,如果加入 DEFAULT、FOREIGN KEY、PRIMARY REFERENCES 或 SET 子句,Visual FoxPro 将出现错误。
ALTER TABLE 命令可以通过建立新表头和往表头中添加记录来重建表。例如,改变字段类型或字段宽度。
表经过重建后,将对所有改变了类型或宽度的字段执行字段有效性规则。如果修改了表中所有字段的类型或宽度,将执行表的有效性规则。
如果对已含有记录的表修改其字段有效规则或表有效性规则,Visual FoxPro 将检查新的字段或表有效性规则是否与存在数据相符合,并在发现有不符之处时发出警告。
如果要修改的表在数据库中,ALTER TABLE-SQL 命令需要独占使用数据库。若要独占打开数据库,可使用包含 EXCLUSIVE 子句的 OPEN DATABASE 命令。