NULL || NOT NULL
对我来说,当您考虑以下问题时,问题(以及 , 和默认值之间的关系)变得更加清晰:
NOT NULL
⇒要求:必须有默认值,否则不允许插入没有指定值的记录(指定默认值,或选择“无”⇒未指定默认值;可能表明您在这两个选项之间的偏好:后者选项意味着在该字段中没有值的插入应该被拒绝并出现错误);然而:
NULL
⇒ NOT REQUIRED —NULL
表示没有为字段指定值,或者值未知。(如果一个字段是“可空的”,那么试图说您不想指定默认值将是无稽之谈;因为根据可空性,即使您不指定此字段,也将允许插入值!因此,该字段必须具有默认值:无论是默认NULL
值还是某个特定值。)
如果您使用的是 phpMyAdmin,您应该访问相关表的结构选项卡,找到相关列定义,然后选择“更改”。在“默认”下拉菜单中,您将看到“无”选项:选择该选项,然后按“保存”。记下由此生成的 SQL 命令,您将看到如下内容:
ALTER TABLE `…_tbl` CHANGE `…_fld` `…_fld` TEXT NOT NULL;
但是,如果我们尝试在用户界面中指定默认值应为“无”但应允许 NULL;那么默认值将改为“”(空字符串)或“0000-00-00 00:00:00”(在DATETIME
字段的情况下)等。所以这里的关键是列(字段)是否为NULL
ABLE或不!
这个“无”选项可能部分是 phpMyAdmin 用来表示底层数据库中实际发生的事情的抽象的产物(这是不同的)。
在将您的字段更改为NOT NULL
类型之前;首先检查现有值,并确保它们会以您批准的方式自动更改。
换句话说:NULL
/NOT NULL
和默认值;本质上是相互关联的:通过限制您可以指定的值组合来有效地表示这种关系的用户界面在人体工程学上是有缺陷的。phpMyAdmin 可能还有其他工具,可以在这方面进行改进。