更改列: 从null到not null

1362

我有一张表格,其中有几个可空的整数列。这是不理想的,因此我希望将所有的空值更新为0,然后将这些列设置为NOT NULL。除了将空值更改为0之外,必须保留数据。

我正在寻找将某个列(称之为ColumnA)修改为“not null”的具体SQL语法。假设数据已经更新,不包含空值。

使用 SQL Server 2000


19
还有一件事 - 你可能想要添加一个默认值,以便任何没有指定列的现有插入操作不会失败:ALTER TABLE FOO ADD CONSTRAINT FOO_Bar_Default DEFAULT 0 FOR Bar。 - Marc Gravell
5
也许你会感到惊讶,根据某些情况,在将列更改为NOT NULL时会产生大量的日志记录。 - Martin Smith
14个回答

1
让我们举个例子:
TABLE NAME=EMPLOYEE

我想将列EMPLOYEE_NAME更改为NOT NULL。可以使用以下查询完成此任务:

ALTER TABLE EMPLOYEE MODIFY EMPLOYEE.EMPLOYEE_NAME datatype NOT NULL;

如何对多列执行此操作? 例如,同时使employee_name和employee_email不为空?语法是什么?下面的语法会出错 alter table employee alter column employee_name varchar(20) not null, alter column employee_email varchar(20) not null; - that_noob

1
您可以使用以下 SQL 更改现有数据库列的定义。
ALTER TABLE mytable modify mycolumn datatype NOT NULL;

我需要使用'alter column'('modify'不起作用) - undefined

0
  1. 首先确保你要更改的列没有空值 select count(*) from table where column's_name is null

  2. 填充缺失值。你可以用空字符串、0、平均值或中位数或插值来替换空值。这取决于你的回填策略或前向填充策略。

  3. 确定列值是否需要唯一或非唯一。如果需要唯一,则添加唯一约束。否则,查看性能是否足够或是否需要添加索引。


0

对于JDK中内置的javaDB(Apache Derby的Oracle支持版本),以下方法适用于我:

alter table [table name] alter column [column name] not null;

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接