如何将具有默认值的列添加到SQL Server 2000/SQL Server 2005中的现有表中?
当前回答
SQL Server+更改表+添加列+默认值uniqueidentifier。。。
ALTER TABLE [TABLENAME] ADD MyNewColumn INT not null default 0 GO
其他回答
语法:
ALTER TABLE {TABLENAME}
ADD {COLUMNNAME} {TYPE} {NULL|NOT NULL}
CONSTRAINT {CONSTRAINT_NAME} DEFAULT {DEFAULT_VALUE}
WITH VALUES
例子:
ALTER TABLE SomeTable
ADD SomeCol Bit NULL --Or NOT NULL.
CONSTRAINT D_SomeTable_SomeCol --When Omitted a Default-Constraint Name is autogenerated.
DEFAULT (0)--Optional Default-Constraint.
WITH VALUES --Add if Column is Nullable and you want the Default Value for Existing Records.
笔记:
可选约束名称:如果忽略CONSTRAINT D_SomeTable_SomeCol,则SQL Server将自动生成具有有趣名称的默认对照,如:DF__SomeTa__SomeC_4FB7FEF6
可选值声明:只有当列为空时,才需要WITH VALUES并且您希望将默认值用于现有记录。如果您的列不是NULL,那么它将自动使用默认值对于所有现有记录,无论是否指定WITH VALUES。
插入件如何使用默认约束:如果在SomeTable中插入一条记录,但未指定SomeCol的值,则它将默认为0。如果插入Record并将SomeCol的值指定为NULL(并且您的列允许为空),则将不使用默认约束,并且将插入NULL作为值。
笔记基于下面每个人的反馈。特别感谢:@Yatrix、@WalterStabosz、@YahooSerious和@StackMan的评论。
--Adding Value with Default Value
ALTER TABLE TestTable
ADD ThirdCol INT NOT NULL DEFAULT(0)
GO
如果要添加多个列,可以通过以下方式进行:
ALTER TABLE YourTable
ADD Column1 INT NOT NULL DEFAULT 0,
Column2 INT NOT NULL DEFAULT 1,
Column3 VARCHAR(50) DEFAULT 'Hello'
GO
ALTER TABLE MYTABLE ADD MYNEWCOLUMN VARCHAR(200) DEFAULT 'SNUGGLES'
这可以通过以下代码完成。
CREATE TABLE TestTable
(FirstCol INT NOT NULL)
GO
------------------------------
-- Option 1
------------------------------
-- Adding New Column
ALTER TABLE TestTable
ADD SecondCol INT
GO
-- Updating it with Default
UPDATE TestTable
SET SecondCol = 0
GO
-- Alter
ALTER TABLE TestTable
ALTER COLUMN SecondCol INT NOT NULL
GO
推荐文章
- 在SQL server查询中将NULL替换为0
- 在SQL中修改表的模式名
- 如何得到累计和
- 如何在SQL Server 2005的一条语句中更新两个表?
- 如何创建临时表与SELECT * INTO tempTable从CTE查询
- 用于查找计数为>的记录的SQL查询
- “从Table1左连接Table2”和“从Table2右连接Table1”可以互换吗?
- 在SQL Server的选择语句中使用带TOP的变量,而不是动态的
- SQL变量保存整数列表
- 自然连接和内部连接的区别
- MySQL现在()+1天
- 在SQL中转换月号到月名函数
- 改变一个varchar列的最大长度?
- 如何在SQL中从DateTime格式获取时间?
- 外键约束:何时使用ON UPDATE和ON DELETE