2015-08-13 33 views
3

我在MySQL中有一个表,我想改变一个表,以允许列为空。如何在不指定数据类型的情况下修改MySQL列以允许NULL?

当我形容我的MySQL表,我看到了MySQL工作台这些东西:

Field  Type  Null  Key  Default  Extra 

我想设置Null字段YES特定列。这是我如何尝试哪些工作正常,但我需要提供其数据类型,而将DEFAULT设置为NULL?

ALTER TABLE abc.xyz CHANGE hello hello int(10) unsigned DEFAULT NULL; 
ALTER TABLE abc.xyz CHANGE world world int(10) unsigned DEFAULT NULL; 

是否存在被我可以随便挑列名和默认设置为NULL,而不是使用其数据类型以及任何其他方式?我不想提供int(10),而将其默认设置为NULL。

+0

最好把NULL/NOT NULL看作字段数据类型的一部分(它会影响存储)。如果您使用的是Workbench,那么为什么不使用它内置的功能来改变表格呢? – Uueerdo

+0

No.数据类型需要定义为表定义的一部分;或者它必须从现有的数据集或表继承。您想设置NULL默认值的问题,但定义的int值可能因表到字段而异? (记住NULL是默认值,所以为什么设置它?) – xQbert

+0

[可能的重复](http://stackoverflow.com/questions/212939/how-do-i-modify-a-mysql-column-to-allow -空值) – ODelibalta

回答

3

你有点错了。将默认值更改为NULL不会“允许”该列为空:您需要执行的操作是在该列上删除“NOT NULL”约束。

但是要通过脚本重新定义列的可空性,您将不得不继续引用数据类型。你必须输入类似

ALTER TABLE MyTable MODIFY COLUMN this_column Int NULL; 
1

不知道这是否适用,如果你正在寻找一个直DDL语句,但在MySQL Workbench中的表名,你可以单击鼠标右键,选择“ALTER TABLE。 ..“,它将拉起一个表格定义GUI。从那里,你可以选择null/not null(在所有其他选项中)而不显式列出列的数据类型。只是一个“为了什么是值得的”......

相关问题