NULL 是必需的吗?

Is NULL necessary?

在 SQL 服务器中添加列是否需要 NULL 或 NOT NULL? (如果你要在 运行 之后更新语句)

我在没有它的情况下在本地进行了测试,它似乎在 SQL 和网站上都运行良好;但我想在 运行ning release/production.

之前确定

我查阅了一些其他文章,包括微软网站。有些显示有,有些没有。 SO 文章说了 NULL 的一些好处,比如如果您有可能稍后添加的信息。但是假设我要 运行 更新以在之后添加值,这有关系吗?

根据我测试和阅读的内容,我猜这无关紧要。

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

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

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

如果您想添加一个列并且数据库引擎应该保证您将始终填充这个新列,您可以添加一个具有默认值的 NOT NULL 列。
其他选项是在更新后将列更改为 NOT NULL。

我会确保你有一些声明性的东西。如果您设置为 "not null,",请确保您有默认值,否则如果数据以前存在,使用可能会丢失大量数据。这让我很紧张,因为这是 ALTER 与 CREATE。

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

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

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