是否需要NULL?

时间:2019-05-28 20:17:15

标签: sql-server null sql-update alter

在SQL Server中添加列是否需要NULL或NOT NULL? (如果您之后要运行UPDATE语句)

我在本地没有它的情况下进行了测试,它在SQL和网站上都可以正常工作;但我想确保在运行发行/生产之前。

我查找了其他一些文章,包括Microsoft网站。有些显示有,有些没有。 SO文章介绍了NULL的一些好处,例如如果您有稍后可能添加的信息。但是假设我将要运行UPDATE以在其后添加值,这有关系吗?

我想从我测试和阅读的内容中都可以。

ALTER TABLE [dbo].[MyTable] ADD NewColumn varchar(150);
UPDATE [dbo].[MyTable] SET NewColumn ='Math' WHERE ID = 1
UPDATE [dbo].[MyTable] SET NewColumn ='Science' WHERE ID = 2

3 个答案:

答案 0 :(得分:1)

您可以跳过它,默认情况下该列将创建为NULL。但是,如果您明确指出,则更为清晰。

请记住,如果表已经有数据,则不能将列添加为NOT NULL。为此,您应该首先将列添加为NULL,然后使用非空有效数据更新值,然后将列更改为NOT NULL。

编辑:假定添加列时sql server的默认行为。

答案 1 :(得分:0)

您不必编写它,当您跳过它时,列将被创建为'NULL'。
以下语句是相等的:

ALTER TABLE [dbo].[MyTable] ADD NewColumn varchar(150);
ALTER TABLE [dbo].[MyTable] ADD NewColumn varchar(150) NULL;

如果要添加列,并且数据库引擎应保证将始终填充此新列,则可以添加具有默认值的NOT NULL列。
另一种选择是在更新后将列更改为NOT NULL。

答案 2 :(得分:0)

我将确保您有声明性的内容。并且,如果您将其设置为“ not null”,请确保您具有默认值,或者如果以前存在数据,则使用该数据可能会丢失很多数据。这让我感到紧张,因为这是ALTER还是CREATE。

相关问题