我能否在不删除列的情况下将一个列从NOT NULL更改为NULL?

127

需要更改表以允许在列上使用null - 但无法删除该列...我能做到这点吗?尝试了以下内容:

ALTER TABLE myTable MODIFY myColumn NULL;

但是却毫无效果...

4个回答

246
ALTER TABLE myTable ALTER COLUMN myColumn {DataType} NULL

其中{DataType}是该列的当前数据类型(例如intvarchar(10)


62

当然可以。

ALTER TABLE myTable ALTER COLUMN myColumn int NULL

只需将 int 替换为您的列使用的任何数据类型。


1
实际上你的回答是正确的,但没有被接受为最佳答案。因为这个(ALTER TABLE myTable ALTER COLUMN myColumn {DataType} NULL)不起作用。 - yigitt
2
我尝试使用alter column,但在最新的mysql服务器上无法工作。我尝试使用modify column,它却奇怪地起作用了... - Kostas Andrianos
2
@UfukSURMEN,{DataType} 的意思是你应该放入你的数据类型而不是它。答案本质上是相同的,Mark 只是更详细地解释了自己(这应该让他获得被接受的答案,但这不是我的决定)。 - PrinceTyke
@PrinceTyke 没错。 - yigitt

1

语法非常基于数据库服务

SQL Server / MS Access:

ALTER TABLE table_name
ALTER COLUMN column_name datatype NULL;

MySQL / Oracle(10G 以前版本):

ALTER TABLE table_name
MODIFY COLUMN column_name datatype NULL;

Oracle 10G及以上版本:

ALTER TABLE table_name
MODIFY column_name datatype NULL;

如果您想设置默认值,则:

ALTER TABLE table_name
ALTER COLUMN column_name datatype DEFAULT default_value;

-1

针对MYSQL

ALTER TABLE myTable MODIFY myColumn {DataType} NULL

3
不知道为什么这个答案被评级降低了,MODIFY列名适用于MySQL,但不适用于ALTER列名。 - Venkat
4
@Venkat,我认为这是因为问题标记了sql-server标签。 - orangecaterpillar

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